Özgür Yazılım Felsefesi ve Temel Kavramlar
Last updated
Last updated
Multics, daha çok program geliştiricileri için düşünülmüş, çok kullanıcılı bir işletim sistemi projesidir. Kapsamının dışına çıkması ve projenin yavaşlaması nedeniyle projeye son verilir. Bu işletim sistemi 1969 yılında Bell laboratuvarlarında, kapsamı küçültülerek UNICS adıyla yeniden yayınlanır. Düşük seviyeli bir dil ile geliştirilen bu işletim sistemi 1973 yılında Dennis Ritchie (C programlama dilinin yaratıcısı) ve Ken Thompson tarafından C dilinde yeniden yazılır. UNIX adındaki bu işletim sistemi farklı bilgisayar platformlarına kolayca taşınır ve popülerleşir. Hızlı bir şekilde üniversite ve şirketlerde yaygınlaşan UNIX ile birlikte benzer sistemlerinin de geliştirilmesi uzun sürmez.
1980’li yılların başında AT&T şirketi para kazanmak amacıyla UNIX işletim sistemini pazarlamaya başlar. MIT’nin Yapay Zeka laboratuvarlarında 1980’li yılların başına kadar yazılım geliştirici olarak çalışan Richard Stallman, bir röportajında şu sözleri söyler:
Bu kararının ardından 1984 yılında tamamen özgür yazılımlardan meydana gelen bir işletim sistemi ve bu işletim sisteminin araçlarının geliştirilmesine başlar. Kısaca GNU adı verilen bu çalışmanın açılımı GNU is Not Unix yani GNU, Unix değildir. Stallman sonrasında yazılan diğer özgür yazılımların bir şemsiye altında toplanması için Free Software Foundation'ı yani Özgür Yazılım Derneği'ni kurar ve bu yazılımları korumak üzere General Public License yani Genel Kamu Lisansı adı verilen yazılım lisansını oluşturur. Bu derneğin amacı, özgürce dağıtımı yapılabilecek ve kodları üzerinde değişiklik yapılabilecek GNU projesine destek vermektir. GPL lisansı da temelinde, GNU projesi kapsamında geliştirilen uygulamaların, istenilen herhangi bir amaç doğrultusunda çalıştırma, kopyalama, dağıtma ve geliştirme özgürlüğünün korumasını hedefler.
Linux, Linus Torvalds adında Finlandiyalı bir bilgisayar mühendisinin 1991 yılında Helsinki Üniversitesi’nde henüz bir öğrenciyken, kişisel bilgisayarında kullanmak üzere geliştirmeye başladığı bir işletim sistemi çekirdeğidir. İnternet üzerinden duyurulan Linux çekirdeği, açık kaynak kodlu ve özgür bir yazılım olması sebebiyle programcıların büyük ilgisini çekmiştir ve kısa süre sonra, GNU hareketinin bir meyvesi ve aynı zamanda taşıyıcısı haline gelir. GNU için yazılmış özgür yazılımlar da çok kısa süre içerisinde Linux çekirdeği ile uyumlu hale getirilir ve ortaya güçlü, esnek ve açık kaynak kodlu bir işletim sistemi çıkar. GNU araçlarından ve Linux çekirdeğinden oluşan GNU/Linux işletim sistemi zaman içerisinde telaffuz kolaylıklarından ötürü Linux olarak adlandırılmaya başlanmıştır.
Özgür yazılım, kullanıcıların özgürlüğüne ve topluluğa saygı duyan yazılım demektir. Kısaca, kullanıcıların bir yazılımı çalıştırma, kopyalama, dağıtma, değiştirme ve geliştirme özgürlüğüne sahip olduğu anlamına gelir.
Özgür yazılımın kopyalarına sahip olmak için duruma göre ücret ödemeniz gerekebilir. Ancak kopyalarına nasıl sahip olduğunuzdan bağımsız olarak, her zaman için yazılımın kopyalama, değiştirme ve hatta kopyalarını satma özgürlüğüne sahipsinizdir.
Öyleyse, özgür yazılım bir fiyat değil, özgürlük meselesidir. İngilizcedeki "free software" kavramını anlamak için, bedava ekmeği değil ifade özgürlüğünü düşünmek gerekir. GNU’nun savunduğu dört temel özgürlük bulunmaktadır. Bir yazılım bu dört temel özgürlüğe sahipse, o yazılım özgür yazılımdır.
0 Numaralı Özgürlük: Herhangi bir amaç için, istediğiniz şekilde yazılımı çalıştırma özgürlüğü.
1 Numaralı Özgürlük: Her ne istiyorsanız onu yaptırmak için programın nasıl çalıştığını ögrenmek ve onu değiştirme özgürlüğü. Yazılımın kaynak koduna ulaşabilmek, bu iş için ön koşuldur.
2 Numaralı Özgürlük: Kopyaları dağıtma özgürlüğü.
3 Numaralı Özgürlük: Değiştirilmiş sürümlerinizin kopyalarını dağıtma özgürlüğü.
2 Numaralı Özgürlük sayesinde yazılımı dağıtarak başkalarına yardım edebilirsiniz. 3 Numaralı Özgürlük sayesinde de topluluğun sizin değişikliklerinizden faydalanmasını sağlayabilirsiniz.
Özgür yazılımlar tek çeşit lisansa sahip değildir. Temelde bütün lisanslar benzer olmalarına rağmen, farklı kullanımlara özgü onlarca lisans bulunmaktadır. En çok kullanılan örnekleri aşağıdaki gibidir.
GPL: (Genel Kamu Lisansı) Özgür yazılımların %66'sı tarafından tercih ediliyor. Yazılımın özgür olmasının yanı sıra, özgürlüğünü sürdürmesini de garanti altına alır.
LGPL: (Kısıtlı Genel Kamu Lisansı) GPL'den farklı olarak, yazılımın özgür olmayan yazılımlar tarafından da kullanılabilmesine olanak tanıyor.
Apache Lisansı GPL'e ek olarak, patentlere yönelik belirli kısıtlamalar içeriyor.
Açık kaynak kodlu bir yazılım özgür olmayabilir. Ancak, özgür bir yazılım açık kaynak kodludur. Açık kaynak teknik avantajlara odaklanır. Yazılımı açık kaynak olarak geliştirmek teknik olarak daha başarılı bir model olduğu için tercih edilir. Özgür yazılım ise teknik avantajlarının yanı sıra işin toplumsal boyutunu ve özgürlük kavramını da ele alır.
Güvenilirlik: Açık kaynak kodlu yazılımların belki de en büyük artısı olan güvenilir oluşları, kimi çevreler tarafından doğru olmayan bir mantıkla bir dezavantaj gibi gösterilmeye çalışılmakta ve topluma ‘Açık kaynak kodlu bir yazılımın tam olarak nasıl çalıştığı kaynak koduna bakılarak bilinebildiği için yazılımın barındırdığı güvenlik problemleri saldırganlar tarafından kolaylıkla tespit edilip kullanılabilmektedir’ gibi bir düşünce yerleştirilmeye çalışılmaktadır. Fakat açık kaynak kodlu bir yazılım, doğası gereği geliştirilmesi sürecinden kullanımı zamanına değin onbinlerce göz tarafından denetlenmektedir. Var olması muhtemel bir güvenlik problemi ya da kötü niyetli bir programcı tarafından bilinçli olarak yerleştirilebilecek bir kod parçası yazılım sizin elinize ulaşmadan tespit edilmekte ve hızla düzeltilmekte ya da size ulaşması engellenmektedir. Ayrıca kimse, binlerce insanın kollektif bir şekilde geliştirdiği bir yazılımın güvenilmez olduğunu idda ederken, sınırlı sayıda kişinin geliştirdiği ve kaynak kodunu kapattığı bir yazılımın güvenilirliğini kimin ve nasıl garanti edeceği sorusuna yanıt veremez.
Sağlamlık: Yine açık kaynak kodlu yazılımların doğal geliştirme süreci içerisinde çok sayıda insan tarafından denenmeleri ve kaynak kodlarının gözden geçirilmesi sonucunca ortaya yüksek kalitede, stabil ve kuvvetli yazılımlar çıkmaktadır.
Esneklik: Kaynak kodu açık bir yazılım hızla ve kolaylıkla yeni bir sistem üzerinde çalışacak şekilde yeniden yapılandırılabilmekte, bir kısmı çıkarılarak kapsamı daraltılabilmekte ya da eklenen yeni fonksiyonlarla kapsamı genişletilebilmektedir.
Uygulama Desteği: Çok geniş bir yelpazede ve çeşitlilikteki bir çok açık kaynak kodlu özgür yazılım her gün duyurulmaktadır. Herhangi bir konudaki ihtiyaç açık kaynak kodlu yazılımlarla hızlı ve kaliteli bir şekilde çözüme kavuşturulabilmektedir.