Giriş
Günümüzde kullandığımız bilgisayarlar 1960’lı yıllardan beri hayatımızdalar. Söz konusu yıllarda Fortran, C gibi programlama dilleri ile geliştirilen yazılımlar ve bu yazılımların üzerinde çalıştığı bilgisayarlar çoğunlukla araştırma merkezleri ve üniversitelerde kullanılmaktaydı. Akademik amaçlar için kullanılan bu programlar çoğu zaman kodlarıyla birlikte kullanıcılarına sunulmaktaydı. 1970’li yıllara gelindiğinde bazı firmalar kendi yazılımlarının kodlarını kullanıcılarıyla paylaşmamaya ve yazılımlarının kendilerinden izinsiz çoğaltılmasını kısıtlayan kullanım modellerine yönelmeye başlamıştır. Bunun günümüzde en bilinen ve esasında özgür yazılım kavramını ortaya çıkaran örneği Richard M. Stallman’ın o yıllarda çalıştığı MIT Yapay Zeka Laboratuvarında yaşanmıştır [1]. O yıllarda araştırmacı olarak çalışan Richard Stallman ve çalışma arkadaşları, ofiste kullandıkları yazıcıda kağıt sıkıştıkça bunu bildiren bir iyileştirme yapmak istemişlerdir ancak yazıcı sürücüsünün kaynak kodlarına erişememeleri üzerine yazıcı üzerinde bu iyileştirmeyi yapamamışlardır.
Stallman’a göre yazılımlar firmaların haklarından önce kullanıcıların haklarını gözetmelidir. Bu nedenle kullanıcıları kısıtlayan değil, kullanıcıların haklarını gözeten ve savunan bir yazılım lisansı tanımı yapma ihtiyacı duymuştur. Bu ihtiyaçtan yola çıkan Stallman, Özgür Yazılım tanımını yapan Genel Kamu Lisansı’nı (General Public License, GPL) 1983 yılında duyurmuştur. Genel Kamu Lisansı, geliştirilen bir yazılımın “özgür yazılım” olarak tanımlanabilmesi için aşağıdaki dört şartı sağlaması gerektiğini belirtmektedir:
- Yazılımı herhangi bir amaç için kullanabilme özgürlüğü (Özgürlük 0)
- Yazılımın nasıl çalıştığını anlama ve değiştirme özgürlüğü (Özgürlük 1)
- Yazılımın kopyalarını yeniden dağıtma özgürlüğü (Özgürlük 2)
- Yazılımı geliştirme ve geliştirilmiş sürümü dağıtma özgürlüğü (Özgürlük 3)
Geliştirilen bir yazılımı özgür yazılım olarak tanımlayabilmek için, bu yazılımı özgür bir yazılım lisansı altında yayınlamak gerekmektedir. Günümüzde Genel Kamu Lisansının yayınlanmış üç temel sürümü bulunmaktadır:
- GPLv1 [2]: 1989 yılında yayınlandı.
- GPLv2 [3]: 1991 yılında yayınlandı.
- GPLv3 [4]: 2007 yılında yayınlandı.
Yazılımlar, kendi başlarına çalışan bağımsız uygulamalar olarak geliştirilebileceği gibi, başka yazılımlar tarafından kullanılan kütüphaneler şeklinde de geliştirilebilir. Genel Kamu Lisansı, bir yazılımın başka bir yazılım tarafından kullanılması durumunda (eğer yazılım başkalarıyla paylaşılacaksa veya satılacaksa), kullanan yazılımın da bir özgür yazılım olmasını gerektirir. Bu kısıtlamayı kaldırmak ve özgür yazılım olarak geliştirilen kütüphanelerin özel mülkiyetli yazılımlar içerisinde kullanılabilmesi için Özgür Yazılım Vakfı ayrıca “Lesser General Public License / LGPL” adında bir lisans türü de sunmaktadır. LGPL’in de tıpkı GPL gibi üç farklı sürümü bulunmaktadır [5].
Richard Stallman, 4 Ekim 1985 tarihinde özgür yazılım hareketi ve GNU projesini desteklemek üzere kar amacı gütmeyen bir sivil toplum örgütü olan Özgür Yazılım Vakfı’nı (Free Software Foundation, FSF) kurmuştur. Özgür Yazılım Vakfı’nın misyonu, bilgisayar kullanıcılarının özgürlüğünü teşvik etmek ve tüm yazılım kullanıcılarının haklarını savunmaktır. Bu amaçla, özgür yazılımın geliştirilmesini ve kullanımını destekler, özellikle GNU işletim sistemi üzerinde çalışır ve Dijital Kısıtlamalar Yönetimi (Digital Rights Management, DRM) ve yazılım patentleri gibi tehditlere karşı kampanyalar yürütür [6].
Özgür Yazılım Ücretsiz Yazılım mı Demek?
Özgür yazılım kavramı sıklıkla ücretsiz yazılım olarak algılanır. Bu yanlış bir anlaşılmadır; özgür yazılımın temel ilkeleri olan dört özgürlüğün, bir yazılımın ücretli olup olmamasıyla ilgisi yoktur. Özgür yazılım, kullanıcıların haklarına ve özgürlüklerine odaklanır ve bu özgürlükler yazılımın ücretli veya ücretsiz olmasından bağımsızdır. Richard Stallman, birçok röportajında önemli olanın kullanıcıların yazılım üzerindeki özgürlüklerinin korunması olduğunu vurgulamıştır.
Günümüzde, özgür yazılım olarak geliştirilen yazılımların büyük çoğunluğu ücretsiz olarak sunulmaktadır, ancak özgür yazılım geliştiricileri yazılımlarını ücretli olarak dağıtabilir ve kullanıcılarından özelleştirme, entegrasyon, eğitim ve profesyonel destek gibi hizmetler için ücret talep edebilir; bu yaklaşım özgür yazılımların sürdürülebilirliğini artırır. Bu tarz ücret talebinde bulunmayan diğer özgür yazılım projeleri için ise kullanıcıların her zaman geliştiricilere bağış yapma hakkı bulunmaktadır.
Açık Kaynak Yazılım, Özgür Yazılım mıdır?
Günümüzde “özgür yazılım” teriminden çok “açık kaynak” (open source) terimiyle karşılaşılmaktadır. Her iki terim çoğu zaman aynı veya benzer amaçlarla kullanılıyor olsa da aslında birbirinden farklı iki kavramı ifade etmektedir [7]. “Açık kaynak”, bir yazılımın geliştirme metodolojisini belirtmektedir; örneğin “bu yazılım açık kaynaklıdır” dendiği zaman yazılımın kodlarının erişilebilir olduğu kastedilmektedir. Ancak geliştiriciler kodları açık olarak sunmalarına rağmen kullanıcılara “kodları değiştiremezsiniz” veya “yazılımı paylaşamazsınız” tarzı kısıtlamalar sunabilir.
“Özgür yazılım” ise, geliştirilen bir yazılımın daha önceden belirtilmiş olan dört özgürlüğün dördünü de kapsayan “açık kaynak üstü” bir felsefedir. Her özgür yazılım doğası gereği açık kaynak yazılımdır, ancak her açık kaynak yazılım özgür yazılım olmak zorunda değildir.
Kısacası bir yazılımın açık kaynak olması, özgür yazılım olması için gerekli koşullardan sadece biridir. Diğer üç maddeyi sağlamayı garanti etmez. Ayrıca açık kaynak yazılım, tarihsel olarak özgür yazılımı şirketler için daha piyasa dostu hale getirmek amacıyla ortaya çıkmıştır ve popülerleşmek adına özgür yazılımın dört temel ilkesinden taviz vermeyi tercih etmiştir.
Copyleft
Copyleft terimi, Copyright (telif hakkı) terimine yapılan bir kelime oyunudur. Copyright, kullanıcı özgürlüğünü kısıtlarken, Copyleft ise aynı telif hakkı mekanizmasını kullanarak özgürlüğü garanti altına almayı amaçlar. Bu nedenle Copyleft, Copyright’a bir alternatif değil, aksine telif haklarını hackleyerek [8] kullanıcı haklarının sürekliliğini sağlamaya yönelik bir yaklaşımdır. Copyleft kurallarına uymayanlar için yine telif hakkı yasaları devreye girer. Çünkü yazılım geliştiricisi, “Bu yazılımın ve türevlerinin her zaman özgür kalması için belirli haklardan feragat ediyorum. Ancak bu kurala uyulmazsa yazılımımı kullanamazsınız.” demektedir.
Copyleft tek başına uygulanabilen bir yöntem değildir; başta GPL olmak üzere çeşitli lisans türleriyle birlikte kullanılır.
Copyleft kullanıldığında, telif hakkı sembolü (©) yerine ters C (🄯) kullanmak eğlenceli görünebilir, ancak bu yasal olarak hatalıdır. Çünkü Copyleft, telif hakkına dayanır. Bu nedenle, eserin bir telif hakkı ibaresi taşıması gerekir ve bu ibare, ya Copyright sembolünü ya da “Copyright” kelimesini içermelidir.
Özel Mülkiyetli Yazılımlar: Kısıtlamalar ve Dezavantajlar
Özel mülkiyetli yazılımlar, kullanım, değiştirme ve dağıtım hakları yazılım geliştiricisi veya sahibi tarafından kısıtlanmış olan yazılımlardır. Bu tür yazılımlar genellikle kapalı kaynak kodludur ve kullanıcılar yalnızca geliştiricinin belirlediği şartlar doğrultusunda yazılımı kullanabilir. Özel mülkiyetli yazılımlar kullanıcılar için gizemli bir kutu gibidir. Kullanıcılar bu yazılımların nasıl çalıştıklarını inceleyemez, değiştiremez ve gereksinimlerine göre özelleştiremez. Bu durum, kullanıcıların yazılım üzerindeki kontrolünü ciddi şekilde kısıtlamakta ve kimi zaman kullanıcıların dezavantajına olan sonuçlar doğurabilmektedir:
Sınırlı kontrol: Kullanıcılar, özel mülkiyetli yazılımların sunduğu özelliklere bağlı kalmak zorundadır. Yazılımın işlevselliği geliştirici firma tarafından belirlenir. Yazılımların güncellemeleri firmanın stratejilerine göre sunulur. Yazılımlar genellikle belirli cihazlarla veya işletim sistemleriyle uyumludur. Kullanıcılar yazılımı kaç farklı cihazda kullanabileceklerini kontrol edemez.
Güvenlik ve gizlilik: Kullanıcılar, kaynak kod paylaşılmadığı için yazılımın güvenilir olup olmadığını bağımsız olarak doğrulayamaz. Birçok özel mülkiyetli yazılım günümüzde daha önceden olmadığı kadar çok kullanıcı verisi toplamakta ve bunları işlemektedir. Bu, çoğu durumda veri toplama seçenekleri devre dışı bırakılamadığı için kullanıcılarda veri gizliliği konusunda endişe yaratıcı bir problem olarak karşımıza çıkmaktadır.
Yüksek maliyet: Özel mülkiyetli yazılımlar genellikle yüksek kullanım lisansı ücretleri ile gelir. Özellikle son yıllarda birçok yazılım firması ürünlerini aylık veya yıllık abonelik tarzı lisanslamaya yönelmiştir. Yazılım firmalarının geliştirdikleri ürünlerden maddi gelir elde etmek istemeleri doğal bir durumdur. Ancak, kullanıcıların yazılımı yalnızca belirli süreler boyunca kullanabilmesine olanak tanıyan abonelik tabanlı lisanslama modelleri, uzun vadede mali yükü artırmaktadır. Bunun yanı sıra, firmalar yazılım güncellemeleri için ek ücretler talep edebilir. Tüm bunlar bir araya geldiğinde, kullanıcıların yazılımı kullanmaya devam edebilmek için düzenli ödeme yapmaları gerekliliği ortaya çıkmaktadır.
GNU/Linux
Günümüzde en yaygın tanınan ve kullanılan özgür yazılım şüphesiz ki Linux çekirdeğidir. İlk sürümü 1991 yılında Helsinki Üniversitesi’nde öğrenci olan Linus Torvalds tarafından bir hobi projesi olarak duyurulan Linux çekirdeği, yıllar içerisinde giderek büyüyen bir kullanıcı ve geliştirici kitlesi sayesinde büyük bir başarı elde etmiştir. Günümüzde Linux çekirdeği kişisel bilgisayarlardan sunuculara, cep telefonlarından akıllı arabalara ve süper bilgisayarlara kadar milyonlarca cihazda kullanılmaktadır.
Linux çekirdeğinin bu kadar geniş bir donanım çeşitliliği üzerinde çalışmasının en büyük sebebi hiç şüphesiz ki bir özgür yazılım olmasıdır; özgür yazılım olmasının getirdiği avantajlar sayesinde geliştiriciler çekirdek üzerinde farklı donanımlar üzerinde çalışabilmesini sağlayacak katkılar yapabilmektedir. Bu esneklik, Linux çekirdeğinin farklı mimarilere sahip cihaz ve sistemlerde kullanılmasını mümkün kılmaktadır.
Günümüzde Linux çekirdeğine sahip sistemler birçok farklı donanım türünde çalışabilmektedir:
- Kişisel bilgisayarlar: GNU/Linux sistemler, uzun yıllar boyunca daha çok teknik kullanıcılara yönelik olarak görülmüştür ve bu nedenle kişisel bilgisayar piyasasında yer edinmekte zorlanmıştır. Ancak Ubuntu, Fedora gibi kullanıcı dostu GNU/Linux dağıtımları artık ev kullanıcılarından yazılım geliştiricilere ve akademisyenlere kadar geniş bir kullanıcı kitlesinin günlük bilgisayar ihtiyaçlarını karşılamaktadır. Uzun yıllardır ofis yazılımlarından medya oynatıcılara, grafik tasarım araçlarından video düzenleme programlarına, yazılım geliştirme ortamlarından bilimsel araştırma araçlarına kadar pek çok alanda geniş bir yazılım yelpazesi sunan GNU/Linux tabanlı masaüstü işletim sistemleri, son yıllarda Valve firmasının oyun platformu olan Steam’in GNU/Linux desteğini artırması, geliştiricilerin oyunları farklı platformlarla uyumlu olacak şekilde geliştirmeleri ve ekran kartı üreticilerinin artan destekleri sayesinde oyun konusunda da önemli bir gelişme göstermiş ve rekabetçi hale gelmeye başlamıştır.
- Sunucular: Güvenilirlik ve esneklik özellikleri nedeniyle GNU/Linux tabanlı işletim sistemleri dünya genelinde sunucular için en çok tercih edilen işletim sistemidir. Alphabet (Google), Amazon ve Meta (Facebook) gibi teknoloji devleri, sundukları teknolojilerin altyapısında GNU/Linux tabanlı sunucular kullanır.
- Mobil cihazlar: Android işletim sistemi Linux çekirdeği üzerine inşa edilmiştir ve dünya genelinde milyarlarca cihazda kullanılmaktadır.
- Gömülü sistemler: Akıllı arabalar, ev otomasyon sistemleri ve benzeri diğer gömülü sistemlerde yüksek uyarlanabilirliği ve performansı nedeniyle Linux çekirdeği yaygınlıkla tercih edilmektedir.
- Süper bilgisayarlar: Dünya genelindeki en güçlü ilk 500 süper bilgisayarın hepsi, büyük ölçekli veri işleme ve hesaplama görevlerinde yüksek performans sağladığı için GNU/Linux sistemlerle çalışmaktadır [9].
Bilgisayar kullanıcıları günümüzde karşılarına çıkan birçok kaynakta “Linux” ve “GNU/Linux” terimlerinin kullanıldığını görmektedir. Çoğu kaynağın iki terimi de aynı şeyi ifade edecek şekilde kullanmasına rağmen esasen aralarında fark vardır. “Linux” sadece çekirdek yazılımını ifade ederken, “GNU/Linux” terimi, çekirdek ile birlikte birçok özgür yazılım bileşenini içeren tam bir işletim sistemini ifade eder. Linux çekirdeği, işletim sisteminin donanım ile haberleşen, dosyaları, belleği ve programları yöneten yazılım rolününü üstlenirken GNU, temel araçlar, kütüphaneler ve yazılımlar sağlayarak işletim sistemi için gerekli bileşenleri sunar. Bu nedenle, yaygın olarak “Linux işletim sistemi” olarak anılan yapı aslında “GNU işletim sistemi”ni ifade eder. Linux çekirdeği, GNU işletim sistemiyle birlikte çalıştığından, bu sistemin doğru adı “GNU/Linux” olmaktadır.
Özgür Yazılıma Katkı ve Destek Vermek Çok Kolay!
Yazılımlar halk tarafından genellikle sadece yazılım geliştiricilerin işi olarak görülür, programlama bilgisi gerektiği düşünülür. İşin gerçeği böyle değildir; programlama bilgisine sahip olsun olmasın, herkes farklı yöntemlerle kullandıkları yazılımlara katkı verebilir:
- Kullanabilirsiniz: Kişisel cihazlarınızda kullandığınız kapalı kaynak kodlu özel mülkiyetli yazılımların alternatifi olarak güvenle kullanabileceğiniz özgür yazılımlara yönelebilirsiniz.
- Çevrenize paylaşabilirsiniz: Beğenerek kullandığınız özgür yazılımları çevrenizdeki insanlarla paylaşarak bu yazılımların daha fazla kişi tarafından tanınır hale gelmesini sağlayabilirsiniz.
- Bağış yapabilirsiniz: Beğenerek kullandığınız bir yazılımın geliştiricilerinin emeklerinin karşılığı olarak maddi destek verebilirsiniz.
- Hata bildirebilirsiniz: Kullandığınız yazılımın yeni sürümünde daha önceden olmayan bir hata mı ortaya çıktı? Hatayı geliştiricilere raporlamak geliştiricilerin bu hatalardan haberdar olmalarını sağlar, hata raporunu inceleyen geliştiriciler veya diğer katkı verenler tarafından bu hatalar giderilir ve yazılımın ileri sürümlerinde hatalar giderilmiş olarak yazılımı kullanabilirsiniz.
- Çeviri yapabilirsiniz: Günümüzde yazılımlar ya İngilizce olarak, ya da geliştiricilerinin anadilinde kullanıcılara sunulur. Farklı dil konuşan kullanıcılar, uygulamanın arayüz ve belgelerinin kendi dillerindeki çevirilerini hazırlayıp geliştiricilere ileterek yazılımın gelecekteki sürümlerinin daha fazla dil desteklemesini sağlayabilir.
- Hata düzeltmesi yapabilirsiniz: Programlama tecrübesine güvenen özgür yazılım kullanıcıları, kendi karşılaştıkları veya diğer kullanıcıların bildirdikleri hataları bizzat kendileri düzeltebilirler ve yazdıkları kodları geliştiricilerin onayına sunarak yazılımın bir sonraki sürümünde hataları bizzat kapatan kişi olabilirler.
- Yeni özellik ekleyebilirsiniz: Herkes zaman zaman kullandığı yazılımlar için “iyi güzel ama keşke şu özellik de olsaydı…” tarzı düşüncelere kapılabilir. Bu başlı başına yeni bir özellik eklemek de olabilir, bir sağ tıklama menüsüne işleri kolaylaştıran kısayol eklemek de olabilir. Bir üst maddedeki gibi programlama yeteneğine güvenen özgür yazılım kullanıcıları bu özellikleri kendi bilgisayarlarında geliştirebilir, test edebilir ve en sonunda geliştiricilerin onayına sunabilir.
BMO Özgür Yazılım Komisyonu
Kaynaklar
[1] Transcript of Richard M. Stallman’s speech, “Free Software: Freedom and Cooperation”, 2001. https://www.gnu.org/philosophy/rms-nyu-2001-transcript.txt
[2] GPL v1 – Özgür Lisanslar. https://www.ozgurlisanslar.org.tr/gpl/gpl-v1/
[3] GPL v2 – Özgür Lisanslar. https://www.ozgurlisanslar.org.tr/gpl/gpl-v2/
[4] GPL v3 – Özgür Lisanslar. https://www.ozgurlisanslar.org.tr/gpl/gpl-v3/
[5] LGPL v3 – Özgür Lisanslar. https://www.ozgurlisanslar.org.tr/lgpl/lgpl-v3/
[6] About – Free Software Foundation. https://www.fsf.org/about/
[7] https://www.gnu.org/philosophy/open-source-misses-the-point.tr.html
[8] Burada “hacklemek” kelimesi, saldırgan veya zarar verici bir eylem anlamında değil, mevcut bir sistemi yaratıcı bir şekilde değiştirerek farklı bir amaç doğrultusunda kullanmak anlamında kullanılmaktadır. Detaylı bir tanım için http://www.catb.org/jargon/html/H/hacker.html adresi incelenebilir.
[9] TOP500, 2025. https://top500.org/