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ı.
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”
Küçük ya da (Facebook gibi) büyük şirketler tarafından Babel.js, React gibi sıkça kullanılan javascript framework ve eklentilerinin de yararlandığı bu 10 satırlık left-pad paketi de aslında çok basit bir iş yapıyor. Belirttiğiniz sayı veya metin alanının önüne yine belirttiğiniz karakter sınırına göre eksik kalan kadar boşluk veya “0” eklemenizi sağlıyor.
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:
Geliştiriciler
İ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.
Kurumsal şirketler
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.
Açık kaynak kodlu projeler birçok kişinin projenize katkı sağlamasının önünü açıyor. Bu da farklı bakış açılarını işin içine kattığı için, çok daha gelişmiş ürünlerin ortaya çıkmasını sağlıyor. Bugün Javascript gibi bir çok yazılım dili, gelişimini ve yayılmasını açık kaynak kodlu projelerde çalışan geliştiricilere borçlu.
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.