Özgür Yazılım Nedir? Neden Önemlidir?

Uzun zamandır yazmak istediğim bir konu aslında. Hayli uzun bir yazı olacağını tahmin ettiğim için biraz da gözümü korkutuyordu açıkçası.

Bu yazının amacı; özgür yazılım felsefesini tanıtmak, özgür yazılım ve açık kaynak arasındaki farkı açıklamak, hack kültürünü anlatmak, kişisel verilerin önemini vurgulamaktır.

Elbette ki özgür yazılım hareketinin ilk günlerinde ortalıkta yoktum. Belki de bir ağacın dalındaydım. Bu nedenle, bu yazıya “belgelerin bir derlemesi” gözüyle bakabilirsiniz. Bu durum, yazının “Bağlantılar” kısmını bir hayli önemli kılıyor.

Hatta bu yazıyı boş verip aşağıda verdiğim bağlantıları okuyabilirsiniz.

Richard Matthew Stallman (Özgür yazılım sayesinde özgürlüğünüz olur.)
Richard Matthew Stallman (Özgür yazılım sayesinde özgürlüğünüz olur.)

Yazılım Nedir?

Yazılımın özgürlüğünü tartışmadan önce, yazılımın ne olduğuna kısaca değinmekte yarar görüyorum.

Kısa bir tanım yapmak istersek; yazılım, bilgisayarımızın çalıştırabileceği komutlar dizisidir diyebiliriz. Gereksiz gelenek bozulmasın; işte böyle kelime işlemciler, resim yaptığınız şeyler, oyunlar, medya oynatıcılar falan hep yazılım. E-devlet, aynen, yazılım mesela.

İşe daha teknik bakmayı deneyelim. Bir yazılımcı, bilgisayara yaptırmak istediği işleri belirli bir algoritmada yazar. Burada kullandığı dile “programlama dili” denir. Bu dil, günlük konuşma diline yakınsa “yüksek seviyeli“, makine diline yakınsa “düşük seviyeli” olarak adlandırılır.

Şöyle iki örnek verelim:

Python dilinde “Hello World”:

print("Hello World")

Linux için assembly dilinde “Hello World”:

;Copyright (c) 1999 Konstantin Boldyshev <konst@linuxassembly.org>
;
;"hello, world" in assembly language for Linux
;
;to build an executable:
;       nasm -f elf hello.asm
;       ld -s -o hello hello.o

section .text
; Export the entry point to the ELF linker or loader.  The conventional
; entry point is "_start". Use "ld -e foo" to override the default.
    global _start

section .data
msg db  'Hello, world!',0xa ;our dear string
len equ $ - msg         ;length of our dear string

section .text

; linker puts the entry point here:
_start:

; Write the string to stdout:

    mov edx,len ;message length
    mov ecx,msg ;message to write
    mov ebx,1   ;file descriptor (stdout)
    mov eax,4   ;system call number (sys_write)
    int 0x80    ;call kernel

; Exit via the kernel:

    mov ebx,0   ;process' exit code
    mov eax,1   ;system call number (sys_exit)
    int 0x80    ;call kernel - this interrupt won't return

Makine dili dediğimiz olay, aslında gerçek anlamda makinenin dili. Varsayalım X firması bir CPU üretiyor. Bu CPU’nun anlayabileceği bazı komut setleri (instruction set) hazırlıyor ve ürettiği donanım, bu komutları anlayabilecek şekilde tasarlanıyor. Burada işin iç yüzünü çözebilmek için ciddi düzeyde elektronik bilgisi gerekiyor. O da bende yok.

Yazılımın Çalıştırılabilir Hâle Getirilmesi Süreci

Yukarıda bahsi geçen, yazılımcının bir “dil” kullanarak yazdığı ilk hâli gözümüzün önüne getirelim. Bu formata “kaynak kod (source code)” diyoruz. Okunabilir, anlaşılabilir bir form. Ve bu programlama dilini bilen bir yazılımcı, kodların ne işe yaradığını rahatlıkla anlayabilir.

Yazılan bu kod, “derleyici (compiler)” adı verilen bir yazılıma gönderilir. Burada, hedeflendiği mimariye göre bir assembly karşılık bulur. Yani aslında daha düşük seviyeli bir dile dönüştürülür.

Assembly kodu ise “assembler” dediğimiz farklı bir araç sayesinde “makine kodu“na çevrilir. Bu noktada oluşan kod, makinenin doğrudan anlayabileceği bir formdur. Yine klasik söylem: “Binary, ikili sistem, birler, sıfırlar”. Ve bu formu bir insanın anlaması imkansız diyebiliriz. Seçilmiş kişi değilseniz tabii…

The Matrix (1999) - Neo, Matrix'e karşı bambaşka bir bakış açısı kazanıyor.
The Matrix (1999) – Neo, Matrix’e karşı bambaşka bir bakış açısı kazanıyor.

Konu aslında temelde böyle. Bu, derlenen diller için geçerli. Yorumlanan diller (betik / script) için – Javascript, Python, PHP gibi – durum biraz daha farklılık gösteriyor.

Amacımız belli. Bilgisayara iş yaptırmak. Ortalığı 1’ler ve 0’lar ile doldurmak. Şu yazımda, ENIAC’ı programlayan kadınların uzatma kablolarıyla (ya da jumper, ne derseniz) yaptığı şeyi; bugün klavyeden tuşlara basarak yapıyoruz aslında.

Önemli konu yani…

Linus geyiği

Meselenin Çıkış Noktası^1

Yazının en başında fotoğrafını gördüğünüz kişi, 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ı. Peki bu topluluğun olayı neydi?

Düşününce gayet makul bir topluluk aslında. Birlikte çalışan ve bilgisayar kullanan insanlar, “Şu sorunu nasıl çözdün?” sorusuna “Böyle.” diyerek cevap veriyor. Ya da bir iş arkadaşınızı, bilgisayar karşısında kıvranırken görüyorsunuz ve “Gerek yok, kasma böyle. Bak ben şöyle bir program yaptım, senin işini görür.” diyorsunuz. Günümüz plaza ortamında ise durum bundan epey uzak tabii. Fakat bana kalırsa, özgür yazılımın karşısındaki zihniyetin ürünü oluyor bu davranışlar da. Bakalım…

Stallman ve arkadaşları, ITS (Incompatible Timesharing System) adı verilen bir işletim sistemini kullanıyordu. Laboratuvardaki “hacker“lar (Evet, hacker kötü bir şey değil ve bu konuya değineceğiz.), zamanın sağlam cihazlarından “Digital PDP-10” için yazmıştı bu sistemi. Stallman’da bu sistemi geliştirmekle görevli kişilerden biriydi.

Kısa not: “Timesharing, PDP falan?” derseniz burası: https://alisezisli.com.tr/isletim-sistemi-101-8-tarihe-saygi/

Bu dönemde, yazılan programın paylaşılması gayet normal karşılanan bir durum. “Zaten olması gereken bu” düşüncesi var. “Pilavı ne güzel yapmışsın, tane tane olmuş.” yorumu üzerine gelen, “Pirinci ıslattığın kabın içine birkaç damla limon sık bak iyi oluyor.” cevabı ne kadar doğalsa; “Aaa nasıl yaptın bunu iyiymiş.” yorumunun üzerine “Al bak kod bu, değiştir biraz kullan sen de.” cevabı bir o kadar doğaldı o dönemde.

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 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? Bu konu, bu yazıda çözülecek. Merak etmeyin.

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. “Öyle bir yapı ki” diyerek dramatize etmeye gerek yok değil mi? Biz bu sözleşmeleri, günümüzde sık sık yapıyoruz. En basitinden, baya baya arabalarla gol atmaya çalıştığımız Rocket League oyununun “Son Kullanıcı Lisans Sözleşmesi (End User License Agreement, EULA)^2 incelendiğinde, özetle şunlar karşımıza çıkıyor: Elleme, kurcalama. Dağıtma, paylaşma. Bir yerde oyna, başka yerde oynayamazsın. Oyunu düzenleme, yeni şeyler ekleme, var olanları çıkarma. Gümrükten geçirirken ne yapacağınıza kadar birçok şey…

Özgür Olmayan (Mülk) Yazılımların Temel Sıkıntısı

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 imkansız. Geçtiğimiz yıllarda Türkiye’nin saat dilimini GMT +3’e sabitlemesinden sonra birçok Microsoft Windows koşturan 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 sıkıntısı:

Bu noktayı biraz soru-cevap ya da günlük hayat örnekleri üzerinden anlatmak istiyorum.

  1. 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.)^3: 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.
  2. Yukarıdaki madde ne güzel değil mi? “Aaabi orijinal Windows aldım 500 lira verdim.” derken neyi aldığınızı gözden geçirmekte fayda var. Gelelim bir başka örneğe. Az önce yukarıda aldığınız tişört’ün yanına bir de bol cepli kargo pantolon satın alın. 64 GB Apple iPhone misali. Ancak bu ceplere istediğiniz her şeyi koyamazsınız. Hatta cebinizden bir şey almak istiyorsanız, bunu kendiniz yapamazsınız. Apple’ın iTunes’una mahkumsunuz. Elinizde bir veri depolama alanı var. Ancak dilediğiniz gibi kullanma şansınız yok.
  3. Şimdi bu ürünlerden sıkıldınız. Satmak ya da bağışlamak istiyorsunuz. Öyle bir dünya yok. Tıpkı Microsoft, Sony, Steam, Epic ve buna benzer platformlardan “satın aldığınızı sandığınız” oyunlarda olduğu gibi.
  4. Pantolon ve 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.)^4: 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.
  5. 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 giyeceksin.” diyebilirler mi? Tabii ki diyebilirler. Tıpkı Microsoft’un, bir güncelleme ile Windows Movie Maker’ı ya da MSN Messenger’ı tarihe gömmesi gibi.^5 Satın aldığım yazılımdan özellik kaldırılıyor. İyi ama ben o özellik olduğu için satın almıştım? İade alacak mısın? Onu da yapmıyorsun…
  6. Mağazaya girip ürünleri incelemek, denemek istiyorsunuz diyelim. Öyle bir şey yok. Ö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.^6
    • Utanç verici değil mi? Kime, neyi ispatlamaya çalışıyoruz? Neden böyle bir ispat çabamız var?

Örnekler arttırılabilir tabii ki. Ancak mülk yazılım ve ABD gümrük düzenlemeleri bize batıyor. Burada çok netiz.

Stallman’ın Yol Ayrımı

Düzenin değiştiği MIT ortamında; Stallman, yazılım geliştirmeye ve gizlilik anlaşmaları imzalamaya devam edebilir, mülk sistemler üzerinde çalışmalarını sürdürebilirdi. Bundan iyi de para kazanırdı. Ancak…

MIT’de bir yazıcıda – şu meşhur printer’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, bu 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. Bu konuya özel olarak değineceğiz. Şimdi gelelim “yazılımın özgürlüğü” konusuna.

Özgür Yazılım Nedir?^7

Ö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 yazılım hakkında ilk ağızdan bilgi almak isterseniz, Özgür Yazılım Vakfı’nın (Free Software Foundation, FSF) şu sayfasını ziyaret edebilir ve aynı sayfada yer alan, Richard Stallman’ın TEDx Geneva konuşmasını izleyebilirsiniz.

Açık Kaynak Nedir?^8

Açık kaynak için, özgür yazılımda olduğu gibi nokta atışı bir tanım yapamayacağım. Ancak konuyu açıklamaya çalışayım.

1984 yılında, Richard Stallman’ın öncülüğünde özgür işletim sistemi “GNU“nun geliştirilmesi başladı. Yine bu yıllarda, özgür yazılımın şartlarını belirleyen bir de lisans hazırlandı: GNU General Public License (GNU GPL)^9

Fakat 1998 yılına gelindiğinde, topluluğun içinde bazı fikir ayrılıkları ortaya çıktı ve bir grup, “açık kaynak (open source)” ifadesini benimseyerek yolunu ayırdı. Açık kaynak söylemi, özgürlük temelli bir felsefenin “özgürlük” vurgusunu ortadan kaldırıyordu. Bu vurgu ortadan kalkınca, felsefeden söz etmek de çok anlamlı olmuyor. Dolayısıyla elimizde kalan tek şey bir geliştirme metodu oluyor.

“Özgürlük” kelimesini ortadan kaldırıp, yazılım geliştirme süreçlerindeki faydaları ön plana çıkardığınızda, “açık kaynak” kavramı plazalara daha rahat girebilir. Daha rahat pazarlanabilir.^10 Ancak yola çıkış noktası özgürlük olan bir harekette, tamamen pragmatizme yönelmek ne kadar mantıklıdır, tartışılır.

Açık kaynağın tanımı için, Open Source Initiative’in (Açık Kaynak Girişimi) başlıkta verdiğim sayfasına ulaşabilirsiniz. Bu tanımlarda, özgür yazılım felsefesine paralel noktalar göreceksiniz. Ancak sayfanın en altına indiğinizde, bu tanımların “Debian Özgür Yazılım Kılavuzu (Debian Free Software Guidelines, DFSG)“ndan türetildiğini görebilirsiniz. Bu kılavuz, “Debian Toplum Sözleşmesi’nin (Debian Social Contract)” bir bölümüdür.^11

Özgür Yazılım ve Açık Kaynak Arasındaki Farklar

Felsefe ve vurgulanan noktalardaki temel farklılıkların ötesine geçmeye çalıştığımızda, konu daha iyi anlaşılacaktır.

Öncelikle şunu belirtmekte fayda var. Her özgür yazılım, doğası gereği, açık kaynaklı olmak zorundadır (4 temel özgürlüğü hatırlayın). Ancak açık kaynaklı her yazılım özgür değildir.

Açık kaynak tarafındaki şartlar, özgür yazılım tarafına göre daha esnektir. “Nasıl yani? Özgür yazılım daha mı sıkı?” demeyin. Burada “özgür yazılım” ifadesiyle kast edilen nokta, kullanıcının özgürlüğüdür. Dolayısıyla evet, kullanıcının özgürlüğünü kesinleştirmek için yazılım lisansını daha sıkı tutmanız gerekir. Aksi takdirde ortaya “Open Watcom” gibi lisanslar çıkabilir. Bu açık kaynak lisansı, düzenlenmiş bir versiyonu kullanmanıza izin vermediği için özgür değildir (nonfree).^12

Bir başka örnek, son zamanlarda adını sık sık duyduğumuz Microsoft Visual Studio Code (VSCode). Kaynak kodları açık olan bu yazılımın içindeki özgür olmayan bileşenler, yazılım üzerinde sahip olmamız gereken 4 temel özgürlüğü kısıtlamaktadır. Kaynak kodları açık olabilir, fakat özgür yazılım değildir.

Daha da önemli bir nokta var. Birçok ürün, çalıştırabilir hâldeki dosyaların (derlenmiş) içinde özel bir imza arar. Bu sayede yazılımın firma tarafından mı yoksa bir başkası tarafından mı derlendiği anlaşılabilir. Dahası, farklı kişi ya da kişiler tarafından derlenmiş programların çalışması engellenebilir. Bu cihazlara “tyrants (tiran, despot)“; yapılan bu işleme de, ilk karşılaşılan cihazın – Tivo – isminden dolayı “tivoization (tivolaştırma?)” denir. Böyle bir durumda, açık kaynak koddan derlediğiniz yeni yazılımı kullanamaz hâle gelirsiniz.

Birçok Android ürün, tivolaştoırılmış Linux içermektedir. Halbuki Linux, GNU GPL v2 ile lisanslanmış bir özgür yazılımdır. Bu durumun da önüne geçmek için GNU GPL v3 lisansı hazırlanmıştır.

İşte bu şekilde özelleştirilen ve değiştirilen yazılımlar açık kaynak kodlu kalmaya devam etmekte lâkin özgürlüğünü kaybetmektedir.

Özetle; neyi savunduğunuzu, idealinizi anlatan bir kavram seçmeniz gerekiyor. Bu noktada Free and Open Source Software (FOSS), Free/Libre and Open Source Software (FLOSS) gibi daha ortada ve kapsayıcı kavramları da kullanmayı düşünebilirsiniz. Ancak özgürlüğünüzü savunmak için özgürlüğünüze vurgu yapmak daha doğru olacaktır.

Özgür Yazılımlardan Para Kazanmak^13

Daha önce belirttiğim gibi; özgür yazılımların satılması, desteklenen bir durumdur. Bir yazılımın özgürlüğü ile fiyatının bir ilişkisinin olmadığını da tekrar vurgulayarak devam edelim.

  1. Bir özgür yazılımı kopyalayıp satabilirsiniz. Dağıtım sırasında ortaya çıkan maliyeti (elektrik, internet, CD/DVD gibi medyalar vs.) karşılayabilir hatta üzerine kâr payı da koyabilirsiniz. Eğer bir yazılım, kopyalarının satılmasına izin vermiyorsa zaten özgür değildir.
  2. Peki bu durumda dilediğim fiyat etiketini koyup satış yapamaz mıyım? Teoride evet, pratikte hayır. Neden derseniz, velev ki Debian 10 sürümünü 10 bin TL’den satıyorum. Almazsınız. (Alır mısınız? TR400…..) Çünkü özgür yazılımların birçok dağıtım yolu vardır. Ayrıca özgür olmayan yazılımlarda karşımıza çıkan “Sadece sen aldın, sen kullan, kimseyle paylaşma.” mantığı; özgür yazılımlarda yoktur. Bu sayede, örneğin, size aşırı pahalı gelen bir oyunu 3-4 arkadaş ortaklaşa alarak aynı şekilde kullanabilme şansına da sahip olursunuz.
  3. Fiyat’ın düşük ya da yüksek olması, özgür yazılımı dağıtan kişiler ve özgür yazılıma sahip olmak isteyen kişiler tarafından belirlenen bir olgu aslında. Özgür olmayan yazılımlarda ise fiyatı belirleyen şirketlerdir.
  4. Özgür yazılımı dağıtmaya bir örnek senaryo: Komşunun bilgisayarına “format” atmanız istendiğinde, korsan bir Windows indirip kuruyorsunuz ve bunun için bir ücret talep ediyorsunuz. Yaptığınız iş baştan aşağı illegal. Özgür bir yazılım olan Debian GNU/Linux’u indirip komşunuza satmanız ise tamamen legal.
  5. Senaryoyu devam ettirelim. Diyelim ki komşunuzun orijinal bir Windows’u var ama kurmayı bilmiyor. Bunun için sizden “destek” almak istiyor. Burada desteğinizi ücretli verebilirsiniz. Benzer şekilde, özgür yazılımlara da ücretli destek verebilirsiniz.
  6. Çok basit bir örnek. Yine tamamen ücretsiz olarak indirebileceğiniz Red Hat Enterprise Linux dağıtımını ele alalım. Kurumunuzun işlerini kolaylaştırabilecek bir işletim sistemi. Ücretsiz. Ancak binlerce makinede sorunlar baş göstermeye başlarsa ne olacak? İşte böyle bir durumda RHEL lisansınızı alıyorsunuz ve lisans kapsamında destek alabiliyorsunuz. (Red Hat firmasının 2018 yılındaki net geliri 434 Milyon USD.)

Neden Özgür Yazılım?^14

Bilgisayarınızı, akıllı telefonlarınızı ya da diğer elektronik cihazlarınızı kim kullanıyor? Gerçekten soruyorum. Çok basitleştirelim. Kettle’ınız var. Suyu 100 derece civarına kadar ısıtıyor, kaynatıyor. Değil mi? Eğer kettle’ınızda herhangi bir derece ayarı yoksa, bu kettle’ın 100 dereceye kadar değil de – örneğin – 75 dereceye kadar ısıtıp kapanmasını sağlayabilir misiniz? Bunun kararını kim veriyor? Yanıt basit, yazılım.

Bilgisayarınızı kullanıyorsunuz ve kullanım sırasında bir sistem güncellemesi geliyor. “Bu güncellemeyi yap, mecbursun.” ya da “Ne yaptığının bir önemi yok, işini bırak ve beni güncelle.” durumuyla karşılaşabiliyorsunuz.^15

Beklenmedik bir anda, yazılımda var olan – hatta belki o yazılımı tercih etmenizi sağlayan bir özellik – ortadan kaldırılabiliyor. Çünkü kontrol, geliştiricinin elinde. “Ben bunu beğenmedim, eski hâli daha güzeldi.” deme şansınız, sadece özgür yazılımlarla mümkün.

Microsoft’un ve hatta diğer birçok şirketin; NSA gibi servislerle çalıştığı bilinen bir gerçek.^16

Temelde yaptığımız iş veri işleme, hesaplama, computing… Adına ne derseniz deyin. Elinizde bir veri var. Bir bilgisayar yardımıyla bu veri üzerinde bazı işlemler yapıyorsunuz. Bu işlemler sırasında da yazılımları kullanıyorsunuz. Eğer biraz olsun yazılım geliştirmeyle ilgilendiyseniz, yapabileceklerinizin yeteneklerinize ve hayal gücünüze bağlı olduğunu fark etmiş olmalısınız.

Örnek senaryo: Bir yazılımım var. Size bir hesap tanımlıyorum. Arkadaşlarınıza da. Ve iletişiminizi bu uygulama üzerinden gerçekleştirebilirsiniz diyorum. Mesajınızı alıyorum, karşıya iletiyorum. Bunu yapabilecek durumdayken, mesajın bir kopyasını da kendime iletemeyeceğimi, bunu başaramayacağımı düşünür müsünüz? “Yok canım olur mu öyle şey ne alakası var mümkün değil.” diyorsanız bütün elektronik eşyalarınızın fişini çekmenizi öneririm. Bazıları pilli oluyor tabii, onları da suya atın.

Özgür olmayan yazılımlarda; güç, geliştiricinin elindedir. Kullanıcılar düzenleme yapamaz, detayları göremez. Kullanıcı, gerçek anlamda 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 olmayan yazılımlar sizi sansürleyebilir. Ve bunu hiç beklemediğiniz noktalarda yapabilir. Tıpkı Amazon’un, “yetkisiz kişiler tarafından eklendiği” gerekçesiyle George Orwell’in 1984 ve Hayvan Çiftliği kitaplarını Kindle’lardan silmesi gibi.^17 İronik…

Ya da Uber gibi masum görünen bir taşıma programının, bir anda ses kayıt cihazına dönüştürülebileceği gündeme gelebiliyor.^18

Bu mevzuların büyük çoğunluğu – yani elleme, kurcalama, kaydedeyim, log’layayım konuları -, karşımıza yine ironik bir kisve altında sunuluyor: Güvenlik. Sizin güvenliğiniz, kullanıcılarımızın güvenliği. Hayatınızı kolaylaştırıyoruz. Sizi daha yakından tanımak istiyoruz. Taleplerinize daha doğru yanıtlar vermek istiyoruz. “OK Google” dediğiniz anda emrinize amade olmak istiyoruz. Peki. İyi, hoş. Ancak yatak odamdaki muhabbeti bile dinlemek zorunda mısınız? Öylelermiş anlaşılan…^19

Ya da öyle güzel bir müzik uygulaması yapalım ki; dinleyicileri tanısın, analiz etsin. Ve insanların müzik zevklerini anlayıp sevebilecekleri yeni müziklerle buluştursun. Sene sonunda istatistiklerinizi size döksün ve 500 tane story atmanıza sebep olsun falan. Hatta topluca playlist’ler oluştursun ve benzer müzikleri bir araya getirsin. Ama bu sırada, mesela, sanatçının alacağı paranın miktarını azaltmayı teklif etsin. Kıymetli Spotify’ımız, sevdiğimiz sanatçıya dönsün ve “Alacağın paranın azalması karşılığında seni boost’layabilirim.” desin. Siz de “Ayy en çok seni dinlemişim bak hayranım sana.” demeye devam edin.^20

Kişisel bilgilerinizi toplayan, sizi bir ürüne dönüştüren, arkaplanda hiç bilmediğimiz ya da sonradan ayyuka çıkan bir sürü iş çeviren şirket ve uygulama sayısı bunlarla sınırlı değil. Stallman’ın web sitesine girdiğinizde; Airbnb, Amazon, Apple, Microsoft, Discord, Netflix, WhatsApp, Zoom gibi birçok yazılımın neden tehlikeli olduğunu görebilirsiniz.^21

GNU Projesi^22

Stallman’ın yol ayrımından bahsetmiştik. Madem yazılım özgürlüğünü tekrar geri getirmek istiyoruz, en başta bir işletim sistemi yazmamız gerekiyor.

Bu düşünce de bizi “GNU” projesine getiriyor. “Unix gibi olan ancak Unix olmayan” bir işletim sistemi projesinden bahsediyoruz. Stallman’ın deyimiyle, bu ismin kendisi bile bir hack (Hack ve hacker konusuna hâlâ değinmedik, değineceğiz.). Recursive bir kısaltma bu: GNU is not Unix.

Kesinlikle ama kesinlikle “ci en yu” ya da “ge ne u” diye okunmaz. “Gınuv” benzeri bir şekilde söylenmesi gerekiyor.^23 Kelime oldukça basit aslında. Recursive bir isim, fakat aynı zamanda bir hayvanın adı. Afrika antilopu. Öküz başlı antilop olarak da geçer. Serengeti ovalarında yaşar, Savana’da beslenirler.^24

Karda kışta, sırt çantamda neden bir GNU ve Debian logosu taşıdığımı anlıyorsunuz bence:

Debian logosu (solda) ve GNU logosu (sağda)
Debian logosu (solda) ve GNU logosu (sağda)

Bir işletim sistemini yazmak, takdir edersiniz ki, ciddi bir iştir. Bir kişinin tek başına hazırlayabileceği – hele ki günümüzde – bir iş değil. Yapılmaz mı, tabii ki yapılır. Ancak ne kadar sağlıklı olur, tartışılır.

1984’ün Ocak ayında, MIT’deki işinden ayrılan Stallman, GNU üzerinde çalışmaya başladı. Aksi takdirde, MIT’nin bu projeyi sahiplenmesi ve amacından saptırması mümkün olabilirdi.

Stallman, işe başlarken hâli hazırda ortada olan özgür yazılımları projeye dâhil etti. Ancak tabii ki her programı alıp kullanması mümkün değildi, çünkü özgür değillerdi. Dolayısıyla temelde, yazılım geliştirmek için gerekli ortamı hazırlamak adına bir compiler ve bir de metin editörü yazmaya başladı. Bugün kullandığımız “GNU C Compiler (GCC)” ve “GNU Emacs” yazılımlarının ortaya çıkış hikayesi budur.

GCC yazar ve lisans bilgileri (GCC 4.8.5 man sayfasından)
GCC yazar ve lisans bilgileri (GCC 4.8.5 man sayfasından)
ls yazar ve lisans bilgileri (coreutils 8.22 man sayfasından)
ls yazar ve lisans bilgileri (coreutils 8.22 man sayfasından)

Tabii ki Stallman, tüm yazılımları kendisi geliştirmedi. Fikirlerini paylaşan ve/veya benimseyen diğer hacker’lar da yazılımlar geliştirdi ve projeye katkı sağladı. Bu sayede, geliştirilmesi hâlâ devam eden ve birçok kategoride dünyanın en çok kullanılan işletim sistemi olan GNU ortaya çıktı.

Buraya kadar geldiyseniz, aklınızda şöyle bir soru oluşmuş olabilir: “Ben bir yazılım geliştiriyorum. Başkası bunu alıyor, düzenliyor. Çok ufak değişiklikler yapıyor. Sonra bunu ben yaptım diyerek üzerine konuyor. İş mi bu?”

Değil tabii ki.

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 olacak. Ortada bir emek var. Bir başkası gelip, üzerinde düzenlemeler yaparsa ve bu yeni ürünü tekrar yayınlamak isterse; devreye copyleft giriyor. Ortaya çıkacak yeni ürün de özgür yazılım olmak zorundadır. Aksi takdirde Özgür Yazılım Vakfı’nın avukatları, sizi bulacaktır 🙂^25

Yukarıda vermiş olduğum GCC ve ls örneklerinde, telif hakkı sahibinin “Özgür Yazılım Vakfı” olduğu görülüyor. Dilerseniz, siz de geliştireceğiniz bir özgür yazılımın telif hakkını FSF’e devrederek katkı sağlayabilirsiniz. Burada telif hakkını devretme durumu, şüphe uyandırabilir. Ancak dikkat ettiyseniz, yazar kısmında katkı sağlayan herkesin ismi ya da bu isim listesinin olduğu bir bağlantı yer alıyor. Özgür yazılım dünyasında kimse yaptığınız işin üzerine konmaz, konamaz. Telifin FSF’e devredilmesi, projenizin – eğer yaşanırsa – yasal süreçlerinin yönetilmesinde kolaylık sağlayacak bir durumdur.^26

Linux vs. Hurd (Alix)^27

Çekirdek (kernel), monolithic, microkernel gibi kavramlardan şu yazımda bahsetmiştim. Bu nedenle buralara tekrar girmiyorum.

1990’a gelindiğinde, GNU işletim sisteminin neredeyse her bileşeni hazırdı. Kernel hariç. Mach üzerine, microkernel mimarisi takip edilerek inşa edilmesi planlanan bir projeydi. Bu proje, Mach kernel’ın – söz verildiği gibi – özgür yazılım olarak çıkarılması beklendiği için uzun süre sürüncemede kaldı.

Projenin ilk çıktığı sırada ismi “Alix“‘ti. O zamanlar RMS’in sevgilisi olan bir kadının ismine ithafen. İsim olarak da “Unix” ile uyumlu olması, kadının Unix system administrator olması gibi konular üst üste binince, RMS bir sürpriz yapmak isteyerek kernel isminin Alix olmasını istemişti.

Kernel’ın ana geliştiricisi ise, “Hurd” ismini tercih etti. Alix ise Hurd altında bir servis olarak yazıldı.

Ancak gerek Mach’in beklenmesi, gerekse mimarinin zorlukları nedeniyle proje uzadıkça uzadı.

Bu süreçte, 1991 yılında Linus Torvalds (yukarıda bir fotoğrafı mevcut); Unix uyumlu bir çekirdek geliştirmeye başladı. Sadece kendi bilgisayarında ve belirli donanımlarda çalışabilecek, muhtemelen hiçbir yerde hiçbir zaman kullanılmayacak, sadece keyfi olarak geliştireceğini belirttiği bu proje için insanların fikrini aldı. Proje, katkı görmeye başladı. Linus Torvalds, projesini GPL ile lisanslayıp özgür yazılıma dönüştürdü. Hâl böyle olunca, GNU projesi de bu çekirdeği alıp kullandı. Tahmin edeceğiniz üzere bu meşhur çekirdek “Linux” ve bu işletim sisteminin adı “GNU/Linux“.

Toparlayacak Olursak

Buradan sonrası artık GNU/Linux işletim sistemi özeline dönecek. İşin içine dağıtımlar, özgür olmayan kütüphaneler, binary blobs, bu konuyu müteakiben özgür dağıtımlar, lisans kavgaları, Android problemi gibi noktalar gelecek.

Ö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.

Ne Yapmalıyım?

Özgürlük, bir günde kazanılacak bir olgu değildir. Elbette ki bu yazıda Discord’a giydirip, sağ tarafta Discord linki attığımın farkındayım. Elbette bu yazıyı yazarken bir Microsoft Windows cihaz kullandığımın da farkındayım. Fakat kullandığım uygulamalarda mümkün mertebe özgür yazılım tercih ediyorum. Değilse bile en kötü “bari açık kaynaklı olsun” diyorum.

Yapılabilecek daha çok ş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^28
  • 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.
  • Mustafa Akgül Özgür Yazılım Kampı’na gelip bizlerle tanışabilirsiniz 🙂

Bu yolculukta herkese yer var. Mesleğiniz, ırkınız, cinsiyetiniz, yaşınız tamamen önemsiz. Hiçbir şey yapamıyorsanız “Özgür yazılım!” demeniz bile bir katkıdır. Bunu hiçbir zaman unutmamalısınız.

Dipnot: Hack ve Hacker Kavramı

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.

Stallman’a göre hack: “Eğlenceli bir zekanın mümkün olan sınırlarını keşfetmesidir.”^29

Bu zihineye sahip kişiler – genelde – anlamsız ve amaçsız kuralları reddeder. Bilim ve teknolojiye meraklıdır. Var olan herhangi bir şeye farklı açılardan bakabilirler. Bir şeyi “neden” yaptıklarının yanıtı genelde bellidir: “Yapabildikleri için.”

İşi sadece teknik boyutta düşünmemeliyiz. Klasikleşmiş anne itemini düşünün, terlik. Basit görünen ama uzmanlık isteyen bir ayak flip’i sonrasında baskın ele oturtulduğu anda ranged silaha dönüşen bir varlık var ortada. Net hack derim.

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ı.

Dolduruşa gelmeyelim arkadaşlar. Toplanalım ve şarkı söyleyelim:

Richard Stallman, Özgür Yazılım Şarkısı’nı söylüyor:

GNU/Stallmans grubunundan dinlemek isterseniz:

Join us now and share the software;
You'll be free, hackers, you'll be free

Bağlantılar

1- The GNU Project, https://www.gnu.org/gnu/thegnuproject.html

2- End User License Agreement (Psyonix), https://www.psyonix.com/eula/

3- Microsoft Yazılımı Lisans Koşulları – Windows İşletim Sistemi, https://www.microsoft.com/en-us/Useterms/OEM/Windows/10/Useterms_OEM_Windows_10_Turkish.htm

4- Adobe Genel Kullanım Koşulları, https://www.adobe.com/tr/legal/terms.html

5- Movie Maker is not available for download on Windows 10, https://support.microsoft.com/en-us/windows/movie-maker-is-not-available-for-download-on-windows-10-8cf3c646-5ce9-c1b1-6eba-874971a99c1c

6- Adobe End-User License Agreement, https://www.adobe.com/support/downloads/license.html

7- What is free software?, https://www.gnu.org/philosophy/free-sw.html

8- The Open Source Definition, https://opensource.org/docs/osd

9- GNU General Public License, https://www.gnu.org/licenses/gpl-3.0.html

10- Why Open Source misses the point of Free Software, https://www.gnu.org/philosophy/open-source-misses-the-point.html

11- Debian Socia Contract, https://www.debian.org/social_contract

12- Why Open Source misses the point of Free Software, https://www.gnu.org/philosophy/open-source-misses-the-point.html

13- Selling Free Software, https://www.gnu.org/philosophy/selling.html

14- Free Software Is Even More Important Now, https://www.gnu.org/philosophy/free-software-even-more-important.en.html

15- Pro Gamer Freaks Out When Windows 10 Update Kills His 9h Counter Strike Livestream (CS:GO), https://www.youtube.com/watch?v=eP31lluUDWU

16- Microsoft handed the NSA access to encrypted messages, https://www.theguardian.com/world/2013/jul/11/microsoft-nsa-collaboration-user-data

17- Amazon Erases Orwell Books From Kindle, https://www.nytimes.com/2009/07/18/technology/companies/18amazon.html

18- Uber to allow audio recording of rides, aiming to launch feature in US, https://www.theguardian.com/technology/2019/nov/20/uber-record-rides-safety-brazil-mexico-us

19- Google employees are eavesdropping, even in your living room, VRT NWS has discovered, https://www.vrt.be/vrtnws/en/2019/07/10/google-employees-are-eavesdropping-even-in-flemish-living-rooms/

20- Spotify to let artists promote music for cut in royalty rates, https://www.theguardian.com/technology/2020/nov/03/spotify-artists-promote-music-exchange-cut-royalty-rates-payola-algorithm

21- Richard Stallman’s Personal Site, https://stallman.org/

22- The GNU Project, https://www.gnu.org/gnu/thegnuproject.html

23- How To Pronounce GNU, https://www.gnu.org/gnu/pronunciation.html

24- Gnu, https://tr.wikipedia.org/wiki/Gnu

25- FSF Licensing and Compliance Lab Team, https://www.fsf.org/licensing/team

26- Why the FSF gets copyright assignments from contributors, https://www.gnu.org/licenses/why-assign.en.html

27- The GNU Project, https://www.gnu.org/gnu/thegnuproject.html

28- Defective by Design, https://www.defectivebydesign.org/

29- On Hacking, https://stallman.org/articles/on-hacking.html