My Pardus Story

Many thanks to Yasin Aydın for translating this blog entry to English.

For me, everything started with a chain of coincidences..

First Meeting and Internship Application (January 2007 – April 2007)

At first I decided to go abroad for Erasmus Exchange Programme. After that, I forced my school to make an agreement with the school I want to go. In January 2007, I went to Grenoble city of France. I started my lessons and saw that everyone is using Linux, even in the classes and the laboratories. I got back home, installed Pardus 2007 to my laptop. For 6 months, I used Pardus 2007 for all everything except the times I needed Skype.

One night, when I was thinking in bed before the sleep, I thought “I wish I had a chance to have an internship in Pardus Project”. In a few days after that night, I learned that Pardus was looking for interns for the first time ever. I was excited, indeed. One one hand I wanted it so much, but on the other hand I was thinking that I won’t have a chance to be accepted because I didn’t have enough Linux experience at the moment. So far, my only experience was about reporting a few bugs, that’s all.

In the end, without losing any more time, I applied for the position with my CV and a cover letter (March 29, 2007):

Dear Pardus Team,

First, let me tell you about myself. I am a 3rd grade student in Galatasaray University, studying Computer Engineering. As a result of my Erasmus Exchange application I did last year, I am studying in Grenoble, France since January 2007. I will come back to Istanbul in June 2007, after this exchange program ends and I will have my internship period for 2 months.

Since I was born, I was always in a relationship with computers and I am happy with that and I still have the excitement I had first day. With this agitation, I decided to have my undergraduate degree on computers. I am interested in every subject about computers and electronics. But I have more interest in electronical design of the computer, processor organization, operating system design and signal processing areas. I agree that I cannot say I have incredible knowledge on these subjects but these are the topics I am having an extreme joy.

I have been using Linux since 2004. In the first year in the university, I started following the lectures given by GSULinux and by the end of the year I was accepted to the Staff group. This is the way I got into the UNIX world I was wondering about since my high-school years, in a laid-back but curious manner. I can say that I have gained a lot of hands-on experience with my attempts to install Gentoo operating system. Other than that, I am somewhat using C programming language since 2003 and I am proud of this.

Long story short, I want to pass my internship period in Pardus team, because for I would be so happy if I can be of any help for the operating system which is on my laptop for 2 months. I feel that this operating system which I am proud even when I am using will be a pride of my country in the future. I had my last year internship in the optoelectronics lab in TUBITAK/UEKAE, so I am familiar with around. Unfortunately, I don’t have any experience with Python at all. I only had a quick look last year but because I didn’t practice it since then, I don’t remember anything at all. I never developed a GUI using QT. I don’t think learning this will take a lot of time, and I am thinking about working and testing it if I can find some time. Below I am writing the projects I choosed amongst internship projects. Amongst all of them, without the concern of their difficulties and required knowledge levels, the ones which interest me are:

- Migration tool
- Proxy settings interface
- Package building tool
- Support for adding other Linux distros to the GRUB menu
- Graphical configuration interface

My CV is attached. The official length of my internship is 2 months (40 work days) and I can do it in any timeline between July and September 2007. Yours sincerely. Have a nice day.

A personal reply (Turkish screenshot) from Koray Löker arrived on 24 April 2007:

(The detailed Turkish blog entry by A.Murat Eren is also worth reading.)

Intership (July 2007 – August 2007)

After I started my internship the thing I realized is the presence of interns who know about Pardus and Linux more than me and who already met with the Pardus Team. I worked on developing a XMLRPC-based communication layer to the buildfarm. Most of the time we were working with Ekin Meroğlu and S.Çağlar Onur, I was going to their desks, asking some questions, taking notes for the answers, getting back to the internship office and trying to do some work.

The internship period was fast, I learned many things, I have visited the tomb of Anibal, met many precious people, had fun.. And, on September 11 2007, Çağlar asked me “Do you want to work with us part-time?”. It was also interesting that this offer was on my birthday. I accepted it.

Part-time Contribution (October 2007 – August 2008)

Between October 2007 and June 2008 I supported the project part-time. I was working in automatic printer discovery infrastructure in my spare times. We first added this feature in Pardus 2008 which helped users a lot. With me, Gökçen Eraslan started working full-time, while Fatih Aşıcı started part-time.

When my part-time work was overlapping with my last year in my university, I couldn’t have enough time for Pardus. When I came back to the office after completing my thesis and graduating in June 2008, I had a conversation with Erkan Tekman, about “I want to do something academic, I’m planning to study in a graduate programme, and because I was spending most of my time about my thesis, the relation between Pardus and me grown apart.”, but he convinced me to stay in the project and also told me that I can have my graduate studies within my 1-day academic permission. So in August 2008, I started working in the project full-time.

Full Time Contribution (August 2008 – January 2012)

I have become a full-time developer in August 2008. At the same time, I started my graduate studies in Boğaziçi University Biomedical Engineering. But because of some personal and timetable issues, I realized that studies and work won’t go together at the same time, I left the university.

Gürer Özen, İsmail Dönmez and S.Çağlar Onur, the people that I couldn’t find enough time to develop together when I was working as an intern and a part-timer, left the project. After Çağlar’s departure, I found myself maintaining the kernel package. When I took the responsibility of the kernel package and kernel drivers, Pardus 2008 was being actively developed and we were using 2.6.25 series kernel.

In November 2008, I upgraded the kernel to 2.6.25.20 and with the patches I borrowed from SUSE, I added UDF support to the kernel. That was my first update to the kernel package.

Afterwards, we published Pardus 2009 with 2.6.31 series. With the Pardus Corporate 2, we first used 2.6.32 series, then we upgraded to 2.6.35 series. In Pardus 2011, we used kernels 2.6.36 and 2.6.37.

Besides the kernel and driver maintenance, I started moving the packages that were waiting in the devel repository to the 2008-stable repository. I learned what a patch really is, I fixed build errors, I upgraded packages, etc. This period educated me so well about package maintenance.

After a while, I’ve taken the printer packages from Onur Küçük. Other than that, I’ve also taken the responsibility for some basic libraries, scanner support, sound stack, Bluetooth stack, HAL, udev, wired/wireless network framework, etc.. Now it seems that I am the maintainer of 425 different packages in 2011 stable repository.

Meanwhile, I also am looking to our bug tracking system and see that I had 586 tickets assigned to me which are closed as FIXED. Of course it is an estimated value, there may also be the ones which are labeled as FIXED by mistake, and are assigned to me but resolved by someone else. However this number gives an estimate about how much I participated in this project.

Pardus Corporate 2

On the 10th of december 2009, as announced in developers mailing list by Project Manager Erkan Tekman, I became temporary release manager for Pardus Corporate 2. This release which was actually started with the managership of Ekin, was temporarily transferred to me because of Ekin’s short-term departure from the project for his military service. When Ekin came back from his military service and assigned as contractual projects manager, the release was given over me for real.

We have worked a lot for the Pardus Corporate 2 which was using KDE desktop environment’s not-taken-cared-anymore but stable and fast 3.5 series. I cannot say that there were no delays on the release schedule but all these delays were because to improve the final product in a better way. We tried to reflect the factors that should exist in a corporate edition as our power and skills were enough. And in the end, we published Pardus Corporate 2 in February 2011.

The interest for the product inside TUBITAK was also a lot. To improve AKIS, which was a smart-card operating system developed by TUBITAK, we worked together with the AKIS team and provided a very comprehensive AKIS support in Pardus Corporate 2 and we have presented it.

Again we tried to complete the requests from projects like EPDK and SKAAS. We worked together with these teams and we supported each other.

So, what happened then?

As specified in the issue (Turkish) on 28th of August 2011 in the local newspaper Milliyet, a new nomination operation occured with a decree law (which regulates reconstruction in the community institutions) and TUBITAK president Nükhet Yetiş is removed from the position. A few days later, Önder Yetiş, the president of BİLGEM quit.

Of course, I will not talk about politics in this last article of mine. The readers of this article will interpret this reconstruction process which started on August 2011, with their own perceptions and interpretations.

But,

This period of reconstruction which has been continuing for the past 5 months was a giant avalanche, destroying TUBITAK. There are many researchers, managers, projects and units which are affected by this avalanche, and there are also ones which are not affected at all.

Pardus Project was never honored as expected, in FATİH Project (It is a huge educational project funded by the government which consists of putting interactive whiteboards in the classes, giving special educational tablets to the students, etc.) The cabinet ministers of the government used funny and ignorant sentences like “There is an operating system called Pardus which TUBITAK developed.”

When there was no hope at all for the inclusion of Pardus in FATİH Project, in October 2011 Pardus Project was migrated from UEKAE to BTE and renamed as “Pardus for Fatih”. And we said: perhaps?

After a few days, a highly ranked manager had an unprofessional speech as “Microsoft decreased the license prices by 5TL/computer and the minister of transportation already told me that the project will be given to Microsoft”, in front of the institute employees.

Another day, we also heard that people were very thankful to Pardus because it was fighting hard against Microsoft, in Fatih Project!

Consequently, I realized that renaming Pardus into “Pardus for Fatih” is nothing but a distraction.

We also have witnessed that researchers who we know, respect, doing their job good were being demoted and assigned to lower-level tasks. Media and outer world was and could be never aware of what’s going on inside.

Me?

In this reconstruction process, my faith for this period will work out good for Pardus was so low, and that little remaining faith was completely destroyed by some meetings I have attended and some new people I have met. So I decided to go on as much as I can and in the meantime, to take care of the remaining issues as I can. I published a stable update for Pardus Corporate 2, upgraded the kernel to 3.2 in my playground, fixed some of the reported bugs. Just in case for a new version plan, I prepared packages for new Linux technologies like systemd, dracut, kmod in my playground. At the same time I continued to take care of the projects and exams about my graduate education.

Reassignment

On 29th of December 2011, I learned that I was reassigned to Ankara for a month.

I was hired for Pardus Project in October 2007 and I was not a subcontracted worker who will work between institutions and projects. And also to think that the upper mananagement was aware of my finals and academic schedule, the goodwill of this reassignment was very questionable.

I said, this is it, and I resigned from this destroyed institution.

And now what?

Now 14 people are working in the project which 11 of them are developers. TUBITAK soon will organize a workshop about the future of Pardus Project. I, who never thought I would be even invited to this workshop, think that this workshop will be destructive more than constructive. I hope I will be wrong.

Is there another distribution project?

I am still using Pardus 2011 at home and believe that Pardus has many advantages against other distributions, is more user-friendly and PiSi package management is successful enough and practical. For this reason, I want to continue Pardus by myself or with other people’s helps, under a new name. I even have a copy of the some part of the Pardus 2011 source repository in a GIT repository I created on GitHub. I sometimes commit my changes I do but there is only a little bit of progression for now, not even close to be a product itself.

But wanting is not the only key to it. Even though I say I want it so much, my graduate study and a possible new work-life will considerably decrease my possible contribution to this new project. For this reason, I want to think more about this and talk about it afterwards.

Thanks

First, I would like to thank my awesome manager Erkan Tekman for everything he made an effort, defended and targeted,

And to my friends I could remember, who worked for Pardus Project under TUBITAK, in chronological order:

Gürer Özen, Barış Metin, A. Murat Eren, Barış Metin, Faik Uygur, Onur Küçük, Ekin Meroğlu, S. Çağlar Onur, İsmail Dönmez, Görkem Çetin, Umut Pulat, Koray Löker, Bahadır Kandemir, Gökmen Göksel, Gökçen Eraslan, Fatih Aşıcı, Pınar Yanardağ, Taner Taş, Serbülent Ünsal, Ali Ulvi Tunç, Işıl Poyraz, Semen Cirit, Renan Çakırerk, Serdar Dalgıç, İbrahim Güngör, Eren Türkay, Erdem Bayer, Akın Ömeroğlu, Mete Alpaslan, Fatih Arslan, Meltem Parmaksız, Metin Akdere, Mete Bilgin, Mehmet Emre Atasever, Yasemin Yiğit Kuru, Hakan Şimşek, Uğur Eke, Gökhan Özbulak, Nihan Katipoğlu, Beyza Ermiş, Çağlar Kilimci, Mehmet Özdemir, Bertan Gündoğdu, Kaan Özdinçer, Pamir Talazan,

and also, to the people who worked or are still working in TUBITAK for different projects; Seda Polat, Fehime Bıyıklıoğlu and Özmen Emre Demirkol,

to ÇOMÜ and Necdet Yücel for the 64-bit support,

to the people from Artistanbul team; Ali Işıngör, Seda Akay, Gizem Belen, İrem Çobanoğlu, Uğur Çetin and everyone else that I didn’t have the occasion the meet personally,

to the creators and managers of Özgürlükİçin,

to the all Pardus users and communities which always supported and helped us,

and finally, to Önder Yetiş and our old management, which now I could understand better that they always helped us to go further and supported us as they can.

Finally…

 ***

5 comments so far, add yours

Pardus Hikayesi

Benim için her şey büyük bir raslantı zinciriyle başladı aslında..

Tanışma ve Staj Başvurusu (Ocak 2007 – Nisan 2007)

Önce yurtdışında Erasmus yapmaya karar verdim. Sonra gitmek istediğim okul ile kendi okulum arasında zorla anlaşma yaptırdım. Ocak 2007′de Fransa’nın Grenoble şehri’ne gittim. Derslerime başladım ve gördüm ki gerek derslerde gerek laboratuvarlarda kısacası her yerde Linux kullanılıyor. Eve döndüm, dizüstü bilgisayarıma Pardus 2007 kurdum. 6 ay Skype ihtiyacım dışında sadece Pardus 2007 kullandım.

Bir gece yattığımda “Keşke Pardus Projesi’nde staj imkanı olsaydı..” dedim. Uyandıktan sonraki 1-2 gün içerisinde Pardus’un ilk defa stajyer alacağını öğrendim. Heyecanlandım tabii. Bir yandan çok istiyordum bir yandan da elle tutulur bir Linux tecrübem olmadığından kabul edilme olasılığımın düşük olduğunu düşünüyordum. 1-2 hata bildirmiştim o kadar.

Neyse vakit kaybetmeden bir CV ile niyet mektubu hazırlayarak başvurdum (29 Mart 2007):

Sevgili Pardus Ekibi,

Öncelikle biraz kendimden bahsedeyim. Galatasaray Üniversitesi, Bilgisayar Mühendisliği 3.Sınıf öğrencisiyim. Geçen sene yaptığım başvuru sonucu, Ocak 2007′den beri Fransa’nın Grenoble şehri’nde okumaktayım. Haziran 2007′ye kadar sürecek bu değişim programı sonunda İstanbul’a dönecek ve 2 ay boyunca zorunlu yaz stajımı gerçekleştireceğim.

Doğduğumdan beri bilgisayarla bir şekilde ilişki içerisindeyim ve bundan oldukça memnunum ve halen ilk gün sahip olduğum heyecana sahibim. Bu heyecanımı da arkama alarak lisans eğitimimi de bilgisayar üzerine yapmaya karar verdim. Bilgisayar ve elektronik dallarına ait her konu başlığına ilgiliyim. Ancak özellikle bilgisayarın elektroniksel olarak tasarımı, işlemci organizasyonu, işletim sistemi tasarımı ve sinyal işleme konularına ilgi duyuyorum. Tamam bu konular hakkında inanılmaz bir bilgi birikimine sahip olduğumu söyleyemem ancak uğraşırken en çok zevk aldığım konu başlıkları bunlar.

2004 yılından beri Linux ile uğraşıyorum. Üniversite’nin ilk senesinde, okulun köklü gruplarından GSULinux tarafından verilen dersleri takip ederek ilk sene sonunda Staff kadroya dahil edildim. Lise yıllarımda çekinerek ama merakla baktığım UNIX dünyasıyla
pratik olarak tanışmam bu yolla oldu. Özellikle Gentoo işletim sistemini kurma çabalarım süresince oldukça deneyim kazandığımı söyleyebilirim. Bunun dışında 2003 yılından beri C programlama diliyle bir şekilde iç içeyim ve bundan oldukça memnunum.

Lafın kısası, stajımı pardus ekibinde yapmak istiyorum çünkü 2 aydır laptopumda kullandığım işletim sisteminin iyileştirilmesinde en ufak bir faydam olursa bundan oldukça gurur duyacağım. Kullanırken bile gurur duyduğum bu işletim sisteminin ileride ülkem için mükemmel bir iftihar kaynağı olacağını seziyorum. Stajımı geçen sene de TÜBİTAK UEKAE bünyesindeki optoelektronik laboratuvarında yaptım ve ortamı tanıyorum. Ekipteki herkesten bilgi ve birikimime katkıda olacağına inandığım bir ton şey öğreneceğimi biliyorum. Python ile maalesef çok fazla uğraşmışlığım yok. Sadece geçen yaz vakit bulduğumda biraz bakmıştım ancak tabi ki pratik yapmadığım için çok fazla bir şey hatırlamıyorum. QT kullanarak grafiksel arayüz de geliştirmedim. Öğrenmemin çok fazla zaman alacağını düşünmüyorum, yaza kadar vakit bulursam çalışmayı, kurcalamayı düşünüyorum. Aşağıya staj projeleri listesinden seçtiklerimi yazıyorum. Bunlar aralarında, zorluğuna ve bilgi ihtiyacına bakmaksızın, en çok ilgimi çekenler:

- Göç aracı
– Proxy Ayar Arayüzü
– Paket Yapım Aracı
– Diğer Linux dağıtımlarının GRUB’a eklenmesi.
– Grafik yapılandırma arayüzü

Özgeçmişim ektedir. Yapmam gereken stajın resmi süresi 2 ay olup (40 iş günü), Temmuz 2007′den, Eylül 2007′ye kadar olan sürede herhangi bir zaman diliminde gerçekleştirebilirim. Bilgilerinize arz ederim. İyi çalışmalar.

Kişisel cevap 24 Nisan 2007 tarihinde geldi:

(A.Murat Eren tarafından yazılan detaylı blog girdisi de okumaya değerdir.)

Staj (Temmuz 2007 – Ağustos 2007)

Staja başladıktan sonra farkettiğim şey çevremde Pardus ve Linux adına benden daha fazla şey bilen, ofisteki geliştiricilerle tanışan insanların olduğuydu. Ben derleme çiftliğine XMLRPC tabanlı bir iletişim katmanı eklemekle uğraştım, bunu yaparken de karşıma çıkan hataları düzelttim. Genelde Ekin Meroğlu ve S.Çağlar Onur ile çalışıyorduk, ben onların yanına gidiyor, bir şeyler soruyor, yanıtları not alıyor geri stajyer ofisine dönüyor bir şeyler yapmaya çalışıyordum.

Staj süresi çabuk geçti, bir sürü şey öğrendim, Anibal’in Mezarı’nı gezdim, bir sürü değerli insanla tanıştım, eğlendim falan derken 11 Eylül 2007′de Çağlar Jabber üzerinden “Bizimle yarı zamanlı çalışmak ister misin?” dedi. Teklifin doğum günüme gelmesi ilginçti. Kabul ettim.

Yarı Zamanlı Katkı (Ekim 2007 – Ağustos 2008)

Ekim 2007 – Haziran 2008 arası yarı zamanlı olarak projeye destek verdim. Otomatik yazıcı tanıma altyapısı üzerinde çalışıyordum vakit buldukça. İlk olarak Pardus 2008 sürümünde bu altyapıyı devreye almıştık ve kullanıcılara oldukça kolaylık sağlamıştık. Benimle beraber Gökçen Eraslan tam zamanlı, Fatih Aşıcı ise yarı zamanlı olarak işe başlamıştı.

Yarı zamanlı çalıştığım süre üniversitenin son sıfına denk geldiğinde aynı zamanda tez çalışmalarıyla boğuşmaktan Pardus’a yeterli vakit ayıramıyordum. Tezi tamamlayıp Haziran 2008′de mezun olarak ofise geldiğimde Erkan Tekman ile “Ben akademik bir şeyler yapmak istiyorum, yüksek lisans yapacağım, bir süredir de tez ile uğraşmaktan projeye vakit ayıramadım ve aramıza mesafe girdi” temalı bir konuşma yaptım ancak beni projede kalmaya ikna etti, akademik iznimi kullanarak yüksek lisans da yapabileceğimi belirtti. Ağustos 2008 itibariyle tam zamanlı olarak projede çalışmaya başladım.

Tam Zamanlı Katkı (Ağustos 2008 – Ocak 2012)

Ağustos 2008′de tam zamanlı bir geliştirici oldum. Aynı zamanda Boğaziçi Üniversitesi Biyomedikal Mühendisliği Bölümü’nde yüksek lisansa başladım. Ancak bazı kişisel ve takvimsel sebeplerden dolayı hem işin hem de yüksek lisansın beraber yürümeyeceğini anlayarak yüksek lisansı bıraktım.

Staj ve yarı zamanlı çalıştığım dönemlerde beraber katkı vermeye çok fazla fırsat bulamadığım Gürer Özen, İsmail Dönmez, S.Çağlar Onur birbirlerine yakın sayılabilecek zamanlarda projeden ayrıldılar. Çağlar’ın ayrılmasıyla bir anda çekirdek paketini elimde buldum. Çekirdek paketinin ve çekirdek sürücülerinin bakımını üstlendiğimde Pardus 2008 sürümü aktif olarak geliştiriliyordu ve 2.6.25 serisi çekirdek kullanıyorduk.

15 Kasım 2008 tarihinde çekirdeği 2.6.25.20 sürümüne yükselttim ve SUSE’den aldığım yamalarla çekirdeğe UDF desteği ekledim. Bu benim çekirdek paketine ilk güncellememdi.

Daha sonra Pardus 2009′u 2.6.31 serisiyle yayınladık. Kurumsal 2 sürümündeyse önce 2.6.32 serisini kullandık sonra ise 2.6.35 serisine geçiş yaptık. Pardus 2011′de ise 2.6.36 ve 2.6.37 çekirdeklerini kullandık.

Çekirdek ve sürücü bakımının yanında kararlı depoya aktarılmamış paketleri yavaş yavaş 2008 kararlı deposuna aktarmaya başladım. Bu esnada derleme hatalarıyla karşılaştım, onları çözmeye çalıştım, yama nedir öğrendim, yama buldum, yama yaptım. Bu süreç paket bakımı konusunda beni oldukça eğitti.

Zamanla Onur Küçük‘ün üzerinden yazıcı ile ilgili paketleri devraldım. Bunun yanında bazı temel kitaplıklar, tarayıcı desteği, yine Çağlar’dan kalan ses altyapısı, Pınar Yanardağ‘dan devraldığım Bluetooth altyapısı, HAL, udev, kablolu/kablosuz ağ altyapısı, falan derken şu an bakıyorum da 2011 kararlı deposunda 425 adet paketin bakıcısı olarak görünüyorum.

Bu süre içerisinde bana atanan ve daha sonra ÇÖZÜLDÜ olarak kapatılan hatalara baktığımda 586 sayısını görüyorum. Bu yaklaşık bir değerdir tabii ki, arada yanlışlıkla çözüldü olarak işaretlenen, bana atanan ancak benim çözmediğim hatalar da vardır mutlaka ancak ne kadar katkı verdiğime dair bir fikir vermesi açısından önemli.

Pardus Kurumsal 2

10 Aralık 2009 tarihinde, Proje Yöneticisi Erkan Tekman tarafından Geliştirici listesinde duyurulduğu üzere, Pardus Kurumsal 2 dağıtımının geçici sürüm yöneticisi oldum. Aslen Ekin’in yöneticiliğinde başlayan bu sürüm, Ekin’in askerlik görevi için projeden bir süreliğine ayrılmasıyla geçici olarak bana devredilmişti. Ekin’in askerden döndükten sonra sözleşmeli projeler sorumlusu olmasıyla, sürümün yöneticiliği asaleten bana devredilmişti.

KDE masaüstü ortamının artık bakımı yapılmayan ancak kararlı ve hızlı olan 3.5 serisinin kullanıldığı Pardus Kurumsal 2 sürümü için çok çaba sarfettik. Sürüm takviminde aksamalar olmadı değil ancak hep son ürünü daha iyi hale getirmek için yaşandı bu aksaklıklar. Bir kurumsal sürümde olması gerektiğine inandığımız unsurları iş gücümüzün ve kabiliyetimizin izin verdiği ölçüde son ürüne yansıtmaya çalıştık ve Şubat 2011′de sürümü yayınladık.

TÜBİTAK içerisinde de ürüne ilgi büyüktü. TÜBİTAK tarafından geliştirilen bir akıllı kart işletim sistemi olan AKİS desteğini eniyileştirmek için AKİS ekibiyle beraber çalıştık, Temmuz 2011′de Kurumsal 2 üzerinde oldukça kapsamlı bir AKİS desteği sağladık, sunumunu yaptık.

Yine EPDK, SKAAS gibi projelerden daha Kurumsal 2 sürümü çıkmadan gelen istek ve eksiklikleri son ürüne olabildiğince yansıtmaya çalıştık. Bu ekiplerle ortak çalışmalar yürüttük, birbirimize destek olduk.

Peki ne oldu?

Milliyet Gazetesi’nin 28 Ağustos 2011 tarihinde yayınladığı haberde de belirtildiği gibi Kamuda yeniden yapılanmayı düzenleyen ‘Kanun Hükmünde Kararname’lerle bürokraside yeni bir atama operasyonu daha gerçekleştirildi ve TÜBİTAK Başkanı Nükhet Yetiş görevinden alındı. Birkaç gün sonra ise BİLGEM başkanı Önder Yetiş istifa etti.

Tabii ki bu son yazımda siyasete bulaşmayacağım. Ağustos 2011′de başlayan ve hâlen devam eden yeniden yapılanma sürecini bu yazının okurları kendi algı ve yorumlama yetileri çerçevesinde değerlendireceklerdir.

Ancak,

bu 5 aydır devam eden süreç TÜBİTAK’ın başına bir çığ gibi indi. Bu çığdan çok fazla etkilenen ve hiç etkilenmeyen araştırmacılar, yöneticiler, projeler, birimler oldu.

FATİH Projesi’nde Pardus Projesi’ne beklenen ve ümit edilen değer asla verilmedi. Hükümetin bakanları Pardus hakkında “Pardus diye TÜBİTAK’ın geliştirdiği bir işletim sistemi var.” gibi trajikomik sözler sarfetti.

FATİH hakkında hiçbir umut ve gelecek görülmüyorken Pardus Projesi Ekim 2011 sonunda UEKAE’den BTE’ye geçirilip “Fatih için Pardus” olarak yeniden adlandırıldı. Acaba? dedik.

Birkaç gün sonra ise üst düzey bir yönetici enstitü çalışanları önünde “Microsoft bilgisayar başına 5TL lisans indirimi yapmış, zaten Ulaştırma Bakanı da geçen gün projeyi Microsoft’a vereceğiz dedi bana” gibi profesyonelliğe pek yakışmayan açıklamalarda bulundu.

Daha sonra yine üst düzey bir yöneticiden FATİH Projesi’nde Microsoft’a kök söktürdüğü için Pardus’a minnettar olunduğunu duyduk.

Böylece en azından ben “Fatih için Pardus” yeniden adlandırmasının oyalamadan başka bir şey olmadığını idrak ettim.

Etrafımızdaki tanıdığımız, saygı gösterdiğimiz, işini iyi yaptığını bildiğimiz araştırmacıların görevlerinden alınarak alt seviye görevlere gönderildiklerine şahit olduk. Basının ve dış dünyanın ise olan bitenden hiç haberi olmadı, olamadı.

Ben?

Bu yeniden yapılanma sürecinin Pardus için iyi bir şekilde sonuçlanacağına dair inancım çok azdı, o az olan inancım da katıldığım bazı toplantılar ve tanıştığım bazı yeni insanlar tarafından yok edildi. Ben de gittiği yere kadar projede devam etmeye, o esnada da elimden geldiğince hatalarla ilgilenmeye karar verdim. Kurumsal 2 için güncelleme paketi yayınladım, oyun alanımda çekirdeği 3.2 serisine çektim, bazı hataları düzelttim. Oyun alanımda systemd, dracut, kmod gibi yeni Linux teknolojilerinin paketlerini hazırladım olası bir yeni sürüm planı için. Bir yandan da devam etmekte olan yüksek lisans eğitimimle ilgili proje ve sınavlarla ilgilenmeye devam ettim.

Görevlendirme

29 Aralık 2011 tarihinde 1 aylığına Ankara’ya görevlendirdiğimi öğrendim.

Ben Ekim 2007′de Pardus Projesi’ne geliştirici olarak alındım, enstitüler ve projeler arası çalışacak taşeron bir yazılım geliştirici olarak değil. Ayrıca Ocak 2012 süresince finallerimin ve proje teslimlerimin olduğu da yönetim tarafından bilindiğine göre bu görevlendirmenin ne kadar iyi niyetli olduğu oldukça şüpheliydi.

Gittiği yer burasıymış dedim ve bu çığ altında kalmış kurumdan sıyrılarak ayrıldım.

Peki şimdi ne olacak?

Şu anda projede 11′i geliştirici olmak üzere 14 kişi çalışıyor. TÜBİTAK, Pardus Projesi’nin geleceği hakkında yakın zamanda bir çalıştay düzenleyecek. Ben davet edileceğimi bile düşünmediğim bu çalıştayın yapıcı değil yıkıcı olacağını düşünüyorum, umarım haksız çıkarım.

Başka bir dağıtım projesi var mı?

Ben hâlen evimde Pardus 2011 kullanıyorum ve Pardus’un diğer dağıtımlara göre avantajlarının olduğuna, daha kullanıcı dostu olduğuna ve PiSi paketleme altyapısının oldukça başarılı ve kullanışlı olduğuna inanıyorum. Bu yüzden Pardus’u tek başıma veya başkalarının da katkısıyla başka bir ad altında devam ettirmek istiyorum. Hatta bir süredir GitHub altında benim yaratmış olduğum bir depoda Pardus 2011 kaynak deposunun bir kopyası var. Yaptığım bazı çalışmaları arada sırada oraya commit ediyorum ancak ortada sadece biraz ilerlemiş bir depo var, ürün olmaya yakın hiçbir şey yok.

Ancak istemekle olmuyor bu iş. Ben ne kadar istiyorum desem de hem yüksek lisansım hem olası bir yeni iş hayatım bu yeni projeye verebileceğim katkı miktarını oldukça düşürecek. O yüzden biraz daha düşünüp ona göre konuşmak istiyorum.

Teşekkür

Öncelikle çabaladığı, savunduğu, hedeflediği her şey için muhteşem yöneticim Erkan Tekman’a,

sonra aklıma gelen kronolojide TÜBİTAK bünyesinde Pardus Projesi için katkı vermiş arkadaşlarım

Gürer Özen, Barış Metin, A. Murat Eren, Barış Metin, Faik Uygur, Onur Küçük, Ekin Meroğlu, S. Çağlar Onur, İsmail Dönmez, Görkem Çetin, Umut Pulat, Koray Löker, Bahadır Kandemir, Gökmen Göksel, Gökçen Eraslan, Fatih Aşıcı, Pınar Yanardağ, Taner Taş, Serbülent Ünsal, Ali Ulvi Tunç, Işıl Poyraz, Semen Cirit, Renan Çakırerk, Serdar Dalgıç, İbrahim Güngör, Eren Türkay, Erdem Bayer, Akın Ömeroğlu, Mete Alpaslan, Fatih Arslan, Meltem Parmaksız, Metin Akdere, Mete Bilgin, Mehmet Emre Atasever, Yasemin Yiğit Kuru, Hakan Şimşek, Uğur Eke, Gökhan Özbulak, Nihan Katipoğlu, Beyza Ermiş, Çağlar Kilimci, Mehmet Özdemir, Bertan Gündoğdu, Kaan Özdinçer ve Pamir Talazan’a,

yine TÜBİTAK bünyesinde çeşitli konumlarda çalışmış veya çalışmakta olan, bana bir şekilde bir şeyler katmış olduklarına inandığım Seda Polat, Fehime Bıyıklıoğlu ve Özmen Emre Demirkol’a,

64-Bit desteği için ÇOMÜ ve Necdet Yücel’e,

Artistanbul ekibinden tanıdığım Ali Işıngör, Seda Akay, Gizem Belen, İrem Çobanoğlu, Uğur Çetin ve tanımadığım diğerlerine,

Özgürlükİçin’in yaratıcıları ve yürütücülerine,

bize daima destek ve katkı veren tüm Pardus kullanıcılarına ve camiasına,

ve son olarak iyi kötü bizi arkadan ittirmiş ve bizi elinden geldiğince desteklemiş olduğunu şimdilerde daha iyi anladığım Önder Yetiş ve eski yönetime

teşekkür ederim.

Son olarak…

 ***

17 comments so far, add yours

kdenlive 0.8 for Pardus 2011

I’m updating the whole top-down dependency tree (gavl, frei0r-plugins and mlt packages) for kdenlive 0.8. I assume it will hit the testing repositories in a few days. This new version brings several new features, including improved UI, proxy clips, audio monitoring, HDMI output, new effects and more.

See http://www.kdenlive.org/users/j-b-m/kdenlive-08-released for further details.

One comment so far, add another

A good short intro to Android Internals

Android Internals by Marko Gargenta. Marko Gargenta is also the author of Learning Android book published by O’Reilly.

Leave the first comment

26/01/2011 – Wednesday

  • Just found out that NetworkManager-pptp package was missing a pptpclient dependency. Added pptpclient to 2011 repositories and fixed the missing dependencies in Pardus Corporate 2 and 2011 repositories,
  • Fixed automatic MAC address generation and added manual architecture support the lxc-pardus script,
  • Added eciadsl package to Pardus Corporate 2 and 2011 repositories,
  • Added multipath-tools and iniparser packages to Pardus Corporate 2 and 2011 repositories. After reviewing and merging nbd-utils, dracut can finally be offered as an alternative initramfs implementation in Pardus Corporate 2 and 2011,
  • Reviewed figlet and toilet packages prepared by Anıl Özbek,
  • Prepared compat32-* packages for being able to run skype on x86_64. Beside a glitch in libv4l, all libraries are ready, yay!
Leave the first comment

11/01/2011 – Tuesday

Repository commits

Synced Ghostscript and Cups package patches from Fedora for Pardus 2011 and Corporate 2
Renamed module-kvm package to module-compat-kvm in Pardus 2011
Bumped iproute2 to 2.6.37 in Pardus 2011
Bumped media-player-info to 12 in Pardus 2011 and Corporate 2
Bumped iso-codes to 3.24 in Pardus 2011 and Corporate 2
Added Suse patches to nbd-utils and also a default configuration file
Moved setuptools into system.devel in Pardus Corporate 2
python-cryptsetup is reviewed and got 2 ACK. It’s now in 2011 and Corporate 2 repositories!
Dropped power.d hooks from pm-utils package in Pardus 2011 and Corporate 2 as they are fragile and causing serious problems
Updated Release Notes for Pardus Corporate 2
Prepared Live installation image project files for Pardus Corporate 2

Bug triaging

Sent a bunch of debug capture to Matthew Garrett for the autosuspend bug

Leave the first comment

10/01/2011 – Monday

Repository commits

Enabled mono bindings for Avahi in Pardus 2011
Bumped upower to 0.9.8 in Pardus 2011 and Corporate 2
Bumped Cups to 1.4.6 in Pardus 2011 and Corporate 2
Added two bugfix patches to Ghostscript in Pardus 2011 and Corporate 2
Moved iniparser under review for Pardus 2011 (#16153)
Moved  nbd-utils under review for Pardus 2011 and Corporate 2 (#16151)
Moved dash under review for Pardus 2011 and Corporate 2 (#16152)

Bugs triaged

Figured out that the “Plugged USB devices not recognized until lsusb is called” problem (#15445) in Pardus 2011 arises on systems where USB autosuspend is not working correctly. Reverting 3 autosuspend patches taken from Fedora fixed the issue for all reporters. Upstream bug opened, relevant acpidump and lspci outputs from reporters are sent.

“Wireless is not enabled on Lenovo 3000 v200″ problem (#15967) in Pardus 2011 is caused by the acer-wmi module which gets loaded on some Lenovo notebooks causing interference within the rfkill interface. Patch was available for Lenovo Ideapad S2. Relevant information for Lenovo 3000 v200 is attached to the already available upstream bug.

It seems that some of the recently reported fatal exception in kernel oopses (#16076, #15141) in Pardus 2011 kernel is caused by the udev 165 update which triggers a kernel bug in libata. I’ve reverted the relevant ata_id changes in udev package and prepared a test build for sending to complaining users to see whether it helps or not.

Bugs fixed

Fixed a l10n bug in Thunderbird package (#15928) causing localized reply headers not to show correctly. It was actually caused by our default prefs.js which was overriding those headers with the Turkish ones (sigh) and setting the reply_header type field to a wrong value. Dropped all those things from prefs.js to let Thunderbird handle localized reply headers.

Leave the first comment

simple event sound player

Pardus Corporate 2 – long-term support release of Pardus – will be released in May 2010. It will be based on KDE 3.5.10 instead of KDE4 to emphasis on better interactivity/performance instead of eye-candy.

One drawback of KDE 3.5 was the infamous unmaintained software sound mixer/synthesizer called aRts. We had suffered a lot from aRts + PulseAudio in Pardus 2008 so we decided to completely drop aRts from Pardus Corporate2.

But aRts was responsible for playing the desktop event sounds. Seen that disabling it will render the desktop experience event-sound-free, I decided to use an external player for event playing. I wrote a simple C tool which uses libcanberra, and forced KDE to use it on every event request. In order to achieve these,  you just have to put a global knotifyrc file in your distribution’s branding package:

[Misc]
External player[$e]=/usr/bin/canberra-event-play
LastConfiguredApp=knotify
Use external player=true
Volume=100

The External player should be set to whatever you decide to use as the player. It should at least support ogg and wav file playback in order to be able to play all the default KDE 3.5 sounds.

With this simple solution, all the default event sounds of KDE are now handled by PulseAudio through libcanberra. This allows you to adjust the event playback volume from pavucontrol, etc.

The only problem is that PulseAudio doesn’t seem to mix overlapping event sounds but hey that’s not a big deal for now.

The source code for the simple event sound player:

/*
 * Simple event sound player through libcanberra
 *
 * Ozan Çağlayan <ozan_at_pardus.org.tr>
 * Fatih Aşıcı <fatih_at_pardus.org.tr>
 *
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2 of the License, or (at your
 * option) any later version. Please read the COPYING file.
 *
 * */

#include <stdio.h>

#include <glib.h>
#include <canberra.h>

static int ret = 0;
static ca_proplist *proplist = NULL;
static ca_context *ccontext = NULL;
static GMainLoop* mainloop = NULL;

static void error(int line, int errno) {
    fprintf(stderr, "error %s at line %d\n", ca_strerror(errno), line);
}

static void callback(ca_context *c, uint32_t id, int errno, void *userdata) {
    if (errno < 0) {
        error(__LINE__, errno);
        ret = 1;
    }

    g_main_loop_quit(mainloop);
}

int main(int argc, char *argv[]) {

    if (argc < 2) {
        fprintf(stdout, "Usage: %s <filename>\n", argv[0]);
        return 1;
    }

    /* Initialize threading system */
    g_thread_init(NULL);

    /* Create mainloop */
    mainloop = g_main_loop_new(NULL, FALSE);

    /* Create context */
    if ((ret = ca_context_create(&ccontext)) < 0)
        error(__LINE__-1, ret);

    /* Allocate proplist */
    if ((ret = ca_proplist_create(&proplist)) < 0)
        error(__LINE__-1, ret);

    /* Set application data */
    ca_context_change_props(ccontext,
              CA_PROP_APPLICATION_NAME, "canberra-event-play",
              CA_PROP_APPLICATION_ID, "tr.org.pardus.CanberraEventPlay", NULL);

    /* Set properties */
    ca_proplist_sets(proplist, CA_PROP_MEDIA_FILENAME, argv[1]);
    ca_proplist_sets(proplist, CA_PROP_CANBERRA_CACHE_CONTROL, "volatile");
    ca_proplist_sets(proplist, CA_PROP_MEDIA_ROLE, "event");

    if ((ret = ca_context_play_full(ccontext, 1, proplist, callback, NULL)) < 0)
        error(__LINE__-1, ret);

    /* Run the mainloop */
    g_main_loop_run(mainloop);

    /* Cleanup */
    ca_proplist_destroy(proplist);
    ca_context_destroy(ccontext);

    /* Return */
    return ret;
}
Leave the first comment

Useful discussion about “out-of-memory” handling

This post contains some quotes from Lennart Poettering and other free software guys about OOM handling in applications.  I really liked the discussions and wanted to share it. Happy reading :)

It all starts with the following patch sent to jack-devel:

thread_args = (jack_thread_arg_t *) malloc (sizeof (jack_thread_arg_t));
+    if (thread_args == NULL) {
+        return 0;
+    }

Then fons says:

“Any real-life jack system is likely to be on its knees and begging for mercy long before the first malloc() fails. And on Linux, a non-NULL return from malloc doesn’t even mean that the memory is really available.”

Slightly disagrees Nedko Arnaudov with:

“I tend to disagree on this issue but I’ve been arguing with other people working on linux audio software and I dont see the point of going into such theoretical discussions. IMO, checking for allocation failures is good thing. The only bad thing about is that it adds more code. Bad as more code to maintain and somewhat reduced readability. It is definitively good otherwise. Most importantly it does not really hurt.”

Stéphane Letz suggests to look at PulseAudio’s malloc() implementation which can easily be browsed thanks to gitweb.

Then Lennart talks about glibc’s malloc() redefinition hooks and finally replies with an extremely instructive e-mail which I directly paste over here:

The OOM situation has been discussed quite often in various
projects. On modern systems it has become pretty clear that for normal
userspace software only an aborting malloc() makes sense for a couple
of reasons:

OOM handling creates a substantial number of error paths that need to
be tested, but seldomly are. i.e. when in an inner routine a malloc()
fails you need to rollback the entire operation which can be very hard
to get right, and since this is seldomly tested for almost never
works. OOM error paths add a substantial amount of code to most
projects and that code is seldomly tested and verified. Also very
interesting here are Havoc’s notes on the OOM handling in D-Bus:

http://log.ometer.com/2008-02.html#4.2

And note that I can list you a couple of places were D-Bus’
transactional rollback code still didn’t get it right, although this
is much much better and systematically tested than most other
projects. (e.g. https://bugs.freedesktop.org/show_bug.cgi?id=21259)

And then there’s the big thing that malloc() returning NULL seldomly
means what people think it means. On modern systems RAM exhaustion is
signalled differently, certainly not via malloc(), since that
allocates address space, not actual memory. So if malloc() returns
NULL this is a sign of address space exhaustion or by hitting some
resource limit
(whcih is actually more or less the same thing). In
that case it seldomly makes sense trying to go on, and especially the
often suggested solution such as “malloc() in a loop” is not going to
help a tiny bit.

If the system is truely short on RAM the kernel will kill a process
via the OOM killer, in an unfriendly way
. I’d say it only makes sense
for a process to treat address space exhaustion the same way as true
OOM is treated: by killing itself.

Also, almost all sensible libraries enforce an aborting malloc()
anyway. For example, glib/gtk works exclusively with aborting
malloc, and that’s the same for quite a few libraries. That means the
entirety of your GNOME desktop, or even many system daemons such as
HAL or DeviceKit-disks abort on OOM, and if you think it is worth
handling OOM in your user software one might wonder what the point is
if the underlying services dont’t.

Now, the often heard argument for handling malloc() returning NULL
properly is that it is that users don’t want their data lost and the
app should exit cleanly saving everything that there is to save. In my
opinion that is a completely artificial issue. A program should always
be written in a way that the data it can lose is minimal, and that
includes when it is terminated abruptly by a power outage, or by being
killed by OOM. So auto-save the user data from time to time anyway,
dont wait until youre officially fucked by malloc() returning
FULL
. Also, it is incredibly hard to write code that is still able to
write data safely to disk when you cannot allocate memory while doing
that.

So in summary, OOM-safety is wrong:

- Because it increases your code size by 30%-40%
- You’re trying to be more catholic than the pope, since various
systems services you build on and interface with aren’t OOM-safe
anyway
- You are trying to solve the wrong problem. Real OOM wil be signalled
via SIGKILL, not malloc() returning NULL.
- You are trying to solve the wrong problem. Make sure your app never loses
data, not only when malloc() returns NULL
- You can barely test the OOM codepaths

Does that mean it never makes sense to write OOM-safe userspace code?
No. For very low-level system daemons, such as udev or the init system
itself clean OOM handling is important. And in some embedded
appliances that is true too
. But it is very easy to identify these
cases: these are those programs that modify their own oom_adj value in
/proc or appliances where memory overcommit is disabled anyway. (And
recursively, the few libraries that are used by those daemons should
be OOM-safe, too, i.e. libc, dbus)

I don’t think that Jack or libjack qualify as that.

So, say no to OOM handling! Saves you time, makes your code faster and
nicer and shorter!

Or to say in a more sarcastic way: the most visible effect the extra
code you have to write for making things OOM-safe will be that due to
higher memory/address space consumption the OOM situation will be
coming earlier then without it.

Then Jack O’Quin answers that JACK does function as one of those low-level daemons you mention.

Lennart clarifies his arguments:

Producing music is nothing lifes depend on. Nor something where a
machine reboot would cost millions of dollars. And that means that
it is not important that they never ever crash.

That’s different in a car or in medical devices. If one of the
gazillions of embedded devices that make up today’s cars or medical
devices fail, this could have fatal consequences, and hence spending
the extra time and money on investing in OOM-safety makes sense. But
if you claim that having the music go on under all circumstances is
similary important this is quite some hybris.

..

And finally: if your system really gets under memory pressure, isn’t
the jack daemon the first thing that should be killed? i.e. it just
provides connectivity, right? Killing it will stop audio, but should
not lose data. So I’d argue that Jack is the first thing that should
go away, not the last thing. It should go away way before your Ardour
is shot down! Because losing ardour means losing data. Losing jack
just means merely a temporary interruption of your work.

And the discussion goes on with a lot of good explanations about VM mechanisms around like memory overcommitting etc.

The whole thread is at:

http://thread.gmane.org/gmane.comp.audio.jackit/19983/focus=19998

Leave the first comment

Okay, I really start to blog

Hi!

To keep it simple for the first blog entry, go download Pardus 2009 and try it. You’ll quickly find out that it’s the most impressive and ready-to-use KDE4 distribution around.

Keep in touch.

Leave the first comment