Hani hayatında tek satır kod yazmamış adamlar, “kardeşim açık kaynak, kodu aç bak hemen anlarsın” diye Linux forumlarında sallarlar ya (kod yazmış olsa onu demez zaten!) bu meseleye uzun süredir takılmıştım.
Zaman zaman “kodu açıp bakıyorum”. En son xrandr’ın koduna baktım; çok şahaneydi tadından yiyemedim.
Doğrusu, çoğu açık kaynak kodlu projeden çok daha okunur bir koddu.
Fakat, açık kaynak kodlu projelerin çok ciddi bazı problemleri var. Bunlardan biri, programcıların “zeki görünme” çabası. Böyle bir durum henüz bizde yok. (Kod yokki üstüne konuşup yorum yapalım!). Dünyada da fazla var diyemem; ama çok ciddi projelerde bile bazı sivriler çıkıp “ineğe bak, öle mi yazılır lan o kod” diye ahkam kesiyor. Dolayısıyla, programcılar daha zeki görünmek için acaip karmaşık şeyler yazıyorlar. Programlama dillerinin çoğu, çok basit bir işi çok karmaşık göstermenize izin verecek esnekliğe sahipler; olmadıkları zamanlarda bile birileri öyle göstermenin yolunu kolayca bulabiliyor.
Gereğinden karmaşık yazmanın sadece bu kadar basit bir nedeni olmadığını düşünüyorum.Örneğin, bir sürücü kodunu ne kadar karmaşık yazarsanız, kodu açmanız durumunda rakipleriniz ne yaptığınızı anlayıp kendi ürünlerine uyarlamakta o kadar gecikirler. Yani işin biraz da maddi yönü sözkonusu. Bugün Çin, Hindistan gibi ülkelerde merdiven altı kart üreten ve oturup sürücüsünü de kendisi yazan adamlar var. İnanması güç ama gerçek.
Açık kaynak kodlu yazılımın bir diğer düşmanı da, kullanıcı ve geliştirici açısından, yetersiz dökümantasyon. Artık ciddi projelerin çoğunun yeterli dokümantasyonu mevcut. Hem geliştirici, hem de kullanıcı için. Öte yandan, örneğin KDE projesi için çok ama çok ciddi kaynak sıkıntısı var. Örneğin, yapılandırma dosyalarındaki hangi ayarın ne işe yaradığını anlatan tek sayfa yazı bulamazsınız. Bazı basit ayarlarla ilgili bilgi var; ama açıkçası Pozitif Linux’da resmen reverse engineering yaptım. Bu esnada, elimde KDE ile ilgili ciddi bir doküman kaynağı da oluştu; hatta üşenmeyip masaüstünde bunun için basit bir WIKI bile oluşturdum; ama defterler hala duruyor:)
Compiler ya da Interpreter’lar çok zeki değildir. Çok basit ama farkı çok somut görebileceğiniz bir örnek vereyim: örneğin, 1′den 100′e kadar olan sayıları bir For döngüsü içinde toplamak yerine, sırayla toplarsanız, kodunuz çok daha hızlı çalışır. While kullanırsanız, for’dan da yavaş bir sonuç alırsınız. Bazen, bazı dillerle gelen hazır kütüphaneler de ayağınızı kaydırır; örneğin Python ile sistem bilgilerini API aracılığıyla almak, shell’den komut çalıştırıp -örneğin lspci- çıktısını almaktan genelde daha uzun sürer.
Kısacası, çoğu özgür yazılımın giderek özgürlükten uzaklaştığını düşünüyorum; sanki kodu giderek karmaşık hale getirerek, çok az insanın anlayabileceği, “elitist” bir yaklaşım içine giriyorlar. Kod içindeki açıklamalar yok olmaya başlıyor, kodlar uzuyor, kimi zaman bloklama yapmak gibi zahmetlere filan bile girilmiyor. Üstelik, bu çok “hince” bir yaklaşım. Çünkü hem “kodlar açık işte” diye insanları çekiyorlar, sonra da anlamasınlar diye ekstra çaba harcıyor, hatta muhtemelen programların olması gerektiğinden daha yavaş çalışmalarına neden oluyorlar.