10 satır kodla interneti çökertmek:Azer Koçulu
Açık kaynak kodlu projeler ve özgür yazılım aslında ne kadar özgür hareket edebiliyor? Açık kaynak kodlu yazılım geliştiriciler telif hakları karşısında ne kadar korunabiliyor?
Gelin, konu hakkında henüz bilgisi olmayanlar için kısa bir özetle başlayalım.
Azer Koçulu‘ya,bir mesajlaşma uygulaması olan Kik tarafından, kendisinin geliştirdiği ve npm üzerinde yayınladığı bir kod paketi olan kik ile ilgili olarak, “telif hakları” gerekçesiyle ve paketin adının değiştirilmesi talebiyle bir bildirim yapılıyor. Bildirimin gerekçesi ise, Koçulu’nun kod paketi kik’in, anlık mesajlaşma servisi olan Kik’le aynı ismi taşıması ve paketin Kik ile ilgili bir işlev barındırmaması. Azer ise bu bildirimi, bunun açık kaynaklı bir proje olduğunu ve kod paketinin adını değiştirmeyeceğini bildirerek yanıtlıyor.
Aradaki yazışmalar problemi çözüme ulaştırmak için yeterli olmuyor ve Kik, bu konuyu npm tarafına bildiriyor. Npm bu bildirimden sonra, Azer’den bu paketi, npm’den kaldırmasını istiyor. Bunun üzerine Azer, kik’in açık kaynak kodlu bir proje olduğunu, böyle bir sebepten dolayı bu paketi kaldırmasını istemelerinin doğru olmadığını söyleyerek, bundan sonra npm’de bulunmak istemediğini ve bütün paketlerini (273 farklı kod paketinden söz ediyoruz) silmek istediğini söylüyor.
Söz konusu kriz ise, Azer’in npm’deki bütün paketlerini silmesiyle birlikte başlıyor. Kriz ise tahmin ettiğiniz gibi, Koçulu’nun kik paketini silmesi değil; sildiği diğer 273 paketten biri olan left-pad’in silinmesiyle ortaya çıkıyor. Left-pad, birçok projede yaygın olarak kullanılıyor ve npm’den silindiği anda, bu projelerin tümü hata vermeye başlıyor. Bu hatalar her ne kadar kısa sürede düzeltilse de, geliştiriciler Azer’in bu durumla ilgili blog yazısını okuyunca paketlerin silinmesi arkasındaki hikayeden haberdar oluyorlar. Azer’le ilgili geçtiğimiz haftalarda DevPod çok güzel bir röportaj hazırlamıştı. Bu röportajı da dinlemenizi tavsiye ederim.
Peki, 10 satırlık bir kod paketi koskoca interneti nasıl yerinden oynattı?
npm, Node.js projelerinde kullanılan bağımlılıkları (“dependencies“) bir sunucuda tutarak, geliştiricilerin üzerinde çalıştıkları herhangi bir projede, bu paketlere bir komutla ulaşabilmelerini sağlayan bir sistem. Böylece npm, dünya genelinde birçok geliştiricinin kullandığı kod paketlerini ortak bir sunucuda tutarak, geliştiricilerin oluşturdukları paketleri npm’e yükleyebilmelerini; başkaları tarafından oluşturulan paketlere de erişebilmelerini sağlıyor. Bir projede irili ufaklı onlarca paket bulunabilir; bunların güncelliğini kontrol etmeniz, ya da çalıştığınız her projede bunları takip etmeniz ise oldukça zor. Üstelik bir projede birçok geliştiriciyle beraber çalışıyorsanız, bir kod paketinin npm’den silinmesi durumunda ekibin diğer üyelerini bu paketler konusunda bilgilendirmeniz gibi gereklilikler oluşabilir.
leftpad('foo', 5) // => " foo" leftpad('123', 6, 0) // => "000123"
// => " foo"
leftpad('123', 6, 0)
// => "000123"
Yukarıdaki örnekte, 5 karakterden az sayıda karakter varsa, o ifadenin soluna, 5 karakteri tamamlayana kadar boşluk atıyor. Bu kadar basit bir kod bloğunun npm’den silinmesi, çok sayıda geliştirici tarafından oluşturulan birçok projenin hata vermesine sebep oldu.
Bu kriz, npm’in silinen paketlerle ilgili yeni bir düzenleme yaptığına ilişkin olarak yaptığı açıklamayla tatlıya bağlanmış gibi gözükse de, açık kaynak kodlu yazılımların ticari düzen içerisindeki konumları konusunda ortaya çıkan problemler daha uzun süre tartışılacağa benziyor.
Bu durumda kimin açısından bakmalıyız?
Burada aslında kendi taraflarından haklılıkları bulunan 3 grup var:
İlki kendilerini tümüyle ürün geliştirmeye vermiş olan geliştiriciler. Yeni şeyler geliştirmenin veya bir şeyler öğrenmenin heyecanıyla çalışan birçok insan var ve çoğumuz hukuki yaptırımlar konusunda, eğer bir bütçe olmadan, kendi başımıza bir ürün geliştiriyorsak, işin hukuksal boyutuyla ilgilenecek zaman ve bütçemiz yok. Aslında ne zaman bunlara ihtiyacımız olduğuyla ilgili de çok net bir bilgimiz yok. Bu olaydan sonra, yazılım geliştiriciler olarak, telif hakları konusunda nasıl sorunlarla karşılaşabilecekleriyle ilgili sorular sormaya başladık. Çoğumuz daha önceden hiç böyle bir konu hakkında düşünmemiştik bile.
Koçulu’nun konuyla ilgili yazısını buradan okuyabilirsiniz.
Diğer bir grup olan kurumsal şirketler tarafıysa, doğal olarak elindeki varlıkları korumak için kendini kanunlarla koruma altına almış durumda ve bu varlıklarını korumak istiyor. Ancak bunun için kapıya dayanmak gibi tehdit cümleleriyle korkutmak, karşı taraftaki tüm bu hukuki süreçlerden bilgisi olmayan geliştiriciler için daha da tedirgin edici olabiliyor.
Kik’in bu olaydan sonra yaptığı açıklamayı buradan okuyabilirsiniz.
Yazılım paketi sunucuları
Arada kalan üçüncü grupsa, npm gibi geliştiricilerin sunduğu paket veya ürünleri sunan sistemler. Bu sistemler kendilerini, kullanıcı kayıt süreçleri sırasında sundukları kullanım şartlarıyla savunuyorlar. Ancak, bunun çok gerçekçi bir yaklaşım olduğunu düşünmüyorum. Bu, sistemi asıl var eden toplulukla ilgili bir sorun olduğunda, sadece kullanıcı şartlarını öne sürerek kaçmaya çalışmak gibi duruyor. Bu konuda hukuki bir süreçle baş etmek, geliştiricilerin kolayca yapabileceği birşey değil. Bu yüzden npm’in Kik ve Azer arasındaki anlaşmazlık durumunda, Azer’den paketi silmesini istemesi geliştiriciler tarafından tepkiyle karşılandı. Azer’in yaşadıklarının ortaya çıkmasıyla birlikte, aslında başka yazılımcıların da aynı şeyleri yaşadığı, hatta kendisine herhangi bir uyarı olmadan paketlerinin silindiğini söyleyen kullanıcıların da olduğu söylenmeye başladı.
Npm’in tüm bu süreç ve yapılanlarla ilgili açıklamasını buradan okuyabilirsiniz.
“Özgür Yazılım” ve “Açık Kaynak Kodlu ” Düşüncesinden ne anlamalıyız?
Özgür yazılım fikri, ortaya atıldığı günden beri neredeyse tüm yazılımcılar tarafından desteklendi ve geliştirildi; bugün sahip olduğumuz yazılım ürünlerindeki gelişmelerin, farklı bakış açılarıyla desteklenmesine ve yeni yazılımcıların gelişmesine olağanüstü katkı sağladı. Belli başlı şirketler tarafından geliştirilen ve sahiplik konusunda katı kurallar uygulanması sonrasında bu ürünlerin bir süre sonra ne kadar atıl kaldıklarını gördük. Microsoft’un yazılım dünyasından gelen eleştirilere kulaklarını tıkayarak geliştirdiği ürünler, Steve Balmer’ın “Developers, Developers, Developers” çağrısını(!) bile anlamsız bıraktı. Ancak Microsoft, yazılımcılarla arasındaki köprüleri yeniden inşa etmek için açık kaynaklı yazılım geliştiricilere verdiği değeri de gösterdi. Bugün Github’da, dotNet’de dahil birçok Microsoft projesinin kodlarına erişme olanağına sahibiz.
Peki bu durumda kim haklı?
Aslında tüm bu süreç içerisinde, kurumsal firmaların yaklaşımından daha önemli olan, npm’in yaklaşımı oldu. Bu süreçte npm’in kodların silinmesini talep etmesi herkes tarafından, kurumsal firmanın tarafını tutarak, yaptırımı geliştiricilere uygulaması olarak algılandı. Bu “ben sözleşmedeki yaptırımları uyguluyorum” yaklaşımı yerine, bundan sonrasında nasıl davranılması gerektiği, telif hakları ve bunların getirdiği yaptırımlar ve yapılan çalışmaların nasıl koruma altına alınabileceği gibi konularda herkesi bilinçlendirme yolunu seçmek, hem npm gibi üçüncü tarafların hem de yazılımcıların neler yapması gerektiği konusunda bilgi sahibi olmalarını sağlayacaktır.
Tüm bu süreç boyunca sizce kim haklı? Üç tarafın da kendi tarafıyla ilgili olarak yaptığı açıklamaları okuduğunuzda, siz bu konuda ne düşünüyorsunuz? Yorumlarınızı bizimle paylaşın.