Geleceği Yazanlar
Kodlama Sanatı ve Lisanslara Giriş
"Bir bilgisayar yazılımında en az kullandığınız iki şey nedir?" diye soracak olsam eminim bir sürü farklı cevap gelir. Kimilerimiz yardım sayfaları, kimimiz sadece birkaç kullanıcı için konulmuş çok özel bir özellik diyecektir. Ben aklınıza en son geleceğini tahmin ett...
"Bir bilgisayar yazılımında en az kullandığınız iki şey nedir?" diye soracak olsam eminim bir sürü farklı cevap gelir. Kimilerimiz yardım sayfaları, kimimiz sadece birkaç kullanıcı için konulmuş çok özel bir özellik diyecektir. Ben aklınıza en son geleceğini tahmin ettiğim iki şeyi söyleyeyim: "Kabul ediyorum" düğmesiyle hızlıca geçtiğiniz yazılım lisansı ve yazılımların genelde yardım menüsünde bulunan hakkında kısayolu!
İşte bu yazı bu iki konu hakkında sizi biraz olsun meraklandırmak ve fikir sahibi yapmak amacıyla yazıldı. Aslında yazı diyorum ama planım bunun bir yazı dizisi olması yönünde. Bu yazıyı yazmaya başladığımda anlatmak istediğim konuyu tek bir yazıya sığdırabileceğimi düşünmüştüm ama gelin görün ki, bilgisayarın başına oturduğumda konunun tek bir yazıda anlatılmayacak kadar kapsamlı olduğunu farkettim ve fırsatım oldukça yazacağım bir yazı dizisi hazırlamaya karar verdim.
Bu ilk yazıda hem konuyu genel olarak ele almaya hem de kavramların üzerinden geçmeye çalışacağım. Gelecek yazılarda ise daha detaya inip size pratik dünya ile ilgili fikirler vermeyi amaçlıyorum. Girişi çok uzatmadan yavaş yavaş konuya geçsek iyi olacak.
Herkesin içinde bir sanatçı var, benim yok :-/
Uygulama geliştiren ya da bu konuda geliştirmek isteyenler olarak yaptığınız işin aslında ne kadar az kişi tarafından yapılabildiğinin farkında olduğunuzu umuyorum. Her ne kadar genel nüfusa oranla az kişi tarafından yapılıyor olsa da bu uğraş sonucunda ortaya çıkan uygulamaların bazıları dünyayı değiştiriyor ve insanların hayatlarına dokunuyor.
Bir uygulamanın geliştirme aşamalarını bir sanatçının eserini ortaya koymasına benzetmek biraz iddialı olsa da benim sevdiğim bir benzetme. Uygulama geliştiriciler de ister bir takım olarak çalışsınlar isterlerse işten kalan vakitlerini tek başına bilgisayar başında geçirsinler bir projeyi hayata geçirmeden önce daha büyük bir zamanı o uygulamanın tasarımına harcıyorlar. Hele ki tasarım aşamasından geliştirme aşamasına geçildiğinde birçoğumuzun dünyayla ilişkisini kestiğine eminim. Bu yüzden ben geliştiricileri sanatçılara benzetiyorum ve birazdan ele alacağımız gibi bu benzetmeyi yapan tek kişi de ben değilim.
Fikri mülkiyet ve biraz tarih dersi
Yüzyıllar öncesinde henüz bırakın bilgisayarı matbaa bir hayalken bilginin yayılma yolu genel olarak el yazması kitaplardı. Çoğu ya yazarının ya da yazarının öğrencileri tarafından kaleme alınan bu el yazması eserler elbette çoğu kişinin ulaşamayacağı kadar nadir ve pahalıydı. Dolayısıyla bilginin serbestçe dolaşması yerine bir sınıfa ait olduğu zamanlardı. Her ne kadar ağaç oyma baskısı milattan sonra 6. yüzyılda Uzak Doğu'da yapılıyor olsa da bu yüzyılın başına kadar kullandığımız baskı metodu olan tipo baskı 1450 yılında Gutenberg ve ortağı tarafından bulundu ve bu buluş dünyayı sonsuza kadar değiştirdi. Bu baskı yöntemi sayesinde bir kitap el yazması ile kıyaslanmayacak bir hızda ve sayıda kopyalanabiliyordu. El yazmasına göre çok ucuz olan bu yöntem sayesinde de hemen herkes basılı bir kitaba ulaşabilir ve bilgi hazinesine ekleyebilirdi. İşte bu dönemde yavaş yavaş yazarların aklına uzun sürede yazdıkları kitapları nasıl koruyabilecekleri sorusu gelmeye başladı. Öyle ya, artık el yazması gibi kontrol altında olan bir süreç yerine herhangi bir matbaa kısa sürede kendi kitaplarını kopyalayabilir ve bunları satarak yazara hiç para vermeden kendileri para kazanabilirdi!
Bu durumu kabul etmeyen yazarlar matbaanın bulunuşundan kısa bir süre sonra basım haklarının sadece anlaşma yaptıkları matbaalara verilmesi için davalar açmaya sözleşmeler yapmaya ve bunları o zamanki hukuk düzenlerine kabul ettirmeye başladılar. İşte bu da yazıda fazla fazla duyacağınız fikri mülkiyet kavramının temellerini atmaya başladı.
Venedik'te kitabı kanun tarafından koruma altına alınmış ilk yazar olan Marcus Antonius Coccius Sabellicus
Geçen yıllar sadece kitapların değil zaman içinde müziğin, dansın, mimari eserlerin, fotoğrafların ve sinema filmlerinin de fikri mülkiyet kapsamında olduğunu ve bu eserleri yaratan insanların da fikirlerinin korunması gerektiğine hükmetti. Günümüzde fikri mülkiyet uluslararası anlaşmalarla koruma altına alınmış ve hemen her modern hukuk sistemi tarafından kabul edilen bir kurum haline gelmiş durumda. Belki telif haklarını ve fikri mülkiyeti yeni duyuyor olabilirsiniz ama korunan hakların evrensel işareti olan daire içinde C harfini daha önce gördüğünüze eminim.
Bilgisayarların gelişmesiyle bu cihazların çalıştırdığı yazılımların da onu üreten insanların bir eseri olduğu ve korunması gerektiği fikri ortaya çıktı ve bugün günümüzde bilgisayar programları da fikri mülkiyet düzenlemeleri kapsamında korunur hale geldi.
Size ilk bakışta garip gelebilir ama günümüzde bilgisayar programları ilim ve edebiyat eseri olarak kabul ediliyor ve hukuk sistemi tarafından korunuyor. Bir başka deyişle, eğer kendinize geliştirici demek yeterince havalı gelmiyorsa kendinizi yazar olarak da tanıtabilirsiniz (şaka yapıyorum!).
Özgür yazılım doğuyor
Yazılımların fikri mülkiyet haklarıyla korunuyor olmasının iyi olduğunu düşünebilirsiniz. Bu sayede yazılım geliştiricilerini hukukun kendilerini koruması sayesinde yazılımlarını satabilir ve kazandıkları paralarla daha iyi yazılımlar yapabilirler. Bununla birlikte yazılımların diğer eserlerden temel bir farkı olduğunu göz ardı etmememiz lazım. O da yazılımların son halinin insanlar tarafından değil, makineler tarafından okunuyor olduğu gerçeği.
Siz hiç aldığınız bir kitabı okuyamadığınızı ya da dinlediğiniz bir müziği anlayamadığınızı düşündünüz mü? Muhtemelen ne demek istediğimi kafanızda bile canlandıramadınız çünkü bir kitabı eğer yazıldığı dili ve alfabeyi biliyorsanız okuyabilirsiniz. Sizi başkaca bir şeyin engellemesi mümkün değildir.
Öte yandan yazılımda bu durum biraz daha farklı. Sizin benden çok daha iyi bildiğiniz gibi yazılımların çalışabilmesi için bir noktada sizin tarafınızdan yazılın kodun makine tarafından okunabilir hale gelmesi gerekiyor. Her ne kadar doğrudan makinenin anlayacağı dilde kod yazma şansınız olsa da bugün çoğu insan çok daha kolay ve mantıklı olan yolu tercih ediyor.
Bu özel durum şöyle bir sonucu ortaya çıkarıyor: Siz bir yazılım geliştirici olarak yazılımınızı kullanan kişiye, yazılımın sizin tarafından yazılan ve insanlar tarafından anlaşılacak kodunu değil [biz buna kaynak kod (source code) diyoruz] sadece makine tarafından anlaşılacak kodu (buna da derlenmiş ya da ikili kod (binary) code) verirseniz bu kodun üzerinde değişiklik yapmak ve yazılımı kendi ihtiyaçlarınıza göre özelleştirmeniz neredeyse mümkün olmayacaktır.
Bir yazılımın kaynak kodu (Fotoğraf: Tom Lucas, CC-BY, Flickr)
1970'lerden önce bilgisayarlar sayıca az, uğraşanlar ise çok daha az iken çoğu yazılım kaynak koduyla birlikte dağıtılıyordu. Bu sayede bu yazılımı alan insanlar, yazılımı isteklerine göre özelleştirebiliyordu. Yetmişli yıllarla birlikte yazılım geliştirme maliyetlerinin artması ve yazılım projelerinin büyümeye başlamasıyla birlikte, şirketler, kaynak kodlarını dağıtmamaya ve kullanıcılara kaynak kodları olmasa da yazılımları değiştirmemeye zorlayan sözleşmeler imzalatmaya başladılar. Bu durum çoğu insan tarafından önemsenmese bile yazıcılarla sorunu olan bir adamı epeyce kızdırdı.
Hikâye şöyle gelişti. Parlak bir Harvard öğrencisi ve MIT yapay zekâ laboratuvarı araştırmacısı olan sevgili Richard Stallman, yeni aldıkları lazer yazıcıya bir önceki yazıcıya eklediği bir özelliği eklemek istemişti. Bu özellik sayesinde yazıcı, o anda sisteme giriş yapmış tüm kullanıcılara herhangi bir yazma işi bittiğinde ya da kağıt sıkışması olduğunda haber veriyordu. Yazıcı herkesin kolayca ulaşamadığı bir yerde olduğu için acaba yazma işi bitti mi diye yazıcının başına gitmek yerine terminalin başından işlerin ne durumda olduğunu görebiliyordunuz.
Richard Stallman bilgisayarıyla
Yeni yazıcının sürücüsünün kaynak kodu verilmediğinden ve yazıcı üreticisi şirket de işbirliğine yanaşmadığından Stallman, zaten bir süredir yazılımlarla ilgili dile getirdiği özgürlük ve kaynak koda erişim teorilerini daha metodik bir hale getirdi ve tamamı özgür bir Unix klonu yazmayı hedefleyen bir oluşum olan GNU (GNU, GNU is Not Unix manasına gelmektedir ve kısaltması açılımının da içinde geçen ilginç bir kelime oyunudur) topluluğunun ilk adımını attı. Zaman içinde bu oluşum hukuki bir altyapı oluşturma gereğini hissederek FSF'yi (Free Software Foundation - Özgür Yazılım Vakfı) kurdu. Bugün onun attığı bu ilk adım ve bu harekete katılan insanlarla birlikte kaleme aldığı GNU Genel Kamu Lisansı (GPL) hem yazılım dünyasını kökünden değiştirdi hem de halen en çok kullanılan yazılım lisansı haline geldi.
Stallman'ın düşüncesine göre bir yazılımın özgür yazılım (Free Software) olabilmesi için bazı özgürlüklere sahip olması gerekliydi. Bunlar;
- Özgürlük 0: Programı herhangi bir amaç için çalıştırabilme
- Özgürlük 1: Program üzerinde nasıl çalıştığını anlamak için inceleme yapabilme ve istediğiniz gibi programı değiştirebilme
- Özgürlük 2: Programın kopyalarını yeniden dağıtabilme
- Özgürlük 3: Programı geliştirebilme ve geliştirdiğiniz halini yeniden dağıtabilme.
Bu özgürlükleri güvence altına alan bir hukuki belge yaratılması ve insanların kendi yazılımlarını bu belge aracılığıyla dağıtımasını sağlamak için GPL kaleme alındı. Bu lisans hem GNU araçlarının yazılmasına ilham ve motivasyon sağladı hem de pek çok işletim sisteminde çalışacak irili ufaklı birçok yazılımın da temel lisansı haline geldi.
FSF'nin simgesi haline gelen GNU logosu
Burada bir parantez açalım ve şunu ekleyelim. Bu lisans yazımından yıllar sonra o zamanlar kullandığı Minix işletim sistemini geliştiremediği için bir benzerini yazmaya karar veren, son derece zeki bir Finli bilgisayar mühendisine de ilham verdi. Bu genç dostumuz o zamanlar birkaç yıl sonra bir penguen tarafından ısırılacağına ve bu olay nedeniyle yarattığı işletim sisteminin logosunun da penguen olacağından ve dünyanın en büyük özgür yazılım projesini başlattığından haberdar değildi. Sanıyorum kimden bahsettiğimi anlamışsınızdır. :)
Linus Torvalds: Linux çekirdeğinin yaratıcısı
İngilizce ücretsiz kelimesi ile özgür kelimeleri arasında ayrım olmadığından, çoğu insan Free Software dendiğinde ücretsiz yazılımın kastedildiğini sanabilir. Oysa özgür yazılım, yazılımın ücretsiz olması gerektiğinden değil, özgür olması gerektiğinden yola çıkar. Dolayısıyla gelecekte soracağınız bir soruya şimdiden cevap vereyim. Evet, özgür yazılımdan para kazanabilirsiniz.
Yıllar geçiyor ve açık kaynak da geliyor
Özgür Yazılım kavramının yayılmaya başlamasıyla birlikte bu kavramı kullanan pek çok kişi kavramı kendine göre yorumladı ve anlamını farklılaştırdı. Temel olarak özgür yazılım dünyasında kırılma noktası doksanlı yıllarda açık kaynak inisiyatifinin oluşmasıyla yaşandı. Bu inisiyatif özgür yazılıma benzer bir şekilde kendi manifestosunu ortaya koydu ve GPL'in de bakıcısı olan Özgür Yazılım Vakfı'nın özgür olarak kabul etmediği bazı lisansların da kendi yazdıkları manifestoya uygun olarak açık kaynak kodlu olarak kabul edildiğini teyit etti.
Meraklı olmayan arkadaşların bilmesi gereken kısmı ise şöyle özetleyebiliriz. FSF'nin kabul ettiği özgür yazılım lisansları yazılımın özgürlüğünü her zaman garantiye alan lisanslarken, OSI'nin açık kaynak kodlu lisansları ise bir sonraki adımda kaynak koda ulaşma konusunda çeşitli tavizler veren lisansları da kapsama dâhil etti.
Gerçek hayatta ne işimize yarayacak bu bilgi?
Umuyorum ki "Dur bakalım, sonu güzel bir yere bağlanacak bu işin.." diyerek bu noktaya kadar okudunuz yazıyı. O zaman güzel habere gelelim ve bu bilgilerin gerçek hayatta ne işimize yarayacağına bakalım.
Şu an Android cep telefonu kullanan okurlardan bir isteğim var. Telefonunuzu elinize alın ve ayarlara oradan da telefon hakkında menüsüne girin. Muhtemelen daha önce hiç tıklamadığınız yasal bilgiler bağlantısına dokunun ve açılan ekrandan açık kaynak lisanslarına girin. Karşınıza upuzun bir liste çıktı değil mi? İşte açık kaynağın her yerde olduğunun en güzel göstergesi. Bugün elinizde tuttuğunuz telefonlardan uydu alıcılarınıza arabanızdan bilgisayarınıza kadar her yerde açık kaynak kullanılıyor ve bu sayede daha iyi yazılıma ulaşabiliyorsunuz.
Biz uygulama geliştiriciler de açık kaynak kodlu ve özgür yazılımlardan fazlasıyla yararlanıyoruz. Örneğin Twitter'a bağlanması gereken bir uygulama geliştirirken Twitter API'sini öğrenip buna uygun bir kod yazmak yerine yazılmış bir Twitter kitaplığını kullanarak pek çok işi yeniden yapmaktan kurtulabiliyor ya da GitHub'da "Yahu bu işi nasıl yapıyorlar?" diyerek merak ettiğimiz bir projeye dalıp kaynak kodlarını okuyup kendimizi geliştirebiliyoruz.
İşte tüm bunları yapabilmemizi sağlayan, açık kaynak kod ve özgür yazılım lisansları. Bu lisanslar sayesinde insanlar yükümlülük ve sorumluluklarını bilerek kendi projelerinde bu yazılımları kullanabiliyor ve kendi ürettikleri yazılımları da hepimizin kullanımına açabiliyor. İşte bu yazı dizisinin amacı da size bu lisansların neler olduğu konusunda biraz fikir vermek ve sizi özgür yazılım geliştirmeye teşvik etmek olacak.
Gelecek yazıda bu lisansların neler olduğundan, bu lisansları kullanırken nelere dikkat etmemiz gerektiğinden ve yerine getirmemiz gereken sorumlulukların neler olduğundan bahsedeceğim.
Bu yazı okuduktan sonra sizde "özgür yazılım" ya da "açık kaynak kodlu yazılım" terimlerini bir arama motorunda aratacak kadar merak uyandırdıysa, amacına ulaşmış demektir.
Tekrar görüşmek üzere.
Küçük bir not: Bir giriş yazısı olması nedeniyle özgür yazılım ve özellikle açık kaynak kod hareketi ile ilgili olabildiğince genel ve özet bir bilgi vermeye çalıştım. Dolayısıyla nüanslardan bahsetmemiş olabilirim. Bu yüzden sizden ricam bu yazıyı referans olarak almak yerine araştırmaya başlangıç noktası olarak kabul edin.
Açılış görseli: The GNU Art Gallery
20.07.2015
Yorumlar
Sevgili Akın,
İlerleyen yazılarında şunun cevabını bulabilirsem çok mutlu olacağım. Diyelim ki, bir kütüphanemi özgür yazılım lisansıyla lisanslamak istedim. GPL'in dışında kalan "permissive" lisanslarda pek çok farklı dallanma var. Örneğin, MIT ve BSD lisansları arasındaki ayrım nerede? Mozilla Public License'da bahsi geçen "özel izin" nanesi nedir?
Bu konularda aydınlatabilirsen bizi, çok minnettar olurum :).
Ellerinize sağlık, bir sonraki yazıyı beklemedeyim.
Başlangıcı bu ise ikincisini merakla bekliyorum. Ellerine sağlık.
Ellerinize sağlık, doyurucu bir yazı olmuş. Bazı soru işaretlerini kafalardan siliyor. İkinci bölümünü bekliyoruz. :)
Bazı yazılım devlerinin etrafından dolaşmaya çalıştığı, açık kaynak kodun özgürlük vaadetmediği gerçeğini anlatmanız güzel olmuş. Müteakip yazılarda daha fazlasını anlatırsınız umarım. :) Elinize sağlık.