15
Ağu

Birkaç saat evvel, Freenode sunucularındaki #ozgurlukicin kanalında; önceki staj döneminde yapılan fikir arayüzü hakkında bilgi vermek, yeni staj döneminde geliştiricilecek tema bölümü için fikir toplamak, Pardus 2011′e Öİ’den gelecek katkılar ve Öİ 3.0 olarak tabir edilen yeni site altyapısı ile ilgili beyin fırtınası yapmak (toplantı sırasında bu madde atlandı) gibi dört ana gündem maddesine sahip bir IRC toplantısı yapıldı. Merak edenler, sohbet kayıtlarıPardus-Wiki‘den okuyabilir.

3 saate yakın süren bu yazılı toplantı sonrası nüksetti yazma isteği. Onca konuşma arasında sesimin duyulmamasından, herşeyi söyleyemediğimden, biraz da Pazar gecesinin son saatlerini yanlış geçirdiğim düşüncesinden.

6 adam*haftalık çalışma sonrası yenilenen yeni fikirler arayüzü “Beyin 2″ ile başladı tartışma, programa uygun olarak. Uygulamanın işleyişinden ve Pardus 2011 özellik seçimindeki rolünden bahsedildikten sonra, arayüzün en sağlıklı nasıl kullanılacağı/yönetileceği konusu tartışmaya açıldı. 10 dakika süren kısa ve öz konuşmaların ardından kanaldaki moderasyon kaldırıldı ve yarım saatten biraz daha uzun bir süre, fikir arayüzünde oyların gizli olup olmaması, yorum yazma zorunluluğu, yorum uzunluğu gibi; keşke 6 adam*haftalık çalışma öncesinde forumda karara bağlansaydı dediğim tartışmalarla israf edildi.

İlk yarım saatin ardından başlayan “neler fikirdir, neler değildir”, “tekrarlar nasıl engellenir” tartışması sahalarda görmek istediğimiz hareketlerden olsa da; fikirlerin geliştiricilere nasıl iletileceği tartışması, SCT (Sürüm Camia Temsilcisi) kavramını ve camiayı ciddiye aldığımızı, Öİ’nin en aktif katkıcılarına dahi iyi anlatamadığımızın göstergesi gibiydi. 1 saat geçtiğinde, Pardus 2011 için kullanıcıların daha fazla fikir girmeleri için bir “seferberlik” başlatılması, haberler yazılması, banner’lar hazırlanması kararlarıyla, ilk toplantı maddesinin yanına büyük bir “tik” konmuş oldu.

Bir söylentiye göre açık 220′den fazla “fikir” vardı ortada. “15 gün sürecek bir seferberlik, mevcut fikirlerin tekrarlanmasından öteye geçebilecek mi?” ve “seferberlik olmasa da, insanlar fikirlerini beyan etmeye devam etmeyecek mi?” gibi sorular hala aklımda. Belki, o an farkında olmasam da, ana sürümler arası camiadan uzaklaşan kullanıcıları hareketlendirmek, heyecanı artırmak için bir taktikti bu aslında…

Konu temalara geldi sonra, henüz kodlanmaya başlanmamış yeni arayüz için iyi-kötü fikirler atıldı ortaya, 2011 için tema ve duvarkağıdı yarışması ve Öİ tarafından hazırlanacağını öğrendiğim 2011 Pardus Turu uygulaması konuşuldu. Moderasyonun kaldırılmış olmasından belki, önemli fikirler aradan cımbızla seçildi bu tartışmada. Ne yazık ki yine, 1 saatin çok az kısmından verim alınabildi zannımca.

2. saatin sonlarına doğru başlayan ve en çok merak ettiğim “Pardus 2011′e Özgürlükİçin tarafında verilebilecek katkılar” bölümü ise, tahmin ettiğim gibi, yeni fikirler arayüzünde konuşulması gereken konuların ve -daha kötüsü- yeni fikirler arayüzünde bile yeri olmayan “KDE güncel olsun”, “kernel son sürüm olsun”, “Müdür (Pardus’un açılış sistemi) ölsün” türü temennilerin ortaya atıldığı bir serbest atışa dönüştü. Bir arkadaşın dediği gibi, “Çözünürlük değiştirirken oturumu kapatmak gerekmesin” türü bir fikir gelseydi, içim cız etmeyecekti. Hem yeni fikirler arayüzü, hem de SCT; sanki bu tartışmada çiğnendi.

Saat gece yarısına yaklaşınca toplantı bitti, katılımcıların yarısından çoğu kanalda durmaya devam edince; öğrenci temsilciliği, Pardus Kurumsal 2 sürüm takvimi haberler, Ajans Pardus içeriği gibi konulara geçildi. Ben ve Akın (Ömeroğlu) dışında kimse atlanan haberler konusunda fikir beyan etmese de; 2011′in geliştiriciler için hazırlanan ön sürüm haberinin Pardus-Linux.Org tarafından “taze taze” servis edilirken, Öİ’de “kullanıcılar bu sürümü kurarsa sorun yaşarlar” düşüncesiyle yer verilmemesi; Oracle’ın Google’a Android işletim sistemindeki patent ihlalleri hakkında dava açması haberinin “çevirilecekler” listesinde sahipsiz beklemesi ve en büyük Linux konferanslarından LinuxCon 2010′un çeviri listesinde bile kendine yer bulamaması önemli konular arasındaydı. Muhalif olmamdan belki, toplantının en faydalı bulduğum kısmı burasıydı.

Yakın zamanda Pardus 2011 geliştirici toplantısı yapacağız IRC’de, aynı adresteki #pardus kanalında. Umarım zamanımızı iyi yönetebilir, gereksiz ayrıntılardan kaçabilir ve mümkün olduğunca az insanın “zaman kaybettim” düşüncesiyle bilgisayarını kapatmasını sağlayabiliriz. İyi geceler.

27
Tem

2500‘den fazla özgür yazılımı bir araya getirerek oluşturuyoruz Pardus’u. Bu, binlerce geliştirici demek. Binlerce insan, hepsi birbirinden farklı. Kullandıkları programlama dilleri, yöntemler, kütüphaneler, stiller de öyle. Bu farklı parçaları düzgün ve çalışır bir şekilde bir araya getirmekten sorumlu biz geliştiriciler için zorlu engeller bunlar. Bir şekilde aşıyoruz bu engelleri; bazen kendi çözümlerimizle geliyoruz, bazen yazılımın geliştiricisine havale ediyoruz.

Bütün bu işleri yaparken onlarca parçaya bölünüyoruz; birkaç satır kod yazarak çözülecek bir iş için hata takip sisteminde, e-posta listelerinde, (bazen aşina olmadığımız dillerde yazılmış) kaynak kodlarda cirit atıyoruz; kendi çalışma ortamımızda ve test sistemlerimizde tekrarlayamadığımız ancak var olduğundan emin olduğumuz hataları üretmek için saatlerimizi harcıyoruz (tekrarladıktan sonra çocuklar gibi seviniyoruz); istikrarlı ve başarılı bir şekilde olmasa da yaptıklarımızı yazıyor, anlatıyor, o da olmazsa “twitliyoruz”. Soran olursa “her işi yapıyoruz”.

Geliştirici dünyası dönmeye/duraklamaya devam ederken, fark ettiğiniz üzere, hata yapıyor ya da başkalarının yaptığı hataları çözmekte problem yaşıyoruz. Kendi yaptığımız hataları azaltmaya, başkalarının yaptığı hataları çabuk düzeltmeye çalışsak da; her zaman başarılı olamıyoruz. Bu yazıyı yazmaya başlarken açık olan 1419 hata gibi, hiçbir zaman sıfıra düşmeyeceğini bildiğimiz bir kusur listesini kısaltmak ya da en kötü ihtimalle uzamasını engellemek için çaba harcıyoruz.

Birbirimize ara sıra Superman, Pardusman, aslan, kaplan diyoruz ama aslında yazılım geliştirme ve işletim sistemi dağıtımı oluşturma konusunda tecrübe sahibi ve bu işi yapacak zamana/enerjiye/kaynağa sahip GNU/Linux kullanıcıları olarak sizinle aynı yerde duruyoruz. Bu yüzden (farkında olmadan) sizin de bizimle aynı dili konuşmanızı istiyor, “dmes ve lspci çıktısını ver” dediğimizde anlamanızı bekliyoruz, “/proc dedim, /sys demedim” diye azarlıyoruz. Biliyoruz, arada yazılımsal olmayan hatalar da yapıyoruz.

Bu bir gerçek, yakın zamanda hata sayısını dörtte üçüne bile indiremeyeceğiz, ancak hata düzeltme süreci hep birlikte daha az acılı hale getirebiliriz. Önerileri dikkatli takip ederek, sorulanları mümkün olduğunca detaylı şekilde cevaplayarak, bir şeyler anlaşılmadığında soru sormaktan çekinmeyerek (“lspci de ne kardeşim?” gibi), her zaman (karşılıklı) sakin olarak ve -en önemlisi- sabırla bekleyerek, bazen sadece bekleyerek bunu sağlayabiliriz. Farklı bir iş yapıyoruz; siz diye birşey yok aslında, biz varız, ve biz kendimiz için çalışıyoruz. En sık karşılaştığımız mekan olan http://hata.pardus.org.tr‘de daha uygun şartlarda bir araya gelmek istiyoruz.

25
Tem

Özgürlükİçin Tema bölümüne girip bakıyorum ara sıra, KDE’nin ne kadar fazla özelleştirilebilir olduğunu bilsem de, beni şaşırtan masaüstü tercihleri ile karşılaşabiliyorum. Bazılarının tamamını, bazılarının parçalarını kendi bilgisayarlarıma uygulamak istiyorum; ancak bunu yaparken sistem ayarları uygulamasındaki onlarca seçenek arasında kaybolmak, sağdan soldan duvarkağıdı, yazıtipi, simge seti indirmek istemiyorum.

Tembel adam yaratıcı olurmuş derler ya, benimki de aynı durum. Daha ismini koyamadım (önerilere açığım), yeni projem çok az arkadaşıma bahsettiğim ancak fırsat bulup yazmaya başlayamadığım masaüstü ayarları paylaşım uygulaması. Birkaç tıklama ile, kendi masaüstü ayarlarınızı tek bir paket haline getirip istediğiniz kişilerle paylaşabilmeniz için. Aktarılacak masaüstü ayarlarının listesi şimdilik kısa, yorumlarınızla şekilleneceğini umuyorum. Sıralama, kolaydan zora doğru:

  • Yazıtipleri
  • Simgeler
  • Duvarkağıdı
  • Renk temaları
  • Masaüstü tipi (plasma taşıyıcı, dizin görünümü, ara&çalıştır, …)
  • Plasma temaları ve plasmoid ayarları

Pardus 2011 için verilmiş bir söz değil bu, sadece uygulanması zor olmayacağını düşündüğüm bir fikir. İsim, özellik, uygulamanın arayüz tasarımı ve davranışı konularında önerilere açığım. Bileşenler belirgin hale gelip ihtiyaçlar ortaya çıktığında, bu bileşenleri kodlayacak geliştiricileri (ya da geliştirici adaylarını) yardıma beklerim.

Not 1: Yukarıdaki enfes duvarkağıdı, masaüstü sihirbazı dediğim Kerim Aydın‘dan. Projeyi tamamlamak ve onun gibi masaüstü sihirbazlarının temalarını zahmetsizce bilgisayarımda kullanmak için sabırsızlanıyorum.

Not 2: Ahenk yazılarımdan sıkılanlar için teknik mambo-jambo içermeyen bir yazı yazdığım için de pek menunum :)

24
Tem

Yüzlerce sunucunun bağlı olduğu bir ağ var elimizde, her biri merkezi bir sunucuya bağlanarak kendilerine ait politikaları alıyor ve uyguluyor. Adını duymaktan sıkıldığınız uzaktan yönetim sistemi Ahenk ile, elbette. 10′ar dakika ara basit bir sorgulama, uzun olmayan bir cevap. Tek noktadan nadir değiştirilen, yüzlerce noktadan sıkça okunan politikalar. Tam LDAP‘lık bir senaryo: Yazma nadir, okuma sık.

Politikaların daha çabuk uygulanması gerekiyor bazen, 10 dakika beklememek. Elbette bunu, sorgulama aralığını 30 saniyeye çekmeden, düzgün bir şekilde yapmak. Bir şekilde, “anında uygulama” sağlanması, çoğu zaman da yapılan işlemin sonucunun anlık olarak öğrenilmesi gerekiyor. Problem, işte burada başlıyor.

İstemcilerin belirli aralıklarla “çekme” yapması yerine, sunucunun bir değişiklik varsa “itme” yapması gerektiği durumlarda, LDAP’ın yanında çalışacak bir protokol ihtiyacı ortaya çıkıyor. Yerine değil, yanında; çünkü politikaların tutulması için “hafif” bir veritabanı çözümü gerekiyor ve LDAP bunu başarılı bir şekilde sağlıyor. Mevcut LDAP sunucularının yedekleme ve çoğaltma konusunda hazır çözümlerle gelmesi de ayrı bir avantaj, vazgeçilecek özellikler değil bunlar.

“İtme” kısmına geri dönersek, bu konuda aklıma ilk gelen çözüm, XMPP (Jabber) kullanmak ve “anında mesajlaşma” işini zahmetsizce halletmek oluyor. “Hata ayıklama işini Kopete ile yaparım” düşünceleri beliriyor tabi ister istemez, sonra çevreden “slm, asl?” yazınca işlemci bilgilerini versin esprileri yapılıyor :)

XMPP, LDAP kadar olmasa da eski bir standart. Açık, ücretsiz; kullanımı, geliştirmesi, genişletilmesi kolay. Birden fazla sunucu/istemci/kütüphane mevcut, kararlılığı kanıtlanmış. Alternatif arama gereği hissettirmiyor. Özgür, çalışıyor, işimi görüyor, daha ne isterim? Düzgün bir XMPP kütüphanesi, saç-baş yoldurmayacak bir sunucu; hepsi var, hatta hepsi (Twisted ve EJabberd) Pardus depolarında var. Noktaları birleştirmek kalıyor geriye, eğlenceli kısım burası işte.

Dökümanın yetmediği yerlerde kaynak kodları açılıyor, “döküman kötü ama kodlar tertemiz” deniyor, birkaç deneme sonrasında Jabber sohbet botu geliştiriliyor, sonra da aynı mesajlaşma tekniği Ahenk prototipine ekleniyor, sonra Kopete ile sistem yönetimi oyunu oynanıyor: “selam, nerden?”

Hemen hemen herkes tatilde demiştim. TÜBİTAK’ın toplu izin döneminin ilk haftası geride kaldı, havalandırma ve klima sistemlerini bakıma alınması yüzünden içerde mi kalsak, dışarı mı çıksak bilemediğimiz bunaltıcı bir haftada, ilk dönem stajına geç başlayan iki stajyer aramızdan ayrıldı, iki geliştirici de kalan işlerinin tamamlayarak tatile çıktı.

Geliştirici sayısının azlığından, depolara (tahminen) pek fazla commit yapılmayacak bu hafta. Ancak her toplu izin döneminde olduğu gibi, güvenlik açıkları ve kritik hatalar için hazırda bekleniyor olacak. Ofisteki sessizlikten istifade eden geliştiriciler sürpriz projelerle ortaya çıkabilir, bazı geliştiricilerin de gizli ajandasındaki önemli tarihler, tam da bu toplu iznin ortasına denk gelebilir…

Benim proje artık sürpriz değil [1] [2], Ahenk ile ilgili kod ve belgeler bu hafta depoya girmeye başlayacak. Ardından da proje ajandası şekillenecek. Ara verip farklı projelerle uğraşmam gereken zamanlarda Pardus 2011′deki yapılandırma altyapısı (COMAR) değişiklikleri ve danışmanı olduğum GSoC projesi ile iligileneceğim. Çok az arkadaşıma bahsettiğim ve Özgürlükİçin – Temalar bölümünde “reyting patlaması” yaratacağını düşündüğüm çok gizli proje ile ilgili de bir şeyler karalarım belki :)

Gidenlere iyi tatiller, kalanların acılarını paylaşıyorum, selamlar…

23
Tem

Milli Savunma Bakanlığı’ndaki bir ihtiyaç için geliştirilen Ahenk 1.0‘da (Pardus’un uzaktan yönetim sistemi), politikaların LDAP üzerinde tutulduğu ve istemcilerin belirli aralıklarla bu politikaları aldığı ve uyguladığı bir yapı mevcut. Olabildiğince basit ve sade. Büyük resme bakıldığında, yapılan iş aşağıdaki metnin veritabanına yazılması, okunması ve bu bilgiler ile işlem yapılması:

  dn: cn=server1, dc=pardus, dc=org, dc=tr
  pisiRepository: http://192.168.1.1/packages/2009/pisi-index.xml.bz2
  pisiUpdateInterval: 3600
  pisiUpdateType: security
  comarUserSource: ldap
  comarUserURL: ldap://192.168.1.1/dc=pardus,dc=org,dc=tr
  ...

Yönetim arabiriminde yapılan iş, bir arabirim kullanarak yukarıdaki politika metnini oluşturmak ve LDAP’a kayıt etmek. Nispeten kolay bir iş, ve bir sonraki Ahenk blogumun konusu :). Sisteme dahil köle bilgisayarlarda çalışacak Ajan uygulaması ise “sihrin” gerçekleştiği, ve benim en çok sevdiğim Ahenk bileşeni.

Ajan’ın yapısı aşağıdaki gibi. XMPP ile ilgili kısım 2.0 ile geldi:

LDAP istemcisi belirli aralıklarla, “bu bilgisayara ait politika var mı?” diye soruyor: Yaptığı şey “ldapsearch” komutu çalıştırmaktan çok farklı değil. Politika bulursa kuyruğa atıyor, ve kuyruktaki politikalar ilgili Ajan modüllerine gönderilerek işleniyor. Misal, PiSi ile ilgili politika metinleri -eğer kuruluysa- yazılım güncellemelerinden sorumlu modülde (bildiğiniz Python modülü) işleniyor.

XMPP istemcisi ise politikaların “anında” uygulanması ya da bilgisayarlara komut gönderilmesi gerektiğinde kullanılacak “opsiyonel” iletişim kanalı.

19
Tem

TÜBİTAK MAM Kampüsü bomboş, 5000+ çalışanın %90′ı 2 haftalık toplu (bazı işkoliklere göre “zorunlu”) izinde. Ben dahil birçok Pardus geliştiricisi ise, UEKAE binasındaki ofiste mesaide. Proje çalışanlarının, farklı zamanlarda izne çıkmasının çalışmaları olumsuz yönde etkilemesi sebebiyle böyle bir karar alınmış MAM kampüsünde. Tatile çıkanlar alınan bu karardan memnun, geride kalanlar ise ıssız koridorlarda vahşi batı kasabalarında yuvarlanan çalılar gibiler: Yalnız ve mutsuz.

Schindler’s List OST dinlerken okursanız halimizi biraz olsun anlayabilirsiniz :)

18
Tem

Adım adım neler yaptık anlatacağım demiştim, blog yazma konusunda istikrarsız olduğumu bildiğinizden inanmamışsınızdır tahminen. Yarı dönem değerlendirme formuna birkaç paragraf yazarken bile araya türlü türlü aktiviteler sokarak “yazma” işinden kaytaran ben, artık “macroblogger” olduğuma göre oturum adam gibi bir değerlendirme yazısı yazmak zorunda oluyorum değil mi? Evet, buyrun:

GSoC koordinatörü (yine) Renan hızlı, temiz ve sessiz bir iş çıkararak 3. kez yaz stajına kabul edilmemizi sağladı. Biz onu kod yazıyor ya da birileriyle yazışıyor sanıyorduk, meğer teklif metni yazıyormuş gizli gizli. Yaz döneminin büyük bir kısmında ofis dışında olmayı planlayan (ilk aylarda iş, sonraki aylarda tatil için) bir geliştirici olarak bu sene de GSoC danışmanlığı yapmayacağını düşünen ve yanılan bendeniz, 2. kez danışman olarak buldum kendimi. Danışman olduğum Jain Basil‘in ilgisi ve proje gözden geçirmenin en az kod yazmak kadar eğlenceli gelmeye başlaması, 2 aya yakın zamanı keyifli geçirmemi sağladı.

Proje, ev dizinindeki (şimdilik sadece KDE) ayar dosyalarındaki değişiklikleri takip etme, değişiklikleri yedekleyebilme, paylaşabilme ve geri alabilme için gerekli altyapının hazırlanmasını ve arayüzlerin yazılmasını kapsıyor. Detaylar için Jain Basil’in günlüğüne göz atabilirsiniz. “Bir ayar değiştirdim ama neredeydi unuttum, nereden geri alıyorduk bunu?” diyenler için kurtarıcı olacağından eminim.

Jain başvuruda bulunmadan, kodlamaya başlamadan önce yapılması gereken herşeyi yapmış, bunu başvuru mektubunda göstermiş ve başvuruları değerlendiren geliştiricilerin “E sadece kod yazmak kalmış, seçelim bu arkadaşı” demesini sağlamıştı. Aktif geliştirme süreci boyunca Jain iyi bir geliştirici olduğunu gösterdi, takvime uydu ve ilk dönemde geçer notu aldı.

SVN kayıtlarını ve Jain’in İngilizce günlüğünü takip etmeyenler için yaptıkları hakkında bir özet şöyle:

  • ~/.kde dizinini kullarak bir yerel GIT deposu oluşturan bir servis yazdı.
  • Dizindeki her değişikliği KDirWatch ile takip etme ve değişiklikleri GIT deposuna gönderme desteği ekledi.
  • Değişiklikleri görme ve geri almak için gerekli kitaplık metodlarını yazdı.
  • 2. dönem geliştireceği arayüz için örnek bir tasarımı depoya gönderdi.

SVN kayıtlarına, kodlara, geliştirici günlüğüne ya da yukarıdaki özete bakarak “ne var bunda, ben de yaparım bunu” diyenlerdenseniz, sizi bir sonraki sene yapılacak olan yaz stajına bekleriz. Proje geliştirmek zor değil. Enerjiniz, hevesiniz, zamanınız ve bu işi yapmak için tutkunuz varsa bu ekipte size de yer var. Selamlar.

17
Tem

Microblogging benim için bitmiştir dedim, haftada birkaç gez blog yazmak, hatta uzun (uzun derken, duruma alışana kadar 140 karakterden uzun ) yazmak şart oldu. Haftalık yazılardan biri bıraktığım Twitter ile ilgili olsun da “dargın ayrılmamış” olalım, hem de biten bu ilişkinin ardından içimi dökeyim.

Twitter’ı düzgün kullanmayı beceremeyip her yediğim haltı yazmaya başlayınca, ve takip ettiğim (hemen hemen) herkes benzer davranışlarda bulununca soğudum kendisinden. “Her şeyi yazmayayım; arayıp bulsunlar, sorsunlar; ” diyerek; biraz da e-posta/XMPP/RSS gibi standart değil, bir ürün olmasının kendisini gönül rahatlığı ile gözden çıkarılabilir iletişim kanalları arasına sokması sebebiyle geçtiğimiz hafta hesabımı kullanmayı bıraktım. Bundan sonra Pardus ile alakalı bilgilendirme işini başka ortamlarda süreceğim, özellikle bu blogda.

16
Tem

UEKAE’deki 2010 stajının ilk dönemi bugün sona erdi. Barış Akkurt, Mehmet Burak Aktürk, Doruk Altan, Caner Başaran, Deniz Gürsel, Eda Okur, Neslihan Şirin Saygılı ve Gökhan Göktürk stajlarını yıldızlı pekiyi ile tamamladı. Özgürlükİçin’in yeni fikir arayüzünü -UEKAE’den çok uzaklarda- Cihangir’deki Artİstanbul ofisinde geliştiren Ufuk Uzun ve Engin Manap bizimle fazla vakit geçiremeseler ve fotoğrafta yer alamasalar da, UEKAE’yi ziyarete geldikleri 2 gün boyunca yaptığımız Django sohbetlerinde “yıldızlı pekiyi”yi hakettiklerini gösterdiler.

Ayrıntıları yazmak, staj koordinatörü Renan‘ın hakkı. Geçen sene stajyerdi, bu sene staj koordinatörü oldu; hallerinden en iyi anlayan geliştirici olduğundan belki, bu görevi en iyi şekilde yerine getirdi. Üşenmeden hazırladığı “Pardus Yaz Stajı” kitapçığı ve tanıtım sunumu bazı geliştiricileri “bizim zamanımızda neredeydin Renan” diye sitem ettirdi, o kadar iyi oldu.

Başlıktaki cümle bugün ofisten ayrılmadan evvel, tatile çıkanlara ve geliştirici adaylarımıza güle güle derken çıkıverdi ağzımdan. Pek sevdim, her staj dönemi (ve belki Pardus eğitimi) sonrası bol bol kullacağım bir laf olacak sanırım.

Görüşmek üzere.

Bakımını yaptığım PiSi paketlerinin büyük kısmını başka geliştiricilere vermeye başladım geçen hafta. Yakında da (umarım) geçici olarak yürüttüğüm sistem yöneticiliği işini tam zamanlı olarak işe başlayacak sistem yöneticimize teslim edeceğim. Bu iş devirlerinin sebebi “ayrılık” değil, yanlış anlaşılmasın.

Bir seneye yakın zamandır birbirinden ayrı alanlarda iş yapıyor/takip ediyor olmam, her işe yeterince vakti ayıramamama ve işler arası geçiş yapaken kaybettiğim konsantrasyonum iş kalitesinin düşmesine sebep oluyordu. Çok sevdiğim yazılım geliştirme işine daha fazla vakit ayırmak, “sen ne zaman kod yazıyorsun?” diye soranlara “vakit mi var” cevabını vermemek ve ait olduğum sahalara geri dönmek için “mağdurum, şu işlerden bi kurtulsam” demem gerekiyordu; sağolsun arkadaşlar, ben geliştirici listesinde feryat etmeden üzerimdeki yükü aldılar. Bıraktığım PiSi paketlerine ve yakında bırakacağım sunucularımıza benden çok daha iyi bakacaklarına eminim. Paketlerimi ve sunucuları özleyeceğim, ama fazla değil.

Şimdi ne yapacaksın, günde 8 saat ne işle uğraşacaksınız diye sorar mısınız bilmem ama ben yine de cevaplayacağım. COMAR ve arkadaşlarının (konfigürasyon alyapısı, yönetim arabirimlerinin bir kısmı) ve Pardus Kurumsal’ın uzaktan yönetim sistemi Ahenk ve Ahenk’in yönetim arabirimi Lider’in geliştirilmesiyle uğraşacağım. UEKAE çalışanlarının tamamına yakınının ve Pardus ekibinin büyük kısmının tatile çıkacağı önümüzdeki iki hafta içinde ofiste kalıp özlediğim projelerle hasret gidermeyi ve 2 Ağustos ile başlayan hafta Ahenk’in Pardus Kurumsal 2′de kullanılabilir bir ön izleme sürümünü yayınlamayı planlıyorum. “Ahenk Mimarisi” ve “Ahenk Eklentileri Yazımı” belgelerini de bu ön izleme sürümüyle beraber yayınlayacağım. (Büyük laf ettik, o sürüm çıkacak).

20
May

Sürüm öncesi gün, herkes her zamanki gibi bilgisayar(lar)ının başında, yarın çıkacak Pardus 2009.2 Beta için çalışıyor. SVN depoları kayıtlarına bakılırsa (paket ve temel Pardus bileşenleri depoları), görüş alanımın dışındaki geliştiriciler de durmaksızın çalışıyor.

Paket güncellemelerini, yapılan çevirileri ve hata düzeltmelerini -bir geliştirici olarak bile- e-posta listelerinden takip etmek zor oluyor böyle günlerde. Kullanıcıların meraklarını gidermek, “kapalı kapılar ardında neler oluyor?” sorularını cevaplamak ve teknik işlere bir süre ara verip bir süre dinlenmek (sözde tembellik etmek) için, kısa da olsa “içeride” olanlardan bahsetmek ve eposta listelerini takip etmeyen/edemeyen kullanıcıların gözü/kulağı olmak gerekiyor haliyle.

Her sürüm öncesi yaptıklarımız, normalde yaptıklarımızdan farklı değil aslında. Sadece bazı işlere, diğerlerinden daha fazla vakit ayırıyoruz:

  • Temel Pardus bileşenleri (PiSi, COMAR, YALI, Müdür, Manager’lar, …)
  • CD ile beraber gelen paketler
  • Kritik (yeni sürümün çıkmasını engelleyecek türden) hatalar
  • Çeviriler
  • Görseller (duvarkağıtları, açılış ekranları)
  • Bilgilendirme metinleri (kurulum) ve sürüm notları

Liste kısa gibi duruyor, ancak her biri çok fazla alt iş içeriyor. Misal, temel Pardus bileşenlerindeki en ufak değişikliklerde yazılımın dağıtılabilir hale getirilmesi, paket deposuna eklenmesi ve güncel bir sistemde test edilmesi, anlatıldığı kadar kısa sürmüyor. Farklı dillerdeki çevirilerin denetlenmesi, çözüldüğü söylenen hataların tekrarlanmadığından emin olunması, kurulum testlerinin yapılması ise saatler sürebiliyor.

Her gün yaptıklarımız, bilgisayar başında geçirdiğimiz saatler, birkaç cümlede özetlenebiliyor ancak her zamanki yoğun çalışma temposunda, o birkaç cümleyi bile yazacak vakit olmuyor, ya da yazmak istediklerimiz birkaç cümleden daha fazla olmadığı için bloglamak garip geliyor. Suskunuz, ama bilin ki çalışıyoruz.

UEKAE’nin güvenlik prosedürü sebebiyle Gebze ofisine ya da mesafeler sebebiyle bir geliştiricinin evine gidip yaptıklarını göremiyorsunuz ama, “kapalı kapılar” ardında olanları izleyebileceğiniz pencereleri (e-posta listeleri, svn arayüzü) biliyorsanız şirinleri görebilirsiniz :)

İyi seyirler.

18
May

Ne zaman KDE ve Gnome tartışması çıksa, KDE’nin Windows’a benzemeye çalıştığı iddiası atılır ortaya. Gnome’un ve KDE’nin iyi/kötü yanlarını ortaya koymadan önce hep bu söylenir, garipserim. KDE kullandığım ev ve ofis bilgisayarlarımda, ekranın altında kullandığım panel dışında, Windows’la benzerlik gösteren bir öğe bulunmuyor. O panel de, aşağıda göründüğü gibi sade ve Windows’dakinden farklı yeteneklere sahip.

Misal, 6 sanal ekran ile çalışıyorum, sanal ekranlar arası geçiş ve pencerelerin yönetimi için panelin başında bir masaüstü sayfalayıcı öğesi kullanıyorum. Tek ekranda onlarca pencere arasında kaybolmadan işime odaklanabilmemi sağlıyor bu özellik. Şimdiye kadar çok fazla “pencere” kelimesi kullandım, sakın bunun Windows’a benzetmek için yeterli bir sebep olduğunu düşünmeyin. Pencere kavramı çok eskilere dayanıyor. Masaüstü sayfalayıcı da son Windows sürümünde geliyorsa, bunu yıllardır kullandığımızı söylemekte fayda var.

KDE’nin Windows’a benzeyip benzemediğini konusunda iddiaları sıralamadan önce, Windows’un ve KDE’nin nasıl olduklarından bahsedelim. Windows’un masaüstü ortamını birkaç cümle ile anlatmaya çalıştığınızda neler söylersiniz? En altta bir panel vardır, sol başında sistemdeki programlara ulaşabileceğiniz bir pencere tuşu, hemen yanında sık kullandığınız uygulamaların simgeleri, sonra çalışan uygulamaların bir listesi, sonra tarih/saat. Üzeri çok sevdiğiniz programlar, belge ve fotoğraflarınızla dolu kocaman bir çalışma alanı vardır bir de. Ekranın istediğiniz bölümüne programcıklar ekeyebilirsiniz bir de, Mac OS X’deki gibi:

KDE masaüstünü nasıl tanımlarsınız peki? Bunun tek bir cevabı yok ne yazık ki. İstediğiniz kadar özel, istediğiniz kadar sade yapabileceğiniz kadar esnektir. Kullanıcılarımızın çalışma ortamlarını paylaştığı Özgürlükİçin Tema bölümünde 800′den fazla tasarım bulabilirsiniz. “Çok özelleştirilebilir ise çok kaynak tüketir” demeyin, “ekleme” yapabildiğiniz kadar “çıkarma” da yapabilir. Ne kadar sade olabilir derseniz, aşağıdaki kadar “sade” (ya da boş) bir ekranda çalışabilirsiniz:

İstemediğiniz her parçayı atabilirsiniz. Sistem çekmecesini, sistem saatini, masaüstündeki simgeleri, pencere listesini… ALT+F2 tuş kombinasyonu ile açılan uygulama başlatıcıda, program ismine, sınıfına ve tanımına göre arama yaparak uygulamaları çalıştırabilir, ALT+TAB tuş kombinasyonu ile pencereler arasında gezebilirsiniz.

Windows’a benzemek mi? Bir kez daha düşünün. Çok özelleştirilebilir olduğu için çok mu kafa karıştırıcı? İsterseniz, bomboş bir ekranda çalışabiliyorsunuz, bu kadar sade bir ortamın neresi kafa karıştırıcı? :)

Özelleştirilebilir olunca, Windows’a da benzetebiliyorsunuz. İsterseniz elbette, mecbur değilsiniz. KDE, sizi herhangi bir kalıba mecbur bırakmıyor. Çalışma ortamınızı, istediğiniz kadar sade, istediğiniz kadar fonksiyonel hale getirebiliyorsunuz. Özgürsünüz.

Dilerseniz, KDE 4.4 ile birlikte gelen, Netbook’lar (ya da sade arabirimden hoşlanan kullanıcılar) için tasarlanan “Ara & Çalıştır” masaüstü arabirimini de kullanabilirsiniz:

Sade ama sadece bir duvarkağıdından ibaret olmayan bir çalışma ortamı istiyorsanız, otomatik gizlenen paneller ile aradığınız tadı yakalabilirsiniz. Aşağıda, çalışan pencerelerin listesini, sistem tepsisini (systray) ve saati barındıran ufak bir panele sahip bir çalışma ortamı görülebilir:

Duvarkağıdı, simgeler, pencere desenleri, yazıtipleri gibi her işletim sistemi ve masaüstü ortamında özelleştirilebilen öğeler üzerinde durmaya gerek duymuyorum, ancak yine de birkaç örnek göstermekte yarar var:

İstediğiniz gibi sadeleştirin, özelleştirin, kişiselleştirin. Özgürlüğün tadını çıkarın; ancak Windows’a benzemesini istemiyorsanız, Windows’a benzetmeyin.

15
Mar

ULAKBIM’deki bazı servislerimizin yedeklerini ve muhtemelen Pardus 2011 derleme tarlasını barındıracağımız sunucumuza PAE destekli bir Linux paketi kurup 4GB üzeri RAM’i yalandan kullanmak yerine, Kurumsal 2 x86_64 kurdum bugün.

Üniversite kütüphanesinin tozlu raflarında kalmaya mahkum olmayan bir bitirme tezi hikayesindeki ufak bir paragraf bu. Tarih 15 Mart 2010.

Başta ÇOMÜ asıllı Pardus geliştiricileri olmak üzere, emeği geçen herkese teşekkürler.

13
Mar

Bu yazı, staj başvurusunda bulunmak isteyenler ve Özgürlük İçin Podcast'teki staj ipuçları bölümü sonrası gözü korkanlar için. Staj başvurusunda bulunmak istemiyorsanız, Öİ Podcast'i dinlemediyseniz ya da gözünüz korkmadıysa bu yazısı okumayabilirsiniz :)

Geçen sene, staj duyuruları sonrası "Programcılar CV'leri Nasıl Okur?" başlıklı bir karikatürden bahsetmiş, başvuru yapanların nelere dikkat etmesi gerektiğini göstermeye çalışmıştım. Bugün yayınlanan Podcast'i dinlerken, karikatürün gereğinden fazla ciddiye alınabileceğini fark ettim. Sevgili Seda (Akay) ve Gizem (Belen), karikatürdeki "işletim sistemi ya da derleyici yazdıysanız puan kazanırsınız" derken, duyduklarım beni bile ürküttü. Geçen sene o karikatürü günlüğümde yayınlamam ve Gizem'e "geçen sene gönderdiğim karikatürde güzel tavsiyeler var" demem o kadar da iyi bir fikir değildi sanırım.

İşletim sistemi ya da derleyici yazmadıysanız, 3+ programlama dili bilmiyorsanız, bilgisayar kulübüne başkanlık yapmadıysanız, yarışma kazanmadıysanız korkmayın. Benim çizmediğim bir karikatür bu, bazı maddelerini çok beğendiğim için eklemiştim günlüğüme. Okunmasını tavsiye ederim (hâlâ), ama çok fazla da ciddiye almayın. "Pardus'a staja girmek, TÜBİTAK sınavını geçmekten zor" diye söylenmeyin, yok öyle bir şey :)

Ek: Karikatürü, Podcast'e konu olsun ve ziyaretçi sayım artsın diye yayınladığıma dair iddialar asılsızdır :)

5
Mar

4 senedir çalıştığımız Ulusal Metroloji Enstitüsü laboratuvarlarını geride bırakarak Ulusal Elektronik ve Kriptoloji Araştırma Enstitüsü içindeki (kısaltma kullanmayayım da yazı uzun görünsün) yeni ofislerimize geçtik bu hafta.

UME laboratuvarları iyiydi, güzeldi ama son zamanlarda Pardus ekibine dar geliyordu. Staj döneminde de öğrenci sayısını sınırlı tutuyor, daha kötüsü rahat bir çalışma ortamı sağlayamıyorduk. Yeni staj döneminde (detaylar çok yakında) önceki senelere daha fazla stajyer alabiliriz.

Eski ofis fotoğraftaki gibi, herkesin sürekli bir arada olduğu bir yerdi. Yeni ofislerimiz ise, yaklaşık 400m²'lik dev bir laboratuvardaki 10 odadan oluşuyor.

Fotoğraf çekme izni alabilirsek, Pınar'ın başlattığı 366 projesini devam ettirmeyi ve her gün bir fotoğraf yayınlamayı planlıyoruz.

Tebdil-i mekanda ferahlık varmış, bizzat tecrübe ettik :)

4
Mar

Bu yazıyı okuyabiliyorsanız, yazılım geliştirmek için gerekli teknik imkana sahipsiniz demektir. Bunun farkındaysanız, muhtemelen bu yazı size sıkıcı gelecektir; "Nasıl yani?", "İmkan derken?" ya da "Hani nerede?" diyorsanız, bu soruların cevaplarını (ve belki de Lost adasının sırlarını) da bu seride bulabileceğinizi umuyorum.

Baştan söyleyeyim: tavsiyelere uymanız Pardus geliştiricisi olmanızı garantilemez ve süper programlama becerilerine sahip olmanızı sağlamaz. Süper programlama becerisine sahip olmak için Balmer Peak'e ulaşmayı deneyebilirsiniz.

Halet-i Ruhiye

  • Sabırlı olun. Herşeyi bir anda öğrenmeniz mümkün değil. Aşırı yükleme yapıp dumanlar tüter halde dolaşmanızı kimse istemez. Yorum bölümünde sevgili Çetin'in hatırlattığı 10 Yılda Programlama Öğrenin makalesi okumanızı öneririm. Peter Norvig, programlamanın neden birkaç günde/haftada öğrenilemeyeceğini anlatıyor.
  • İngilizce öğrenin. En azından, teknik belgeleri okuyabilecek kadar. Kullanacağınız uygulamaların ve okuyacağınız kaynak kodlarının (evet, bol bol kaynak kodu okumanız gerekecek) İngilizce olacağını unutmayın. Okumanızı önereceğim belgelerin büyük bir kısmı ne yazık ki İngilizce olacak.
  • Bir işi yapmanın farklı yollarını arayın. Merak edin, merak iyidir. Araştırın, okuyun, bol bol kod yazın.

Posta Kutusu

  • Yoksa hemen bir tane e-posta adresi edinin. GMail'den iyisini görmedim. GMail hesabınız varsa, Google'ın sunduğu diğer hizmetlerden de faydalanabilirsiniz, serinin ilerleyen bölümlerinde bu servislerden sıkça söz edeceğim.
  • Adres içinde takma isim kullanmayın, isim bölümüne "LiNuX cOdEr" gibi komik şeyler yazmayın. Ciddiye alınmazsınız.
  • E-posta imzanızı kısa tutun. İsim, ünvan ve şirket/proje ismi yeterlidir, sahibi olduğunuz 20 web sitesi kimsenin umrunda olmayacağı gibi, ciddiyetinizden şüphe edilmesine sebep olabilir.
  • Nasıl Akıllıca Sorular Sorulur ve e-posta listeleri etiği belgelerini mutlaka okuyun. Liste etiğine uymayanlara cevap vermeyen bir ofis dolusu insan tanıyorum, haklılar da.

Çalışma Alanı & Araçlar

  • Konsol kullanmayı öğrenin, işlerinizi konsolda yapmaya alışın. Konsol size hız kazandırır. Kullanabileceğiniz uygulamaların geniş bir listesini A'dan Z'ye konsol uygulamaları sayfasında bulabilirsiniz.
  • Rahat kod yazabileceğiniz bir metin editörü ya da bir IDE bulun. Ben VIM kullanıyorum, konsolda çalışan editörlerin IDE'lerden çok daha kullanışlı ve hızlı olduğunu düşünüyorum. VIM kullanmayı denemeden önce kullanım kılavuzunu okumayı unutmayın. "Nereden kapanıyordu bu?" diye gelirseniz pis pis sırıtırım karşınızda :) Emacs da harikadır, lakin VIM daha kolay geliyor bana.
  • En az bir sürüm kontrol (revision control) sistemi kullanmayı öğrenin. Biz SVN kullanıyoruz, fena değil.
  • Python öğrenin. Hep söylerim, Pardus bir kısaltma olsaydı (ki değil), P kesinlikle Python olurdu. Hızlı geliştirme yapılabilen, güçlü bir dil.

Aklıma gelenler şimdilik bu kadar, iyi eğlenceler.

28
Şub

Bilgisayar Mühendisliği Öğrencileri Kongresi'nin altıncısı Konya Selçuk Üniversitesi'nde yapıldı. Mühendis adaylarının, bir işletim sisteminin pazarlamacılarıyla değil, geliştiricileriyle buluşmaları gerektiğini düşündüğümüzden hem sponsor olduk, hem de geliştiriciler olarak aralarında yer aldık.

"Mühendislik ve geliştirmeyi bize bırakın, siz bizim araçları kullanarak web sayfası ve muhasebe uygulaması falan yapın" mesajı veren, mühendislikle uzaktan yakından ilgisi olmayan bir pazarlamacının peşinde "Hocam, hocam" diye koşturan birkaç bilgisayar mühendis adayına fena halde kızsak ve üzülsek de, geleceği şekillendirmeye aday öğrencilerle tanışmak, konuşmak ve atölyede çalışmaktan büyük mutluluk duyduk.

Staj döneminde, fotokopi çekmekten öte işler de yapılabileceğini, bunun için "dayı" torpili gerekmediğini anlattık, elbette bunun nasıl hak edileceği ile birlikte. Biz seminerlerde, atölyelerde, standda ve çay sohbetlerinde defalarca (asla sıkılmadan) söylesek de, sanırım mühendis adaylarının kafalarındaki "ben de yapabilirim" düşüncesi, Çanakkale Onsekiz Mart Üniversitesi öğrencilerinin 64bit Pardus sunumu sonrasında oluştu. Birkaç öğrencinin, Pardus geliştiricisi olma hikayesi, ÇOMÜ ve TÜBİTAK arasında imzalanan protokol ve ortaya çıkan ürünün kenara konup unutulacak sıradan bir okul projesi olmadığı gerçeği, zıplayan çaydanlık animasyonunun ne kadar kolay yapılabildiğinden çok daha etkileyiciydi.

Artık herkes farkında. Özgür yazılım, ücretsiz yazılım demek değil. Kod, satır satır satılan bir mal olmadığı gibi, özgür yazılım geliştiricileri fotosentez yapan organizmalar değil. "Bu işte para kazanamazsınız" yalanını, yalanı uyduranlar bile söylemiyor artık, bir kralcılar kaldı bunu devam ettiren. İki tıkla web sayfası, üç tıkla muhasebe uygulaması [1] yazmayı bırakın. Arayüzlere [2] değil, kaynağa hükmedin. Sizin görev yeriniz orası, aldanmayın.

[1] Bir grup mühendis adayına "Bakın birkaç tıklama ile, ne kadar kolay" mesajı veren pazarlamacılara ithafen söyledim bu sözleri. "Üç tıkla muhasebe uygulaması yazılmaz" türündeki mesajlarınızı "ben saydım, 1000 tıkla yazılır" cümlesi ile bir tutup eşe dosta anlatırım, uyarmadı demeyin.

[2] "Mühendis arayüz tasarımı yapmaz" anlamı çıkarmayın, demedim. Çıkaranlar oldu, üzüldüm, cevap vermeye çalıştım, birkaç yorum sonra XKCD'deki bir karikatür geldi aklıma, pes ettim.

20
Şub

ÇOMÜ 64bit Atölye Çalışması sonrası eve dönerken, Fatih ve Ozan boş durmadı ve tek kaynak depoda birden fazla mimarinin desteklenmesi için gerekli PISI değişikliklerini yapmaya başladı, laptop pilleri bitene dek 3 özelliği tamamladılar.

Tekirdağ'a girerken yaptığım "Paket imzalamayı da yapsaydınız" nüktesi, ilk mola yerinde imzalama ile ilgili mini bir tartışma başlattı, hal böyle olunca da yolun kalan kısmında kodu yazmak kaçınılmaz oldu. Bilgisayarımın pili dayanmadı bu heyecana, 5 dakika geçmeden kapanıverdi, pile servis yolu göründü.

Eve dönünce kodu yazmaya mecbur hissettim kendimi. Sait Faik gibi, "yazmasam deli olacaktım". Kısa bir sürenin ardından ~60 satırlık bir Python modülü çıktı ortaya. Konsol uygulaması haline getirince ~100 satır, dökümantasyonla birlikte ~190 satır oluverdi. Paket imzalama işi için bunu kullanır mıyız bilmiyorum ama, OpenSSL ve Python ile bu işin ne kadar kolay halledilebileceğini keşfetmek eğlenceliydi.

Betiğe ve dökümanlara buradan ulaşabilirsiniz. Anahtar ve (self-signed) sertifika oluşturmak için yapılması gerekenleri de yazdım, afiyet olsun.

26
Ara

ÇOMAR ve PiSi kardeş, sanırım herkes biliyor bunu. Biri paketleri kuruyor, güncelliyor; diğeri kurulu paketlerin yapılandırma işlerini üstleniyor. Peki, ÇOMAR ve PiSi beraber nasıl çalışıyor? Paket yapıyorsanız ya da yapmak istiyorsanız, eninde sonunda "ÇOMAR betiği yaz" diyecektir birileri size, ve elbet bu soruyu soracaksınız. PiSi paketi yapmak çocuk oyuncağı olduğundan, diğer paketlerdeki ÇOMAR betiklerini alıp ufak değişikliklerle kendi PiSi paketlerinizde kullanabildiğinizden cevabını bilmemeniz ya da öğrenmemeniz muhtemelen uzunca bir süre etkilemez sizi, ama paket yapım işinizi kolaylaştırabilir de.

PiSi kaynak paketlerinde (pspec.xml), ikili paketin (.pisi uzantılı) sağladığı ÇOMAR görevlerinin ve her görevin hangi Python dosyası tarafından sağlandığının listesi bulunur:

    <Package>
        <Name>python</Name>
        <Files>
            ...
        </Files>
        <Provides>
            <COMAR script="package.py">System.Package</COMAR>
            <COMAR script="packhandler.py">System.PackageHandler</COMAR>
        </Provides>
    </Package>

Betikler, kaynak paket ile aynı dizindeki comar/ dizininde (hiç akla gelmez, değil mi?) bulunur. System.Package, System.PackageHandler ve System.Service dışındaki görevler PiSi ile ilgili olmadığından başka bir yazının konusu, bunlar muhtemelen Sistem Ayarları ekranındaki uygulamalardan birinin ihtiyaç duyduğu altyapıyı sağlar.

System.Package görevini yerine getiren betik, paket kurulduktan sonra, kaldırılmadan önce ve kaldırıldıktan sonra çalıştırılacak metodları içerir. Betik içinde, metodlardan herhangi birinin tanımlı olması zorunlu değildir. Dosya haklarını ve sahiplerini değiştirecekseniz postInstall() metodu, paket kaldırılmadan önce ayar dosyalarında değişiklik yapacaksanız (mod_php'yi kaldırmadan önce Apache ayarlarını değiştirmek gibi) preRemove() metodu, paket kaldırıldıktan sonra artık dosyaları temizleyecekseniz postRemove() metodu kodlarınızı yazmanız gereken yer.

import re

def postInstall(fromVersion, fromRelease, toVersion, toRelease):
    module_enable('PHP5')

def preRemove():
    module_disable('PHP5')

def module_enable(mod):
    ...

def module_disable(mod):
    ...

System.PackageHandler'da durum biraz daha farklı. Bu betikler, betiğin çıktığı paket kurulması/kaldırılması sırasında değil, sisteme herhangi bir paket kurulduğunda ya da kaldırıldığında çalıştırılıyor. Çekirdek modülleri ve Python kütüphaneleri gibi, paket deposunda onlarcası bulunan ve hepsine birer System.Package betiği yazsanız üç aşağı beş yukarı aynı betiğin ortaya çıkacağı paketlerde, paketçinin yükünü ve kod tekrarını azaltmak için kullanılıyorlar.

Django paketini kurduğunuzda, sistemdeki her System.PackageHandler betiği çalıştırılır ve betik içindeki metodlara, pakete ait iki XML dosyası parametre olarak verilir: metadata.xml ve files.xml. Bu dosyalardan ilki, pakete ait kimlik bilgilerinin barındırır, ikincisi ise, paketten çıkan her dosyayı ve dosyalara ait özet bilgileri. ÇOMAR betikleri, files.xml dosyasında, kendilerini ilgilendiren bir dosya varsa (mesela, Python'a ait SPH betiği, ikili paket .py dosyası içeriyorsa) ya da metadata.xml'de ilgili oldukları bir veri/etiket bulunuyorsa işlem yaparlar.

Python'a ait SPH betiği aşağıda, yeni başlayanlar için ağır bir örnek ancak örnek olsun diye yazacağım basit bir betik gerçekçi olmazdı.

import piksemel
import sys
import os

pythonPath = "/usr/lib/python%d.%d" % sys.version_info[:2]

def byteCompile(filepath):
    doc = piksemel.parse(filepath)
    paths = []
    for item in doc.tags("File"):
        path = item.getTagData("Path")
        if path.endswith(".py"):
            paths.append("/"+path)

    if paths:
        os.system("/usr/bin/python %s/py_compile.py %s" % (pythonPath, " ".join(paths)))

def removeByteCompiled(filepath):
    doc = piksemel.parse(filepath)
    for item in doc.tags("File"):
        path = item.getTagData("Path")
        if path.endswith(".py"):
            try:
                # Remove .pyc and .pyo
                os.unlink("/%sc" % path)
                os.unlink("/%so" % path)
            except OSError:
                pass

def setupPackage(metapath, filepath):
    byteCompile(filepath)

def postCleanupPackage(metapath, filepath):
    removeByteCompiled(filepath)

Bu gecelik bu kadar...