GNU Projesi
Yazan: Richard Stallman
"Açık Kaynaklar" kitabında yayınlanmıştır
İlk yazılım paylaşma topluluğu
1971 yılında MIT Yapay Zekâ Laboratuvarında çalışmaya başladığımda, yıllarca varlığını sürdürmüş bir yazılım paylaşım topluluğunun bir parçası haline geldim. Yazılımların paylaşılması özel topluluğumuzla sınırlı değildi; bu, bilgisayar tarihi kadar eskiydi, tariflerin paylaşılmasının aşçılık kadar eski olması gibi. Ancak bunu çok iyi bir şekilde başardık.
YZ Laboratuvarı, zamanın en büyük bilgisayarlarından biri olan Digital PDP-10 için laboratuvar ekibi hacker’larının tasarladığı ve assembler dilinde yazdığı ITS (Uyuşmaz Zaman Paylaşımlı Sistem) olarak adlandırılan bir zaman paylaşımlı işletim sistemini kullanmaktaydı. Bu topluluğun bir üyesi, YZ laboratuvar sistem hacker’ı olarak, benim görevim bu sistemi daha da geliştirmekti.
Yazılımımızı “özgür yazılım” olarak adlandırmadık çünkü o zamanlar bu terim yoktu ancak gerçekte bu özgür yazılımdı. Başka bir üniversiteden ya da firmadan insanlar programımızı almak ve kullanmak istedikleri zaman, buna memnuniyetle izin veriyorduk. Birinin pek bilinmeyen ve ilginç bir program kullandığını görürseniz, her zaman kaynak kodunu görmek istersiniz, böylece kaynak kodunu okur, değiştirir ya da yeni bir program oluşturmak için, parçalayıp başka şekilde birleştirirsiniz.
(1) Yaygın medyada “güvenlik kırıcısı”nı ifade etmek için “hacker”ın kullanılması kafa karışıklığı yaratır. Biz hacker’lar bu ifadeyi kabul etmeyiz ve hacker’ın kelime anlamı olarak “Programlamayı ve bu konuda akıllı olmayı seven kimse” tanımını kullanmayı tercih ederiz
Topluluğun Çöküşü
1980’lerin başlarında Digital'in PDP-10 bilgisayarı üretiminin sona ermesiyle durum büyük ölçüde değişti. 60larda şık ve güçlü olan mimarisi, 80lerde uygun hale gelen daha geniş adres uzaylarına doğal olarak genişleyemedi. Bunun anlamı ITS'ye yönelik olarak yazılmış olan bütün programların geçersiz hale gelmesiydi.
YZ laboratuvarı zaten çökmüştü. 1981 yılında, Symbolics firması YZ Laboratuvarındaki hacker’ların hemen hemen hepsini işten çıkardı ve bu topluluk dağıldı. (Steven Levy tarafından yazılan Hackers kitabı bu olayları anlatmaktadır ve ayrıca bu topluluğa ilişkin açık bir tablo sunmaktadır.) YZ Laboratuvarı 1982 yılında yeni bir PDP-10 satın aldığında, yöneticileri, yeni makine üzerinde ITS yerine özgür olmayan bir zaman paylaşımlı sistemi kullanmaya karar verdi.
VAX ya da 68020 gibi zamanın modern bilgisayarları kendi işletim sistemlerine sahipti ancak bu işletim sistemlerinin hiçbiri özgür yazılım değildi: çalıştırılabilir bir kopya elde etmek için, bir gizlilik anlaşması imzalamanız gerekliydi.
Bu, bir bilgisayarın kullanımındaki ilk aşamanın komşunuza yardım etmemeye söz vermeniz olduğu anlamına geliyordu. Bu duruma göre, bir topluluğun işbirliği yapması yasaktı. Özel mülk yazılım sahipleri tarafından ortaya konan kural şuydu: “Komşunuzla bilgi paylaşırsanız siz bir korsansınız. Herhangi bir değişiklik isterseniz, bu değişikliğin yapılmasını bizden rica edin.”
Özel mülk yazılım sosyal sistemi, yazılımı paylaşmanıza ya da değiştirmenize izin vermeyen sistem, anti-sosyaldir, etik değildir, basitçe ifade edilirse yanlıştır, bu durum bazı okuyucular için şaşırtıcı olabilir. Ama toplumu bölen ve kullanıcıları çaresiz bırakan bir sistem hakkında başka ne söyleyebiliriz? Bu fikri şaşırtıcı bulan okuyucular bu özel mülk yazılım sosyal sistemini verildiği gibi almış olabilir ya da özel mülk yazılım işlerinin önerdiği şekilde değerlendirebilir. Yazılım yayıncıları, insanları, bu konuya yönelik tek bir bakış açısı olduğuna inandırmak için uzun ve zorlu bir çalışma yürütmüşlerdir.
Yazılım yayıncıları “haklarını” “almak” ya da “korsanlığı durdurmak” hakkında konuştukları zaman, gerçekte “söyledikleri” şey ikincil öneme sahiptir. Bu ifadelerin gerçek mesajı, ifade edilmeyen varsayımlardadır; insanların üzerine kafa yormadan bunları kabul etmesi beklenmektedir. Şimdi bunları inceleyelim.
Yapılan varsayımlardan biri şudur: Yazılım firmaları yazılımı sahiplenme ve tüm kullanıcıları üzerinde güce sahip olma gibi sorgulanamayan doğal bir hakka sahiptir (Bu doğal bir haksa, o zaman topluma ne kadar zarar verdiği önemli değildir, buna karşı koyamayız.). Amerikan Anayasası ve yasal geleneği bu görüşe karşı çıkmaktadır; telif hakkı doğal bir hak değildir ancak telif hakkı kullanıcıların doğal kopyalama hakkını sınırlandıran ve hükümet tarafından dayatılan yapay bir tekeldir.
İfade edilmeyen başka bir varsayım, yazılım hakkındaki önemli tek şeyin size hangi işleri yapmaya izin verdiğidir, biz bilgisayar kullanıcılarının ne tür topluluklara sahip olmaya izinli olduğumuza aldırmamalıyız.
Üçüncü bir varsayım, bir firmaya programın kullanıcıları üzerinde güç sunmazsak, kullanılabilir bir yazılıma sahip olmayacağımızdır (ya da şu ya da bu belirli işi gerçekleştiren bir programa asla sahip olamayacağımızdır). Özgür yazılım hareketinin üzerlerine zincir vurmadan da çok sayıda yararlı yazılım üretebileceğini göstermesinden önce bu varsayım uygunmuş gibi görünmüş olabilir.
Eğer bu yaklaşımları kabul etmeyi reddedersek ve bu konuları basit bir sağduyu ile, kullanıcıları öncelleyerek irdelersek, çok farklı bir sonuca varırız. Bilgisayar kullanıcıları, ihtiyaçlarına uygun olması için programlarını değiştirme ve yazılımlarını paylaşma konusunda özgür olmalıdır çünkü diğer insanlara yardımcı olmak toplumun temelidir.
Burada bu sonuca varmayı açıklamaya yetecek yer kalmadı, bu yüzden okuyuculara http://www.gnu.org/philosophy/why-free.html sayfasını öneririm.
Yalın Ahlaki Seçim
Topluluğumuzun sona ermesiyle, daha önceki gibi devam etmek mümkün değildi. Bunun yerine, bir yalın ahlaki seçimle karşı karşıya geldim.
Kolay seçenek özel mülk yazılım dünyasına katılmak ve gizlilik anlaşmaları imzalamak ve hacker arkadaşlarıma yardımcı olmamaya söz vermekti. Muhtemel olarak ben de bu gibi anlaşmalara uygun olarak hazırlanan yazılımlar geliştiriyor olacaktım, böylece diğer insanların da hacker arkadaşlarına ihanet etmesine ilişkin baskıyı arttıracaktım.
Bu şekilde para kazanacaktım ve belki de kod yazmaktan da zevk alacaktım. Ama iş hayatımın sonunda, insanları bölmek için duvarlar inşa ettiğim yılları görecek ve yıllarımı dünyayı daha kötü bir yer haline getirmekle geçirmiş olduğumu fark edecektim.
Birileri yazıcımıza ait kontrol programı için kaynak kodunu bana ve MIT YZ laboratuvarına vermek istemediğinde, bir gizlilik anlaşmasının alıcı ucunda olduğumu anladım. (Bu programdaki belirli özelliklerin olmaması yazıcının kullanımını bozmaktaydı.) Bu nedenle, bu gibi anlaşmaların masum olduğunu kendime söyleyemem. Yazıcı programı benimle paylaşılmayınca çok sinirlendim; vazgeçip, arkamı dönüp ben de aynı şeyi bir başkasına yapamazdım.
Kolay olan ancak hoş olmayan başka bir seçenek bilgisayar alanını tamamen bırakmaktı. Böylece yeteneklerim kötüye kullanılmamış olacaktı ama boşa harcanmış olacaktı. Bilgisayar kullanıcılarını bölme ve sınırlama konusunda suçlamayı hak etmeyecektim ama bu, bir şekilde gerçekleşecekti.
Bu nedenle, bir programcının iyi birşeyler yapabilmesi için bir yol aradım. Kendi kendime, bir topluluğu yeniden mümkün hale getirebilecek bir programı yazabilip yazamayacağımı sordum.
Yanıt açıktı: ilk olarak ihtiyaç duyulan şey bir işletim sistemiydi. İşletim sistemi, bir bilgisayarın kullanılabilmesi için gerekli yazılımdı. Bir işletim sistemiyle, birçok şey yapabilirsiniz; ancak işletim sisteminiz olmazsa, bilgisayarı çalıştıramazsınız. Özgür bir işletim sistemiyle, yine işbirliği yapan bir hacker topluluğumuz olabilir ve herkesi bu topluluğa katılmaya davet edebiliriz. Ve herkes, arkadaşlarını mahrum etmeden bir bilgisayarı kullanabilir.
Bir işletim sistemi geliştiricisi olarak, bu iş için doğru yeteneklere sahiptim. Bu nedenle, hak ettiğim başarıyı elde edebileceğimi düşünmesem de, bu iş için seçilmiş kişi olduğumu düşünüyordum. Sistemi Unix ile uyumlu olacak şekilde seçtim, böylece sistem taşınabilir bir sistem haline geldi ve böylece Unix kullanıcıları kolayca bu sisteme dönebildi. Hacker geleneğini takiben özyineli bir isim olan GNU ismi - GNU's Not Unix - seçilmişti.
Bir işletim sistemi, yalnızca diğer programları çalıştırmak için yeterli olan bir öz anlamına gelmemektedir. 1970’lerde, her işletim sistemi, komut işlemcilerini, assembler’ları, derleyicileri, yorumlayıcıları, hata ayıklama birimlerini (debugger), metin düzenleyicilerini ve çok daha fazlasını içermekteydi . ITS’te, Multics’te, VMS’te ve Unix’te bunlar vardı. GNU işletim sistemi de bunları içerecekti.
Daha sonra Hillel’e atfedilen (1) şu sözleri duydum:
Ben kendim için değilsem, benim için olacak kimdir?
Ben yalnızca kendim içinsem, ben neyim?
Şimdi değilse, ne zaman?
GNU projesini başlatma kararı benzer bir ruhu esas almaktadır.
Bir ateist olarak, dini liderleri izlemiyorum ama bazen dini liderlerden birinin söylediği bir sözü beğendiğimi fark ediyorum.
"Free Software"'deki “Free” Özgürlük Anlamındadır
“Free Software" (İngilizce'de "Free" hem özgür hem de ücretsiz anlamlarına gelmektedir) ifadesi bazen yanlış anlaşılmaktadır, buradaki "free" ifadesinin ücretle bir ilgisi yoktur. Burada "free" ifadesi özgürlükle ilgilidir. Bu nedenle, burada özgür yazılımın tanımı: aşağıdaki şartlar yerine getirildiğinde, sizin gibi belirli bir kullanıcı için, bir program özgür bir yazılımdır:
- Herhangi bir amaçla programı çalıştırma özgürlüğüne sahipseniz.
- İhtiyaçlarınıza uygun olacak şekilde programı değiştirme özgürlüğüne sahipseniz. (Bu özgürlüğü, uygulamada etkin hale getirmek için, kaynak koduna erişebilmelisiniz, çünkü kaynak kodu olmaksızın bir programda değişiklikler yapmak aşırı zordur.)
- Kopyaları ücretsiz olarak ya da belirli bir ücret karşılığında yeniden dağıtma özgürlüğüne sahipseniz.
- Toplumun gelişmelerden faydalanmasını sağlamak için, programın değiştirilmiş sürümlerini dağıtma özgürlüğüne sahipseniz.
“Özgür” (Free) özgürlüğe atıf yaptığı ve fiyata atıf yapmadığı için, kopyaların ve özgür yazılımın satılması arasında bir çatışma yoktur. Gerçekte, kopyaları satma özgürlüğü çok önemlidir: CD-ROM’larda satılan özgür yazılım koleksiyonları, toplum için önemlidir ve bunların satılması, özgür yazılımın gelişimi için gerekli paranın toplanması için önemlidir. Bu nedenle, insanların bu kolleksiyonlara ekleyemediği bir program özgür yazılım değildir.
“Özgür”ün (Free kelimesinin İngilizce'deki) anlam belirsizliğinden dolayı, insanlar uzun süre alternatif bir ifade arayışına girmiştir ancak hiç kimse uygun bir alternatif bulamamıştır. İngiliz Dili, başka herhangi bir dilden daha fazla sözcüğe ve nüansa sahiptir ancak özgürlükteki gibi “özgür” anlamına gelen basit, belirsizlikten uzak bir sözcüğü içermemektedir , “zincirsiz” anlamca en yakın gelen sözcüktür. “Özgür bırakılmış”, “özgürlük” ve “açık” yanlış bir anlama ya da başka bazı dezavantajlara sahiptir.
GNU Yazılımı ve GNU Sistemi
Bütün bir sistem geliştirmek çok büyük bir projedir. Sonuca ulaşmak için, her mümkün olduğunda, özgür yazılımın mevcut parçalarını uyarlamaya ve kullanmaya karar verdim. Örneğin, başlangıçta temel metin biçimlendirici olarak TeX’i kullanmaya karar verdim, GNU için başka bir pencere sistemi yazmak yerine X Window Sistemini kullanmaya karar verdim.
Bu karardan dolayı, GNU sistemi, tüm GNU yazılımının koleksiyonuyla aynı değildir. GNU sistemi, GNU yazılımı olmayan, kendi amaçları için diğer insanlar ve projeleri tarafından geliştirilen ancak özgür yazılım oldukları için kullanabildiğimiz programları içerir.
Projenin Başlatılması
1984 yılının Ocak ayında MIT’deki görevimden ayrıldım ve GNU yazılımını geliştirmeye başladım. MIT’den ayrılmam gerekliydi, çünkü MIT’nin GNU’nun özgür yazılım olarak dağıtımını kısıtlamasını istemiyordum. Ekipte kalsaydım, MIT bu çalışmayı sahiplenebilirdi ve kendi dağıtım kurallarını dayatabilirdi ve hatta bu çalışmayı özel mülk yazılım paketine dönüştürebilirdi. Çalışmaların sonuçsuz kalmasını ve başarısız olmasını istemiyordum, amacım yeni bir yazılım paylaşım topluluğu oluşturmaktı.
Bununla birlikte, o zamanlarda MIT YZ Laboratuvarının başında bulunan Profesör Winston, beni, kibarca laboratuvarın olanaklarını kullanmaya devam etmem yönünde teşvik etti.
İlk Adımlar
GNU projesine başlamadan kısa süre önce, VUCK olarak da bilinen Özgür Üniversite Derleyici Kitini duymuştum. (Hollanda dilinde “özgür”e ilişkin kelime V harfi ile yazılmaktadır) Bu, C ve Pascal dahil olmak üzere çok sayıda dili kontrol etmek ve çok sayıdaki hedef makineyi desteklemek için tasarlanmış bir derleyiciydi. GNU’nun bunu kullanıp kullanamayacağını sormak için yazarına yazdım.
Alaycı bir yanıt yazdı, üniversitenin özgür olduğunu ancak derleyicinin özgür olmadığını söyledi. Bu nedenle, GNU projesi için ilk programımın çok-dilli çok platformlu bir derleyici olmasına karar verdim.
Tüm derleyiciyi kendi kendime yazma ihtiyacımı önleme umuduyla, Pastel derleyicisine ilişkin kaynak kodu edindim, Pastel derleyicisi, Lawrence Livermore Laboratuarında geliştirilmiş çok-platformlu bir derleyiciydi. Kendisinin de yazılmış olduğu, Pascal'ın sistem programlama dili olarak tasarlanmış genişletilmiş bir sürümünü destekliyordu. Bir C ön ucu [:front-end] ekledim ve Motorola 68000 bilgisayarına yüklemeye başladım. Derleyicinin megabaytlarca yığıt [:stack] alanına ihtiyaç duyduğunu ve mevcut 68000 Unix sisteminin yalnızca 64k’ya izin verdiğini fark ettiğimde bundan vazgeçtim.
Daha sonra, Pastel derleyicisinin tüm giriş dosyasını bir sözdizim ağacına ayrıştırarak çalıştığını, tüm sözdizim ağacını bir “yönerge” zincirine dönüştürdüğünü ve daha sonra, herhangi bir depolama alanını boşaltmaksızın tüm çıkış dosyasını ürettiğini fark ettim. Bu noktada, yeni bir derleyici yazmam gerektiği sonucuna vardım. Bu yeni derleyici şimdi GCC olarak bilinmektedir; içinde Pastel derleyicisi kullanılmamaktadır ancak yazmış olduğum C ön ucunu uyarlamayı ve kullanmayı sağladım. Ancak bunu birkaç yıl sonra gerçekleştirdim; ilk olarak, GNU Emacs üzerinde çalıştım.
GNU Emacs
1984 yılının Eylül ayında GNU Emacs üzerinde çalışmaya başladım ve 1985 yılında, GNU Emacs kullanılabilir olmaya başladı. Bu, düzenleme işlemleri için Unix sistemlerini kullanmaya başlamamı olanaklı kıldı; vi ya da ed’i kullanmayı öğrenme konusunda bir ilgim yoktu, o zamana kadar düzenleme işlemlerimi diğer makineler üzerinde gerçekleştirmiştim.
Bu noktada, insanlar, GNU Emacs’i kullanmayı istediler, bu durum da GNU Emacs’in nasıl dağıtılacağı sorusunu gündeme getirdi. Tabi ki, GNU Emacs’i, kullandığım MIT bilgisayarındaki ftp sunucusuna, anonim olarak erişilebilecek şekilde koydum. (Bu bilgisayar, başka bir deyişle, prep.ai.mit.edu, bu nedenle temel GNU ftp dağıtım bölgesi haline geldi; birkaç yıl sonra devreden çıkarıldıktan sonra, alan adını yeni sunucumuza yönlendirdik) Ancak, bu zaman zarfında, ilgili insanların birçoğu İnternette değildi ve ftp ile bir kopyasını alamadı. Bu nedenle, şu soru ortaya çıktı: onlara ne diyecektim?
Şöyle diyebilirdim: “Ağ üzerinde olan ve sizin için bir kopya alacak olan bir arkadaşınızı bulun”. Ya da orijinal PDP-10 Emacs’ta yaptığımı yapacaktım: “Bana bir bant ve SASE gönderin ve ben de size üzerinde Emacs olacak şekilde bunu size geri göndereyim.” Ama işsizdim ve özgür yazılımdan para kazanmanın yollarını arıyordum. Bu nedenle, $150 karşılığında isteyen herkese bir bant gönderebileceğimi anons ettim. Bu şekilde, özgür yazılım dağıtım işine başladım, böylece, günümüzde Linux-tabanlı GNU sistemlerini dağıtan firmalar için öncü oldum.
Bir program her kullanıcı için özgür müdür?
Bir program yazarının elinden çıktığında özgür yazılımsa, bu, programın kopyasına sahip herkes için mutlaka özgür yazılım olacağı anlamına gelmez. Örneğin, kamuya ait yazılım (telif hakkına sahip olmayan yazılım) özgür yazılımdır; ancak herkes, bunun özel mülk değiştirilmiş bir sürümünü oluşturabilir. Benzer şekilde, birçok özgür program telif hakkına sahiptir ancak değiştirilmiş özel mülk sürümlere izin veren basit izin lisansları altında dağıtılmıştır.
Bu problemin faydacı örneği, X Window Sistemidir. Bu sistem, MIT tarafından geliştirilmiş ve bir izin lisansıyla özgür yazılım olarak yayınlanmış olup, çeşitli bilgisayar firmaları tarafından benimsenmiştir. Bu firmalar, yalnızca ikili [:binary] biçimde özel mülk Unix sistemlerine X’i eklemiş ve aynı anlaşma ile kapsanmıştır. X’in bu kopyaları, bundan böyle Unix’in olduğundan daha fazla özgür yazılım değildir.
X Window Sisteminin geliştiricileri bunu bir problem olarak görmemişler , bu durumun meydana gelmesini beklemişlerdir. Hedefleri özgürlük değildi, yalnızca “başarıydı” ve başarı “fazla sayıda kullanıcıya sahip olmak” olarak tanımlanmaktaydı. Kullanıcıların özgürlüğe sahip olup olmamaları umurlarında değildi, tek istedikleri çok sayıda kullanıcıya sahip olmaktı.
Bu durum, “Bu program özgür mü?” sorusuna farklı yanıtlar veren iki farklı özgürlük derecesi hesaplama yönteminin olduğu bir paradoks durumuna neden olmaktadır. MIT sürümünün dağıtım terimleri cinsinden sağlanan özgürlük derecesini esas alarak değerlendirme yaptıysanız, X’in özgür yazılım olduğunu söyleyebilirsiniz. Ancak, X’in ortalama kullanıcısının özgürlüğünü ölçerseniz, o zaman Özel mülk yazılım olduğunu söylemeniz gereklidir. Birçok X kullanıcısı, Unix sistemleriyle birlikte verilen özel mülk sürümleri kullanmaktadır, özgür sürümü kullanmamaktadır.
Copyleft ve GNU GPL
GNU’nun hedefi yalnızca popüler olmak değil kullanıcılara özgürlük de sağlamaktır. Bu nedenle, GNU yazılımının özel mülk yazılıma dönüştürülmesini önleyen dağıtım terimlerini kullanmamız gereklidir. Kullandığımız yöntem copyleft yöntemidir. (1)
Copyleft, telif hakkı kanununu kullanır ancak genel amacının tersine hizmet etmesi için tersine çevirir: yazılımı özel hale getirmek yerine, yazılımı özgür tutmanın bir yolu haline gelir.
Copyleft’in temel fikri, herkese, programı çalıştırma, değiştirme, değiştirilmiş sürümleri dağıtma hakkını vermek, ancak özel kısıtlamalar ekleme iznini vermemektir. Bu nedenle, “özgür yazılımı” tanımlayan önemli özgürlükler, yazılımın kopyasına sahip herkes için mevcuttur; bu, geri alınamaz bir haktır.
Etkin bir copyleft için, değiştirilmiş sürümler de özgür olmalıdır. Bu, yayınlanırsa, bizimkileri esas alan çalışmaların, topluluğumuz için erişilebilir olmasını sağlar. Programcı olarak çalışan kimseler GNU yazılımını değiştirmek için gönüllü olduklarında, copyleft, “Bu değişiklikleri paylaşamazsın çünkü programın özel mülk sürümünü oluşturmak için bu değişiklikleri kullanacağım” denmesini önler.
Programın her kullanıcısı için özgürlüğü sağlamak istersek, değişikliklerin özgür olması gerektiğine ilişkin şart önemlidir. X Window Sistemini özelleştiren firmalar, genellikle X Window’u sistemlerine ve donanımına taşımak için bazı değişiklikler yapmıştır. Bu değişiklikler X’in üstün derecesiyle karşılaştırıldığında küçüktü ancak önemsiz değildi. Değişikliklerin yapılması kullanıcıların özgürlüklerinin inkâr edilmesine ilişkin bir özürse, herkesin bu bahaneden yararlanması kolaydır.
İlgili bir konu da özgür bir programın özgür olmayan kodla birleştirilmesidir. Bu gibi bir birleşim özgürlükten uzak olacaktır; özgür olmayan kısım için eksik olan özgürlükler bütün için de eksik olacaktır. Bu gibi birleşimlere izin verilmesi, bir gemiyi batırmaya yetecek büyüklükte deliklerin açılmasına neden olur. Bu nedenle, copyleft için önemli bir şart bu deliği tıkamaktır: copyleft edilmiş bir programla birleştirilmiş ya da bu gibi bir programa eklenmiş herhangi bir şey, birleştirilmiş daha büyük sürümün de özgür ve copyleft olmasını gerektirecektir.
Birçok GNU yazılımı için kullandığımız copyleft’in özel gerçekleştirimi, GNU Genel Kamu Lisansı ya da kısaca GNU GPL’dir. Bazı özel durumlarda ve ortamlarda kullanılan diğer copyleft tipleri de mevcuttur. GNU kullanım kılavuzu da copyleft edilir ancak çok daha basit bir copyleft tipi kullanırlar çünkü GNU GPL’nin karmaşıklığı kılavuzlar için gerekmez. (2)
(1) 1984 ya da 1985 yılında, Don Hopkins (hayal gücü çok geniş olan bir adam) bana bir mektup gönderdi. Mektubunda birçok komik şey yazıyordu, şu da bunlardan biriydi: “Copyleft , tüm hakları ters çevrilmiştir”. “Copyleft” sözcüğünü o zamanlar geliştirmekte olduğum dağıtım kavramını adlandırmak için kullanmıştım.
(2) Şimdi belgeleme için GNU Özgür Belgeleme Lisansını kullanıyoruz.
Özgür Yazılım Vakfı
Emacs’ın kullanımına ilişkin ilgi arttıkça, başka insanlar GNU projesine dahil oldular ve o zaman yeniden destek almamızın zamanının geldiğine karar verdik. Böylece 1985 yılınca özgür yazılım geliişimi için vergiden muaf bir hayır kurumu olan Özgür Yazılım Vakfını kurduk. FSF ayrıca Emacs bant dağıtım işini de ele aldı; daha sonra, banda diğer özgür yazılımları (hem GNU hem de GNU-olmayan) ekleyerek ve özgür kılavuzları satarak bu işi genişletti.
FSF, bağışları kabul eder ancak gelirinin çoğu özgür yazılımın ve ilgili diğer hizmetlerin satışından gelmektedir. Günümüzde, kaynak kodunu içeren CD-ROM’ları, ikili kodları içeren CD-ROM’ları, güzel baskılı kılavuzları (hepsinin yeniden dağıtım ve değiştirme özgürlüğü vardır) ve Deluxe Dağıtımlarını (burada sizin seçeceğiniz dağıtım için tüm özgür yazılım koleksiyonu yer alıyor) satmaktadır.
Özgür Yazılım Vakfı çalışanları bazı GNU yazılım paketlerini yazmış ve ellerinde tutmuştur. Bunlardan tanınmış iki tanesi C kütüphanesi ve kabuktur (shell). GNU C kütüphanesi, GNU/Linux sisteminde çalışan her programın Linux ile haberleşmek için kullandığı şeydir. Özgür Yazılım Vakfında çalışan Roland McGrath tarafından geliştirilmiştir. Birçok GNU/Linux sisteminde kullanılan kabuk BASH’tır, Bourne Again Shell (1), bu kabuk, FSF çalışanı olan Brian Fox tarafından geliştirilmiştir.
Bu programların geliştirilmesini destekledik çünkü GNU projesi yalnızca araçlar ya da bir geliştirme ortamı hakkında değildi. Hedefimiz tam bir işletim sistemiydi ve bu programlar söz konusu hedef için gerekliydi.
(1) “Bourne again Shell” “Bourne Shell” adı üzerinde bir şakadır, bu, Unix’teki genel kabuktur.
Özgür Yazılım Desteği
Özgür yazılım felsefesi, bazı yaygın ticari uygulamayı reddeder ancak ticarete karşı değildir. İşyerleri kullanıcıların özgürlüğüne saygı duyduğunda, onlara başarı dileriz.
Emacs’ın kopyalarının satılması, bir çeşit özgür yazılım ticaretini gösterir. FSF bu işi devraldığında, geçimimi sağlamak için başka bir yol gerekti. Geçimimi, geliştirmiş olduğum özgür yazılıma ilişkin hizmetlerin satılmasıyla sağladım. Bu, GNU Emacs’ın nasıl programlanacağı ve GCC’nin ve yazılım gelişiminin nasıl uyarlanacağı (çoğunlukla GCC’yi yeni platformlara taşıyan) gibi konular için eğitim vermeyi de içermektedir.
Günümüzde özgür yazılım ticaretinin bu tiplerinin her biri belirli sayıda kurum tarafından uygulanmaktadır. Bazıları, CD-ROM üzerinde özgür yazılım koleksiyonları dağıtmaktadır; diğerleri, çeşitli seviyelerde destek satmaktadır, bu destek: kullanıcı sorularının yanıtlanması, sorunların giderilmesi ve büyük ve yeni özelliklerin eklenmesini içerir. Yeni özgür yazılım ürünlerinin başlatılmasını esas alan özgür yazılım firmalarını görmeye başladık bile.
Yine de dikkatli olun, kendilerini “açık kaynak” terimiyle ilişkilendiren bazı firmalar, özgür yazılımla çalışan özgür olmayan yazılımı esas almaktadır. Bunlar özgür yazılım firmaları değildir, bunlar, özel mülk yazılım firmalarıdır, ürünleri ve kullanıcıları özgürlükten uzaklaştırmaktadır. Onlar bunu katma değerli olarak adlandırırlar, bu terim benimsememizi istedikleri değerleri yansıtır: özgürlüğün üstünde kazanç. Özgürlüğe daha çok değer vererek, bunları “özgürlüğü çıkarılmış” ürünler olarak adlandırmalıyız.
Teknik hedefler
GNU’nun temel hedefi, özgür yazılımı sağlamaktır. GNU’nun UNIX’e göre teknik bir avantajı olmasa da, sosyal bir avantajı vardır, kullanıcıların birlik olmasına imkân verir ve etik bir avantajı vardır, kullanıcıların özgürlüğüne saygı duyar.
Ancak iyi uygulamaların bilinen standartlarının çalışmaya uygulanması doğaldı, örneğin rastgele sabit büyüklükteki sınırları önlemek için veri yapılarının dinamik olarak tahsis edilmesi ve anlamlı olan her yerde mümkün olan tüm 8-bitli kodların kontrol edilmesi gibi.
Ek olarak, 16-bit makineleri (GNU sistemi tamamlandığında, 32-bit makineler geçerli olacaktır) desteklememeye ve megabaytı geçmedikçe bellek kullanımını azaltmak için çaba göstermemeye karar vererek Unix’in küçük bellek büyüklüğü üzerine odaklanmasını reddettik. Çok büyük dosyalarla işlem yapılmasının çok önemli olmadığı programlarda, programcıların, tüm giriş dosyasını çekirdekte okumasını, daha sonra içeriğini I/O konusunda tedirginliğe kapılmaksızın taramasını sağladık.
Bu kararlar, birçok GNU programının Unix benzerlerini, güvenilirlik ve hız açısından geçmesini mümkün kılmıştır.
Bağışlanan Bilgisayarlar
GNU projesinin ünü arttıkça, insanlar, üzerlerinde Unix çalışan makinelerini projeye bağışlamaya başladı. Bunlar çok yararlıydı çünkü GNU’nun bileşenlerini geliştirmenin en kolay yolu, bunu bir Unix sistemi üzerinde gerçekleştirmek ve söz konusu sistemin bileşenlerini birer birer değiştirmekti. Ancak bu durum etik bir sorunu ortaya çıkardı: Unix’in bir kopyasına sahip olmamız doğru mudur?
Unix, özel mülk bir yazılımdı (hâlâ da öyledir) ve GNU projesinin felsefesi, özel mülk yazılım kullanmamamız gerektiğini söyler. Ancak, aynı mantık uygulandığında şu sonuca varılır: kendini korurken şiddet uygulanabilir, insanların özel mülk paketi kullanmalarını durdurmasına yardımcı olan özgür programı kullanabilmek için özel mülk paketin kullanılması mantıklıdır.
Savunulabilir bir durum olmasına rağmen, bu durum yine de kötü bir durumdur. Günümüzde, Unix’in hiçbir kopyasına sahip değiliz çünkü bu kopyaların yerine özgür işletim sistemlerini yerleştirdik. Bir makinenin işletim sistemini özgür bir işletim sistemiyle değiştiremediysek, bunun yerine makineyi değiştirirdik.
GNU Görev Listesi
GNU projesi ilerledikçe ve artan sayıda sistem bileşeni bulundukça ya da geliştirildikçe, artık kalan eksiklerin bir listesinin yapılması yararlı bir hale geldi. Eksik parçaları yazmak için geliştiricileri işe almaktaydık. Bu liste, GNU görev listesi olarak bilinmeye başladı. Eksik Unix bileşenlerine ek olarak, gerçekten tam bir sistemin sahip olmasının gerekli olduğunu düşündüğümüz diğer yararlı yazılım ve belgeleme projelerini listeledik.
Günümüzde, GNU görev listesinde ancak birkaç tane Unix bileşeni kalmıştır, bu işler (birkaç tane önemsiz iş hariç olmak üzere) gerçekleştirilmiştir. Ancak, liste, bazılarının “uygulamalar” olarak adlandırabildiği projelerle doludur. Dar bir kullanıcı grubundan daha fazlasını gerektiren herhangi bir program, işletim sistemine eklenecek yararlı bir birimdir.
Oyunlar bile görev listesine dahildir ve başlangıçtan beri durum böyledir. Unix’te oyunlar vardı, bu nedenle doğal olarak GNU’da da olmalıydı. Ancak oyunlar için uyumluluk söz konusu değildi, bu nedenle, Unix’in sahip olduğu oyun listesini izlemedik. Bunun yerine, kullanıcıların sevebildiği farklı oyun tipi çeşitlerini listeledik.
GNU Kütüphane GPL
GNU C kütüphanesi, GNU Kütüphane Genel Kamu Lisansı (1) olarak adlandırılan ve özel mülk yazılımla kütüphane arasında bağlantı kurma iznini sağlayan özel bir copyleft tipini kullanmaktadır. Bu istisnai durumun nedeni nedir?
Bu bir ilke sorunu değildir; özel mülk yazılım ürünlerinin kodumuzu içermesi konusunda yetkilendirilmesini söyleyen bir ilke yoktur. (Bizimle paylaşmayı reddeden bir projeye niye katılalım?) C kütüphanesi ya da herhangi bir kütüphane için LGPL kullanılması bir strateji hususudur.
C kütüphanesi genel bir işi başarmıştır; özel mülk her sistem ya da derleyici bir C kütüphanesine sahiptir. Bu nedenle, C kütüphanemizi yalnızca özgür yazılıma açık kılmak özgür yazılıma hiçbir avantaj sağlamayacaktır, bu yalnızca kütüphanemizin kullanımını engelleyecektir.
Bir sistem bu kurala uymayan bir durumdur: GNU sisteminde (ve bu, GNU/Linux’ı içerir) GNU C kütüphanesi, tek C kütüphanesidir. Böylece, GNU C kütüphanesinin dağıtım terimleri, GNU sistemi için özel mülk bir programın derlenmesinin mümkün olup olmadığını belirler. GNU sistemi üzerinde özel mülk uygulamalara izin vermek için etik bir neden yoktur ancak stratejik açıdan, onlara imkân vermemek, özgür uygulamaların geliştirilmesini cesaretlendirmekten ziyade GNU sisteminin kullanımına yönelik cesareti kıracaktır.
Bu, GPL Kütüphane kullanımının C kütüphanesi için iyi bir strateji olmasının nedenidir. Diğer kütüphaneler için, stratejik karar her duruma özgü bir şekilde oluşturulmalıdır. Bir kütüphane belirli program tiplerinin yazılmasına yardımcı olan özel bir işi gerçekleştirdiğinde, o zaman bunu GPL altında yayarak sadece özgür programlarda kullanımını sınırlandırmak diğer özgür yazılım geliştiricilerine yardımcı olmanın bir yolu olacaktır, bu da özel mülk yazılıma karşı onlara bir avantaj sağlayacaktır.
GNU Readline’ı değerlendirelim, bu, BASH için komut satırının düzenlenmesini sağlayan bir kütüphanedir. Readline, sıradan GNU GPL altında yayılır, GPL kütüphane altında dağıtılmaz. Bu muhtemelen Readline’ın kullanım miktarını azaltır ancak bizim için bir kayıp yoktur. Bu arada, özgür yazılım için en azından bir tane yararlı uygulama belirli olarak gerçekleştirilmiştir böylece Readline kullanılabilir ve bu, toplum için gerçek bir kazançtır.
Özel mülk yazılım geliştiricileri, paranın sağladığı avantajlara sahiptir; özgür yazılım geliştiricilerinin, birbirleri için avantajlı durumlar oluşturması gerekir. Umarım, günün birinde özel mülk yazılımlar için eşleri olmayan GPL ile lisanslanmış geniş kütüphane kolleksiyonlarına sahip olacağız, bu kütüphaneler yeni özgür yazılımlar için inşa birimlerini oluşturacak ve daha fazla özgür yazılım geliştirmesi için önemli bir avantaj sağlayacaklar.
(1) Bu lisans şimdi GNU Kısıtlı Genel Kamu Lisansı adını almıştır, kütüphanelerin onu kullanması gerektiği fikrini vermemek için.Ayrıntılı Bilgi İçin.
Arzuyu kaşımak?
Eric Raymond, “Her iyi yazılım çalışması, geliştiricinin kişisel ve güçlü bir arzusunun ortaya çıkmasıyla başlar” der. Bu söz bazı durumlarda doğrudur ancak GNU yazılımının birçok esas parçası tam bir özgür işletim sistemine sahip olmak için geliştirilmiştir. Bunlar, bir bakış açısından ve bir plandan gelmektedir, bir dürtüden değil.
Örneğin, GNU C kütüphanesini geliştirdik çünkü Unix-benzeri bir sistem bir C kütüphanesine, ihtiyaç duyar, Bourne Again Shell’i (bash) geliştirdik çünkü Unix-benzeri bir sistem bir kabuğa ihtiyaç duyar ve Unix-benzeri bir sistem bir tar programına ihtiyaç duyduğu için GNU tar’ı geliştirdik. Kendi programlarım için de aynısı geçerlidir, GNU C derleyicisi, GNU Emacs, GDB ve GNU Make.
Bazı GNU programları özgürlüğümüze ilişkin bazı tehditlerle başa çıkmak için geliştirilmiştir. Bu nedenle, Compress programının yerine geçmesi için gzip’i geliştirdik, bu program, LZW patentlerinden dolayı kayıptır. LessTif’i geliştirdik ve yakın zamanda belirli özel mülk kütüphaneler nedeniyle oluşan problemleri halletmek için GNOME ve Harmony’i başlattık (aşağıdaki “özgür olmayan kütüphaneler” bölümüne bakınız). Özgür olmayan gözde şifreleme yazılımının yerine geçmesi için GNU Gizlilik Kılavuzunu geliştirmekteyiz çünkü kullanıcılar gizlilik ve özgürlük arasında bir tercih yapmak zorunda kalmamalıdır.
Tabi ki, bu programları yazan insanlar çalışmayla ilgilenmeye başlamıştır ve kendi ihtiyaçları ve çıkarları için, çeşitli insanlar tarafından bunlara birçok özellik eklenmiştir. Ancak programların var olma nedeni bu değildir.
Beklenmedik gelişmeler
GNU projesinin başlangıcında, tüm GNU sistemini geliştirebileceğimizi ve daha sonra bir bütün olarak yayınlayabileceğimizi hayal etmiştim. Ancak durum böyle olmadı.
GNU sisteminin her bir bileşeni bir Unix sisteminde gerçekleştirildiği için, bütün bir GNU sisteminin var olmasından çok önce her bir bileşen Unix sistemlerinde çalışabilmeliydi. Bu programların bazıları gözde hale geldi ve kullanıcılar, bunları, çeşitli uyumsuz Unix sürümlerine ve bazen de diğer sistemlere genişletmeye ve taşımaya başladı.
Süreç, bu programların çok daha güçlü olmasını sağladı ve hem maddi destek sağladı, hem de destekçileri GNU projesine çekti. Ancak bu en az özellikli, çalışır bir sistemin tamamlanmasını da yıllarca geciktirdi çünkü GNU geliştiricilerinin zamanı, birbiri ardına eksik bir bileşenin yazılmasından çok, bu bileşenlerin devamlılığının sağlanmasına ve mevcut bileşenlere yeni özelliklerin eklenmesine harcandı.
GNU Hurd
1990 yılı itibariyle, GNU sistemi hemen hemen tamamlanmıştı; tek temel eksik bileşen, çekirdekti [:kernel]. Çekirdeğimizi, Mach’ın en üstünde çalışan sunucu süreçleri kümesi olarak gerçekleştirmeye karar verdik. Mach, Carnegie Mellon Üniversitesinde ve daha sonra Utah Üniversitesinde geliştirilen bir mikro-çekirdektir; GNU Hurd, Mach’ın üstünde çalışan sunucu topluluğudur ve Unix çekirdeğinin çeşitli işlemlerini gerçekleştirir. Söz verilmiş olduğu gibi, Mach’ın özgür yazılım olarak dağıtılmasını beklerken, geliştirmenin başlaması gecikti.
Bu tasarımın seçilmesinin bir nedeni, işin en zor kısmı olarak görülen aşamadan kaçınılmasıydı: kaynak-seviyesinde bir hata ayıklayıcı [:debugger] olmaksızın çekirdek programındaki hataların ayıklanması. İşin bu kısmı hâlihazırda Mach’da gerçekleştirilmişti ve GDB ile kullanıcı programları olarak Hurd sunucularının hatalarının ayıklanmasını ummuştuk. Ancak bunun mümkün kılınması uzun zaman aldı ve birbirine mesaj gönderen çok-kullanımlı sunucuların hatalarının ayıklanmasının çok zor olduğu fark edildi. Hurd çalışmasının gerçekleştirilmesi yıllara yayıldı.
Alix
GNU çekirdeğinin başlangıçta Hurd olarak adlandırılacağı düşünülmemekteydi. Orijinal adı Alix’ti, o zamanlar sevgilim olan kadının adıydı. Bir Unix sistem yöneticisi olan Alix, Unix sistem sürümleri için isminin bir birime verilmesi gerektiğini şaka yollu olarak söylerdi: arkadaşlarına, “Benim adımın bir çekirdeğe verilmesi lazım” derdi. Hiçbir şey söylemezdim ancak çekirdeğe Alix adını vererek ona sürpriz yapmaya karar verdim.
Ancak daha sonra durum değişti. Michael Bushnell (şimdi Thomas), çekirdeğin ana geliştiricisi, Hurd adını tercih etti ve Alix’in yalnızca çekirdeğin belirli bir kısmının adı olmasına karar verdi, bu kısım sistem çağrılarını alan ve Hurd sunucularına mesaj göndererek kontrol eden kısımdır.
Sonunda Alix ve ben ayrıldık ve Alix, adını değiştirdi; bundan bağımsız olarak, Hurd tasarımı değiştirildi, böylece C kütüphanesi sunuculara doğrudan mesajlar göndermeye başladı ve bu durum Alix bileşeninin tasarımdan çıkarılmasına neden oldu.
Ancak bu olaylar meydana gelmeden önce, Alix’in bir arkadaşı, Hurd kaynak kodunda Alix ismine rastladı ve Alix’e bunu söyledi. Böylece isim amacını gerçekleştirmiş oldu.
Linux ve GNU/Linux
GNU Hurd, normal kullanım [:production use] için hazır değildi. Neyse ki, başka bir çekirdek ortaya çıktı. 1991 yılında, Linus Torvalds Unix’e uyumlu bir çekirdek geliştirdi ve bunu Linux olarak adlandırdı. 1992 yılı civarında, daha tamamlanmamış GNU sistemiyle Linux’un birleşmesi bütün bir özgür işletim sistemine neden oldu. (Bunların birleştirilmesi de tabi ki kendi içinde önemli bir işti). Günümüzde GNU sisteminin bir sürümünün çalıştırılması Linux sayesindedir.
Çekirdek olarak GNU sisteminin Linux’la birleşiminin oluşumunu ifade etmek için bu sistemi GNU/Linux olarak adlandırırız.
Geleceğimizde Ortaya Çıkabilecek Sorunlar
Geniş özgür yazılım çeşitlerini geliştirmek konusundaki yeteneğimizi kanıtladık. Ancak bu, bizim yenilmez ve durdurulamaz olduğumuz anlamına gelmemektedir. Çeşitli sorunlar, özgür yazılımın geleceğini belirsiz hale getirmektedir; bunların yerine getirilmesi sadık çalışmaları ve sabrı gerektirecek ve bu bazen yıllarca sürecektir. Bu, insanların özgürlüklerine değer vermeleri ve onu kimsenin almasına izin vermemeleri konusunda kararlılık göstermesini gerektirecektir.
Aşağıdaki dört bölüm bu hususları açıklamaktadır.
Gizli Donanım
Donanım üreticileri, donanım belirtimlerini sır olarak saklama eğilimindedir. Bu durum, Linux’ın ve XFree86’nın yeni bir donanımı desteklemesini sağlayan özgür sürücülerin yazılmasını zorlaştırmaktadır. Günümüzde bütün özgür sistemlere sahibiz ancak yarının bilgisayarlarını destekleyemezsek, yarın bunlara da sahip olamayacağız.
Bu problemle başa çıkmanın iki yolu vardır. Programcılar, donanımı nasıl destekleyeceklerini belirlemek için tersine mühendisliği [:reverse engineering] gerçekleştirebilir. Geri kalanımız, özgür yazılım tarafından desteklenen donanımı seçebilir; sayımız arttıkça, belirtimlerin gizliliği kendi kendine terk edilen bir politika haline gelecektir.
Tersine mühendislik önemli bir iştir; bunu üstlenebilecek yeterli kararlılığa sahip programcılarımız var mı? Evet, özgür yazılımın bir ilke konusu olduğuna ve özgür olmayan sürücülerin dayanılmaz olduğuna dair güçlü bir duygu oluşturursak olabilir. Ve çoğumuz özgür sürücüleri kullanmak için fazladan para harcarsak ya da hatta biraz fazladan zaman harcarsak? Evet, özgürlüğe sahip olma kararlılığı yaygınsa bu olabilir.
(2008 notu: bu konu BIOS'a da genişletilebilir. Özgür bir BIOS vardır, coreboot; problem coreboot'un destekleyebilmesini sağlamak üzere makine belirtimlerini elde etmektir.)
Özgür olmayan Kütüphaneler
Özgür işletim sistemleri üzerinde çalışan özgür olmayan bir kütüphane, özgür yazılım geliştiricileri için bir tuzaktır. Kütüphanenin çekici özellikleri yemdir; kütüphaneyi kullanırsanız, tuzağa düşersiniz çünkü programınız özgür bir işletim sisteminin bir parçası olamaz. (Daha doğrusu, programı dahil edebiliriz ancak eksik kütüphane ile çalışmayacaktır). Daha da kötüsü, özel mülk kütüphaneyi kullanan bir program gözde hale gelirse, şüpheci olmayan diğer programcıları da tuzağa düşürebilir.
Bu probleme ilişkin ilk örnek, 80’lerdeki Motif araç-kitiydi. O zamanlar, özgür yazılımların mevcut olmamasına rağmen, daha sonra onlar için Motif probleminin oluşacağı açıktı. GNU Projesi buna iki şekilde yanıt verdi: ayrı özgür yazılım projelerinin özgür X araç-kiti bilgisayar ekranındaki tuş, buton, çubuk gibi unsurlardan her birinin desteklemesini isteyerek ve birilerinin Motif için özgür bir yedek hazırlamasını isteyerek. Bu iş yıllar aldı; Hungry Programcıları tarafından geliştirilen LessTif, yalnızca 1997’de birçok Motif uygulamasını desteklemek için yeterince güçlü hale geldi.
1996 ilâ 1998 yılları arasında, Qt olarak adlandırılan özgür olmayan başka bir Grafiksel Kullanıcı Ara Yüzü (GUI) araç-kiti kütüphanesi özgür yazılım koleksiyonunda (masaüstü KDE) kullanıldı.
Özgür GNU/Linux sistemleri KDE’yi kullanmadı çünkü bu kütüphaneyi kullanamazdık. Ancak, sistemlerine özgür yazılımın eklenmesi konusunda duyarlı olmayan bazı ticari GNU/Linux sistem dağıtıcıları, sistemlerine KDE’yi ekledi, daha fazla özelliğe ancak daha az özgürlüğe sahip bir sistem ürettiler. KDE grubu, daha fazla sayıda programcının Qt’yi kullanmasını destekledi ve milyonlarca yeni “Linux kullanıcısı” bununla ilgili bir problemin var olduğu fikrine inanmadılar. Bu durum korkutucu görünüyordu.
Özgür yazılım topluluğu probleme iki şekilde yanıt verdi: GNOME ve Harmony.
GNOME, açık adıyla, GNU Network Object Model Environment (GNU Ağ Nesne Model Ortamı), GNU’nun masaüstü projesidir. 1997 yılında Miguel de Icaza tarafından başlatılmıştır ve Red Hat Software’in desteğiyle geliştirilmiştir, GNOME, benzer masaüstü özellikleri sağlamak için oluşturulmuştur ancak özgür yazılımları kullanır. Teknik avantajları da vardır, yalnızca C++’ı değil, çeşitli dilleri de destekler. Ancak temel amacı özgürlüktür: özgür olmayan hiçbir yazılıma ihtiyaç duymaz.
Harmony, uyumlu bir değiştirme kütüphanesidir, Qt’yi kullanmaksızın KDE yazılımının çalıştırılmasını mümkün kılmak için tasarlanmıştır.
1998 yılının Kasım ayında, Qt’nin geliştiricileri, bir lisans değişikliğini anons etti, bu lisans değişikliğinin gerçekleşmesiyle, Qt özgür yazılım haline gelmekteydi. Bundan emin olmanın bir yolu yoktur ancak bana kalırsa bu, QT'nin özgür olmamasından kaynaklanan soruna topluluğun verdiği yanıttan kaynaklanmaktadır. (Yeni lisans elverişsiz ve eşitlikten uzaktır, bu nedenle, Qt’nin kullanımının önlenmesi istenmektedir.)
[not: Eylül 2000'de Qt GNU GPL olarak yayınlanmıştır, bu problem çözülmüştür.]
Sonraki özgür olmayan kütüphaneye karşı nasıl bir tepki vereceğiz? Tüm topluluk tuzaktan uzak kalmanın gerekliliğini anlayacak mı? Ya da birçoğumuz kullanışlılık için özgürlükten vazgeçecek mi ya da büyük bir problem mi ortaya çıkacak? Geleceğimiz felsefemize bağlıdır.
Yazılım Patentleri
Karşılaştığımız en büyük tehdit yazılım patentlerinden gelmektedir, bu patentler, özgür yazılıma yirmi yıla kadar varabilen algoritma ve özellik sınırları koyabilir. LZW sıkıştırma algoritma patentleri 1983’te uygulanmıştı ve hâlâ uygun şekilde sıkıştırılmış GIF’ler üretmek için özgür yazılımı yayınlayamamaktayız. 1998 yılında, bir patent grubunun tehdidi altında, MP3 sıkıştırma ses programı üreten özgür bir program dağıtımdan kaldırılmıştı.
Patentlerle başa çıkmanın yolları vardır: bir patentin geçersiz olduğuna dair kanıt için araştırma yapabiliriz ve bir işi yapmanın alternatif yollarını araştırabiliriz. Ancak bu metotların her biri yalnızca zaman zaman çalışmaktadır; hepsi de başarısız olduğunda, patent, tüm özgür yazılımı, kullanıcıların istediği birtakım özelliklerden mahrum bırakmaya zorlayabilir. Bu durum meydana geldiğinde ne yapacağız?
Özgürlük adına özgür yazılıma değer veren bizim gibi insanlar her durumda özgür yazılımla kalacaktır. İşlerimizi hallederken patentli özellikleri kullanmayacağız. Ancak teknik açıdan daha üstün olmasını bekledikleri için özgür yazılıma değer verenler, patent onu geri tuttuğunda, bunu bir başarısızlık olarak adlandırma eğilimindedir. Bu nedenle, yazılım geliştirmenin “katedral” modelinin (1) ve özgür yazılımın güvenilirliği ve gücünün pratik etkililiği hakkında konuşmak yararlı iken, burada durmamalıyız. Özgürlük ve ilke hakkında konuşmalıyız.
(1) Burada “'pazar’ modelini” ifade etmek istedim çünkü bu, yeni olan ve başlangıç olarak tartışmaya yol açan bir modeldir.
Özgür Belgeleme
Özgür işletim sistemlerimizdeki en büyük eksiklik yazılımda değildir, en büyük eksiklik, sistemlerimize dahil edebildiğimiz iyi özgür belgelerin olmamasıdır. Belgeleme, her türlü yazılım paketinin önemli bir parçasıdır; önemli bir özgür yazılım paketi iyi bir özgür belgeyle birlikte verilmediğinde, bu büyük bir eksiktir. Günümüzde bu gibi eksiklerimiz vardır.
Özgür belgeleme, tıpkı özgür yazılım gibi, bir özgürlük konusudur, ücretle ilgili değildir. Özgür bir kılavuza ilişkin ölçütler özgür yazılıma ilişkin ölçütlere oldukça benzerdir: bu, tüm kullanıcılara belirli özgürlükler verilmesi hususudur. Yeniden dağıtıma (ticari satış dahil olmak üzere) izin verilmelidir, bu, çevrim-içi olarak ya da kağıt biçiminde olabilir, böylece kılavuz, programın her kopyasıyla birlikte verilebilir.
Değiştirmeye ilişkin izin de önemlidir. Genel kural olarak, insanların tüm makale ve kitap tiplerini değiştirme iznine sahip olmasının gerekli olduğuna inanmıyorum. Örneğin, işlemlerimizi ve görüşlerimizi tanımlayan bu gibi makaleleri değiştirmek için izin vermek zorunda olduğumuzu sanmıyorum.
Ancak, özgür yazılımın belgelerinin değiştirilme özgürlüğünün önemli olmasının belirli bir nedeni vardır. İnsanlar, yazılımı değiştirme hakkını kullandıklarında ve özelliklerine ekleme yaptıklarında ya da özelliklerini değiştirdiklerinde, vicdanlı davranır ve özenlilerse kılavuzları da değiştireceklerdir, böylece değiştirilmiş programla birlikte doğru ve kullanılabilir belgeleri de sağlayacaklardır. Programcıların özenli olmalarına izin vermeyen ve işi tanımlamayan bir kılavuz ihtiyaçlarımızı karşılamaz.
Değişikliklerin nasıl gerçekleştirildiğine ilişkin bazı sınırlamalar hiçbir problem oluşturmaz. Örneğin, asıl yazarın telif hakkı uyarısının korunmasına ilişkin şartlar, dağıtım ifadeleri ve yazar listesi uygundur. Ayrıca değiştirilmiş sürümlerde uyarı bulunmasının gerekli olması ve bu kısımların teknik-olmayan başlıkları ele almaları durumunda, silinemeyen ya da değiştirilemeyen kısımlara sahip olma konusunda bir problem yoktur. Değişikliklerin nasıl gerçekleştirildiğine ilişkin bazı sınırlamalar hiçbir problem oluşturmaz. Örneğin, asıl yazarın telif hakkı uyarısının korunmasına ilişkin şartlar, dağıtım ifadeleri ve yazar listesi uygundur. Ayrıca değiştirilmiş sürümlerde uyarı bulunmasının gerekli olması ve bu kısımların teknik-olmayan başlıkları ele almaları durumunda, silinemeyen ya da değiştirilemeyen kısımlara sahip olma konusunda bir problem yoktur.
Ancak, kılavuzun tüm “teknik” içeriğinin değiştirilmesi ve daha sonra tüm genel kanallar üzerinden tüm genel ortamlarda sonucun dağıtılması mümkün olmalıdır; aksi takdirde, kısıtlamalar topluluğu engellemektedir, kılavuz özgür değildir ve başka bir kılavuza ihtiyaç duyarız.
Özgür yazılım geliştiricileri tam bir özgür belge çeşitliliği oluşturma bilincine ve kararlılığına sahip olacak mıdır? Yine, geleceğimiz felsefeye bağlıdır.
Özgürlük Hakkında Konuşmalıyız
Günümüzde Debian GNU/Linux ve Red Hat Linux gibi GNU/Linux sistemlerinin on milyon kullanıcısının var olduğu tahmin edilmektedir. Özgür yazılım öyle pratik avantajlar sunmuştur ki, kullanıcılar tamamen uygulamaya ilişkin nedenlerden dolayı özgür yazılımı kullanmaktadır, uygulamaktadır.
Bunun iyi sonuçları ortadadır: özgür yazılımın geliştirilmesiyle daha fazla ilgilenildiğinde, yazılım işleri için daha fazla müşteri mevcuttur, bu da özel mülk yazılım ürünleri yerine ticari özgür yazılımın geliştirilmesi için firmaların daha fazla cesaretlendirilmesi için olanak demektir.
Ancak yazılıma olan ilgi yazılımın esas aldığı felsefenin bilincinden daha hızlı bir şekilde büyümektedir ve bu durum soruna neden olmaktadır. Yukarıda açıklanan sorunlarla ve tehditlerle başa çıkma özelliği, özgürlük için direnme isteğine bağlıdır. Topluluğumuzun bu isteğe sahip olduğundan emin olmak için, topluluğumuza girdiklerinde yeni kullanıcılara bu fikri yaymamız gereklidir.
Ancak bunu yapmakta başarısız olmaktayız: yeni kullanıcıları topluluğumuza çekme çabaları, topluluğumuzun temel bilgilerini öğretme çabalarını fazlasıyla geride bırakmaktadır. Her ikisini de gerçekleştirmemiz ve iki çabayı da dengede tutmamız gereklidir.
“Açık Kaynak”
Yeni kullanıcılara özgürlüğü öğretmek 1998 yılında daha zor hale geldi çünkü topluluğun bir kısmı “özgür yazılım” terimi yerine “açık kaynak yazılımı” terimini kullanmaya karar verdi.
Bu terimi destekleyen bazıları, “özgür” teriminin “bedava” terimiyle karıştırılmasını önlemeyi hedefledi, bu geçerli bir hedefti. Ancak diğerleri, özgür yazılım hareketini ve GNU projesini güdüleyen ilkenin ruhunu bir kenara koydu ve bunun yerine yöneticilere ve işyeri kullanıcılarına yöneldi, bunların çoğu kârı özgürlüğün, toplumun ve ilkenin üstünde tuttu. Bu nedenle, “açık kaynak” konusu, yüksek-kaliteli ve güçlü yazılımın gerçekleştirilmesi potansiyeline odaklanmaktadır ancak özgürlük, toplum ve ilke fikirlerinden uzak durmaktadır.
“Linux” dergileri bunun açık bir örneğidir, GNU/Linux’la çalışan özel mülk yazılım için ilanlarla doludurlar. Sıradaki Motif ya da Qt ortaya çıktığında, bu dergiler programcıları bundan uzak durması konusunda uyaracak mı yoksa onun için reklam mı yayınlayacaklar?
Ticaretin desteklenmesi topluma birçok şekilde katkı sağlayabilir; diğer her şey eşit olduğunda, bu yararlıdır. Ancak özgürlük ve ilke hakkında daha az konuşarak desteklerini kazanmak çok kötü sonuçlar doğurabilir; bu, sosyal yardımlaşma ve yurttaşların eğitimindeki dengesizlği daha da kötüleştirecektir.
“Özgür yazılım” ve “açık kaynak” yaklaşık olarak aynı yazılım kategorisini tanımlar ancak yazılım hakkında ve değerler hakkında farklı şeyler söyler. GNU Projesi, yalnızca teknolojinin değil özgürlüğün de önemli olduğunu ifade etmek için “özgür yazılım” ifadesini kullanmaya devam eder.
Deneyin!
Yoda’nın felsefesi (“’Deneme’ yoktur”) iyi ve zekice görünmektedir ancak bu, benim için geçerli değildir. İşi yapıp yapamayacağım konusunda tedirginken aslında işin çoğunu yaparım ve hedefi gerçekleştirsem bile, hedefi yakalamak için yeterli olup olmadığım konusunda emin değilimdir. Ama en azından denedim çünkü düşmanım ile şehrim arasında hiç kimse yoktu, ben vardım. Şaşırtıcı bir şekilde, bazen başarılı oldum.
Bazen başarısız oldum; bazı şehirlerim düştü. O zaman tehdit altında olan başka bir şehir buldum ve başka bir savaş için hazırlandım. Zaman içinde, tehditleri aramayı ve kendimi tehditlerle şehrim arasına koymayı öğrendim ve diğer hacker’ların gelip bana katılmaları konusunda çağrı yaptım.
Bugünlerde yalnız değilim. Bana destek olan hacker’ları gördüğümde bir rahatlama ve neşe duyuyorum ve bu şehrin, en azından şimdilik, dayanabileceğini görüyorum. Ancak tehlike her geçen yıl büyüyor ve şimdi Microsoft açık bir şekilde topluluğumuzu hedef aldı. Özgürlüğün geleceğini veremeyiz. Teslim olmayalım! Özgürlüğümüzü korumak istiyorsak, her zaman hazır olmalıyız.