Özgür Yazılım Felsefesi
Özgür Yazılım Nedir? Neden Önemlidir?
Özgür yazılım felsefesi ile ilgili yazdığım detaylı bir yazıya buradan ulaşabilirsiniz.
Hatırlarsanız, daha önce yazılım kavramından bahsetmiştik. Yazılımları geliştirmek için, "programlama dilleri" kullanırız. Bu diller, günlük konuşma diline yakınsa "yüksek seviyeli", makine diline yakınsa ise "düşük seviyeli" olarak adlandırılır. Bu isimlendirme, dillerin yeteneklerinden bağımsızdır. Yani yüksek seviyeli bir dil, düşük seviyeli bir dilden daha iyidir gibi bir durumdan söz edilemez.
Programlama dilleri, çalıştırılma şekillerine göre de ikiye ayrılabilir: Derlenen (compiled) ve yorumlanan (interpreted) diller.
C, C#, C++, Go gibi diller, derlenen dillere örnek olarak verilebilir. Bu dillerin birkaç özelliğini şöyle sıralayabiliriz:
- Yazdığınız kod, bir derleyiciden (compiler) geçer ve makine koduna çevrilir. Bu makine kodu, CPU'nuz tarafından çalıştırılabilir fakat insanların anlayabileceği kolaylıktan oldukça uzaklaşmış durumdadır.
- Kodda bir değişiklik yaptığınızda, bu derleme sürecini tekrarlamanız gerekir.
- Doğrudan makine dilinde bir sonuç ürettikleri için, daha hızlı ve verimli çalışırlar. Ayrıca CPU kullanımı ve bellek yönetimi gibi konularda elinizi güçlendirirler.
- Derlemeyi yaparken, hedef bir işlemci mimarisi (x86, x86_64, ARM gibi) seçmeniz gerekir. Ayrıca, programınızı çalıştırmak istediğiniz işletim sistemine uygun şekilde derlemeniz gerekir.
- Örneğin, x86_64 Linux için derlenmiş bir programı, 32-bit Windows'unuzda - normal şartlarda - çalıştıramazsınız.
Program Seçimi
Bu yüzden, herhangi bir program indirmek istediğinizde karşınıza 32-bit, 64-bit gibi seçeneklerin yanında işletim sistemi seçenekleri de çıkar.
PHP, Python, JavaScript gibi dilleri, yorumlanan dillere örnek olarak verilebilir. Bu dillerin birkaç özelliğini şöyle sıralayabiliriz:
- Bu dilleri kullanmak için, bilgisayarınıza bir "yorumlayıcı" kurarsınız. Yorumlayıcı, sizin için bu dili makine diline çevirir ve CPU'nuzun bunu çalıştırmasını sağlar.
- Arada bir katman olduğu için, derlenen dillere göre daha yavaş çalışırlar. Fakat bu fark, teknoloji ilerledikçe kapanmaktadır.
- Kodunuzda bir değişiklik yaptığınızda, aynı programı tekrar çalıştırıp güncel hâlini kullanmaya hemen başlayabilirsiniz.
- Yazdığınız kodu, platform bağımsız çalıştırabilirsiniz.
Nasıl Platform Bağımsız?
İlgili dili kullanmak için, zaten ilk etapta kurduğunuz yorumlayıcı (interpreter), sizin kendi platformunuza uygun olmalıdır. Dolayısıyla aynı kodu yorumlayıp kullanmaya devam edebilirsiniz.
Basit bir örnek verelim. C dilinde bir kod yazdım. Derledim. Bir program elde ettim. Bu, yaptığım derlemeye göre sizin sisteminizde çalışmayabilir. Ancak bir PHP kodu yazdıp bunu size verdiğimde, kendi sisteminizdeki PHP yorumlayıcısını kullanarak rahatlıkla çalıştırabilirsiniz.
Hikayenin Başlangıcı
Richard Matthew "RMS" Stallman, 16 Mart 1953 doğumlu yazılımcıdır. 1971 yılında, MIT Yapay Zeka (Artificial Intelligence, AI) Laboratuvarı'nda çalışmaya başlayan RMS; zaten yıllardır var olan bir "yazılım paylaşım topluluğuna" katıldı. Bu dönemde, yazılan programın paylaşılması gayet normal karşılanan bir durumdu. "Zaten olması gereken bu" düşüncesi vardı. Bu toplulukta, birlikte çalışan ve bilgisayar kullanan insanlar, karşılaştıkları sorunları çözebilmek için birtakım yazılımlar geliştiriyor. Bunları, kendi aralarında özgürce paylaşıyor. Oldukça etkin bir "hacker" topluluğu.
Hacker Kavramı
Stallman'a göre hack, "Eğlenceli bir zekanın mümkün olan sınırlarını keşfetmesidir". Hacking toplulukları, 1960'lı yıllarda MIT başta olmak üzere bazı üniversitelerde oluşmaya başladı. Bu topluluğun üyeleri; yazılım geliştirmekten tutun kampüsün gizli saklı yerlerini keşfetmeye, herhangi bir sistemde açık bulmaktan tutun da (öğrenci işlerinde daha az sıra beklemek gibi) zekice şakalara kadar birçok noktada aktifti.
Fakat 1980'li yıllara gelindiğinde, bu becerileri daha negatif amaçlar için kullanan kişiler medyanın dikkatini çekti ve "hack" kelimesi, "kırmak, bozmak, izinsiz giriş yapmak" gibi kavramlarla ilişkilendirildi. Benzer şekilde "hacker" kelimesi ise "bilgisayar korsanı, sistemlere izinsiz giriş yapan kişi" gibi anlamlar kazandı. Ancak gerçek, bundan çok uzak.
Stallman ve arkadaşları, ITS (Incompatible Timesharing System) adı verilen bir işletim sistemini kullanıyordu. Bu sistem, laboratuvardaki hackerlar, dönemin yaygın kullanılan cihazlarından "Digital PDP-10" için yazılmıştı. Stallman'da bu sistemi geliştirmekle görevli kişilerden biriydi.
Digital firması, 1980'lerin başında PDP-10'un üretimini durdurdu. Çünkü cihaz, günün gerektirdiklerini yakalayamaz hâle gelmişti. Böylece ITS için yazılan programlar da rafa kalkmak zorunda kaldı. Bu süreçte MIT'deki birçok çalışanın farklı bir firmada (Symbolics) işe alınmasıyla da, yazılım paylaşım topluluğu ciddi zarar gördü. Dikkat etmenizi istediğim bir nokta var. Burası önemli. Cihaz miadını dolduruyor. İşletim sistemi boşa çıkıyor. İşletim sistemi boşa çıkınca, yazılımlar boşa çıkıyor. Keşke rafa kalkmayacak bir işletim sistemimiz olsa da yazılımlarımız da rafa kalkmasa değil mi?
MIT AI Laboratuvarı, 1982 yılında yeni bir PDP-10 aldı. Fakat bu cihazın üzerinde, MIT'nin ITS'i yerine Digital firmasının kendi - özgür olmayan - işletim sistemi tercih edildi. İşler burada kızışmaya başladı. Öyle bir yapı ki, programın çalıştırılabilir hâlini alıp kullanmak için "gizlilik sözleşmeleri" imzalamak zorunda kalıyorsunuz. Bizler de bu tarz sözleşmeleri, günümüzde sık sık yapıyoruz. En basitinden, Rocket League oyununun "Son Kullanıcı Lisans Sözleşmesi (End User License Agreement, EULA)" incelendiğinde, özetle şunlar karşımıza çıkıyor: Koda dokunma, kurcalama. Yazılımı dağıtma, paylaşma. Bir yazılım ile bir cihazda oyna, başka cihazlarda aynı yazılımı kullanma. Oyunu düzenleme, yeni şeyler ekleme, var olanları çıkarma. Gümrükten geçirirken ne yapacağınıza kadar birçok şey...
MIT'de bir yazıcıda sorun yaşayan Stallman, bu durumu düzeltebileceğini söyleyip yazıcının kontrol yazılımının kaynak kodlarını talep ettiğinde reddedilmişti. Stallman, böyle bir dünya istemiyordu. Kaynak kodların açık olduğu, bilim ve teknolojinin birlikte ilerletildiği dünya; yavaş yavaş değişiyordu. Yaşanan bu değişimden rahatsız olan Stallman, yazılım paylaşım topluluğunu tekrar canlandırmak istedi. Her şeyden önce özgür bir işletim sistemine ihtiyacı vardı ve bu da "GNU" projesinin doğuşuna sebep oldu.
Özgür Olmayan Yazılımların Problemleri
Mülk yazılımlar (proprietary software), kullanıcılarını birçok noktada kısıtlar. Az önce bahsi geçen EULA'lar ya da gizlilik sözleşmeleri, bunun açık örneklerinden.
Burada, yazılımın sahibine bir bağlılık söz konusu. Kullanıcının ihtiyacı, beklentisi, talebi önemsiz duruma düşüyor. Yazılım geliştirici kişi ya da firma size ne sağlarsa, onu kullanabiliyorsunuz. Bunun ötesine geçmeniz imkânsız. Geçtiğimiz yıllarda Türkiye'nin saat dilimini GMT +3'e sabitlemesinden sonra birçok Microsoft Windows çalıştıran cihaz, uzun bir süre saati yanlış gösterdi. Çünkü Microsoft Windows mülk bir yazılımdır ve geliştirici şirket bu konuda bir adım atmadığı takdirde, yazılım üzerinde bir değişiklik yapılamayacaktır. En azından legal olarak. Özgür yazılımlarda ise kararın kabulünden saatler sonra yamalar hazırdı.
Sorularla Mülk Yazılım
Bu noktayı biraz soru-cevap ya da günlük hayat örnekleri üzerinden anlatmak istiyorum.
- Bir adet tişört satın aldınız. Bedenlerinizin uyduğu bir arkadaşınıza, bir aile üyesine vs. bu tişörtü ödünç verebilir misiniz? Tişört sizin, ücretini ödeyip aldınız. Dilerseniz ödünç değil, tamamen hediye olarak bile verebilirsiniz. Değil mi?
- Microsoft Windows 10 lisans koşulları (2.a.): Lisans. Yazılımın satışı yapılmamakta, lisansı verilmektedir. Bu anlaşmanın tüm koşullarına uymanız şartıyla, bu anlaşma kapsamında size, aynı anda yalnızca bir kişi tarafından kullanılmak üzere, cihazınızda (lisanslı cihaz) bir yazılım örneği yükleme ve çalıştırma hakkı veriyoruz.
- Şimdi bu üründen sıkıldınız. Satmak ya da bağışlamak istiyorsunuz. Öyle bir şansınız yok. Tıpkı Microsoft, Sony, Steam, Epic ve buna benzer platformlardan "satın aldığınızı sandığınız" oyunlarda olduğu gibi.
- Bir pantolon ve bir tişört aldınız. Vücudunuzda alerji yaptı. Bir baktınız, bu markadan giyinen herkes alerji yaşıyor. Meğer sorun sizde değil, üründe kullanılan kimyasallardaymış. Bu gidişe bir dur demek istiyorsunuz. Bütün mağdurlar bir araya gelip dava açmak ve hakkınızı aramak istiyorsunuz. Yapamazsınız.
- Adobe Genel Kullanım Koşulları (14.3.): Toplu Dava Açmama. Bizimle olan uzlaşmazlıkları yalnızca bireysel olarak çözebilirsiniz ve bir hak talebini bir topluluğun davacısı ya da topluluk üyesi olarak birleştirilmiş ya da grup adına dava şeklinde getiremezsiniz.
- Tişörtünüzü almıştınız değil mi? 3 yıl sonra evinize gelip "Biz bu baskıyı üzerinden almak istiyoruz. Artık bu olmadan giyeceksiniz." diyebilirler mi? Tabii ki diyebilirler. Tıpkı Microsoft'un, bir güncelleme ile Windows Movie Maker'ı ya da MSN Messenger'ı tarihe gömmesi gibi. Satın aldığınız (satın aldığınızı sandığınız) yazılımdan özellik kaldırılıyor. Windows Movie Maker'ınız elinizden alındıktan sonra Windows kullanmaktan vazgeçmeniz durumunda, muhtemelen bir ücret iadesi de alamayacaksınız. Ya da uzun ve zorlu bir dava sürecine başlayacaksınız.
- Mağazaya girip ürünleri incelemek, denemek istiyorsunuz diyelim. Önce bazı şartları sağlamanız lazım.
- Adobe EULA: Bir Adobe yazılımını indirerek ya da kullanarak; Küba, İran, Irak, Libya, Kuzey Kore, Sudan, Suriye ve ABD ambargosu altındaki ülkelerin vatandaşı olmadığınızı beyan etmiş olursunuz.
Örnekler Hakkında
Bu ve buna benzer örnekleri, gerek bu sayfanın başında linkini paylaştığım yazıda, gerekse web üzerinde pek çok farklı dokümanda bulabilirsiniz.
Özgür Yazılım Nedir?
Özgür yazılım (İngilizce: Free software, Fransızca-İspanyolca: Libre), kullanıcıların özgürlüğüne saygı duyan yazılımlara verilen isimdir. İngilizce'deki "free" kelimesinin, "ücretsiz" ve "özgür" anlamlarına gelmesinden doğan karmaşayı önlemek için bazen "libre software" olarak da kullanılır. Türkçe'de bu iki kavramı net olarak ayırabileceğimiz "özgür" kelimesini kullanıyoruz. Benzer şekilde, yine bu karmaşayı önlemek adına "Free as in freedom." ifadesi de sıklıkla kullanılır.
Bir yazılımın özgür olabilmesi için aşağıdaki 4 şartı sağlaması gerekir:
- Özgürlük 0: Bir programı dilediğiniz gibi, herhangi bir amaç için kullanabilmek.
- Özgürlük 1: Programın mantığı üzerinde çalışabilmek ve hesaplamalarınızı dilediğiniz gibi yaptırabilmek için değiştirebilmek. (Kaynak koda erişim, bu özgürlük için ön koşuldur.)
- Özgürlük 2: Programın kopyalarını dağıtabilmek.
- Özgürlük 3: Düzenlenmiş sürümlerinizin kopyalarını dağıtabilmek. Bu sayede, yaptığınız değişikliklerden herkes faydalanabilir. (Kaynak koda erişim, bu özgürlük için ön koşuldur.)
Özgür yazılım ifadesinin ticaretle ya da fiyatla bir ilişkisi yoktur. Sıklıkla, bir özgür yazılımın ücretsiz olacağı kanısı ile karşılaşırız fakat bu yanlıştır. Aksine, özgür yazılımın sürebilmesi için yazılımların satılması ve geliştiricilerin emeklerinin karşılığını alması desteklenmektedir.
Özgür olmayan yazılımlarda güç, geliştiricinin elindedir. Kullanıcılar düzenleme yapamaz, detayları göremez. Kullanıcı, gerçek anlamda yazılıma sahip bile olmayabilir, kiralayıcıdır. Konakladığınız otel odasının her gece ödemesini yapın. Günleriniz, hatta aylarınız orada geçsin. "Ev kredisi ödüyorum." diyemezsiniz. Kullanım hakkı aldınız. Mülkiyet sizin olmadı, olmayacak.
Özgür yazılımlarda ise, bu ve benzeri durumlar ile karşılaşmazsınız. Çünkü yukarıda belirlenen 4 madde, kullanıcıları koruma altına alır. Özgür yazılım dünyasında, esasında "kullanıcının özgürlüğü" söz konusudur.
Copyleft
Özgür yazılımların mülk hâline dönüştürülmesini engellemek için, copyright terimine ithafen "copyleft" metodu ortaya çıkmıştır. Amacı; yazılımı kısıtlamanın aksine, özgürlüğünü garanti altına almaktır.
Elbette ki yazdığınız yazılımın telif hakkı size ait olacaktır. Bir başkası gelip, üzerinde düzenlemeler yaparsa ve bu yeni ürünü tekrar yayınlamak isterse; devreye copyleft girer. Ortaya çıkacak yeni ürün de özgür yazılım olmak zorundadır. Aksi takdirde yasal yollara başvurabilirsiniz.
Toparlayacak Olursak
Özetle;
- Kullanıcının özgürlüğünün ön planda olduğu,
- Bilim ve teknolojinin önünü açmak isteyen,
- Herkese, her cihaza özgürlük getirmeyi amaçlayan,
- Kişi ya da kurumların kölesi, ürünü olmayı reddeden
bir felsefedir özgür yazılım felsefesi. Bu felsefeye katkı sağlamak için ise yapılabilecek oldukça fazla şey var:
- Özgür yazılımlar geliştirebilirsiniz.
- SaaS (Software as a Service) modeli de dâhil olmak üzere mülk yazılımları reddedebilirsiniz.
- Mümkün mertebe özgür yazılımlar kullanabilirsiniz.
- Özgür yazılımların tanıtımını yapabilir, dokümanlarını hazırlayabilirsiniz.
- Var olan dokümanları ve yazılımları farklı dillere çevirebilirsiniz.
- Özgür yazılım projelerine maddi manevi bağışta bulunabilirsiniz.
- Çevrenize özgür yazılım felsefesini anlatabilirsiniz.
