NPMJS'de resmen emanet miyiz? 25 March 2016

Az önce bir haber (çevirisi) okudum. Haberde birkaç gün önce yaşadığım ve anlam veremediğim bir sorunun nedeni vardı. Olayı anlamak için önce olan olaya bakalım:

2 gün önce kapgel için akmerkez’de burgerking’de oturmuş bir release yetiştirmeye çalışırken daha rahat çalışabilmek için projenin bir kopyasını almam gerekti. projeyi github’dan farklı bir klasöre kopyaladıktan sonra, her node.js projesinde olduğu gibi npm install (aslında npm i) kodunu çalıştırdım. fakat hata aldım. aldığım hata paketin bulunamadığı şeklindeydi. Daha önce benzer hatalar almıştım. Sorun paketlerdeydi, daha doğrusu paket sürümlerinde. Birinci ihtimal package.json’da sürüm olarak olmayan bir sürüm eklenmişti. İkinci ve küçük ihtimal ben veya başka birisi paket sürümünü yanlışlıkla değiştirmişti. Aklıma en son gelen ve en çok karşılaştıdığım ihtimal de paketin o sürümünün yayından kaldırılmasıydı.

Hemen paketi buldum. Paketin adı anglicize idi. Ne olduğunu bilmediğim için önce sözlükten kelime anlamına baktım. Anlamı ingilizceleştirmekmiş. Genellikle stringlerden Türkçe karakterleri atmak işlemine deniyormuş. Sorunun kaynağı için sonra da npmjs.org/package/anglicize adresine gittim. Adreste paket vardı fakat kullanıcı bilgisi yoktu … İlginç. Daha önce kullanıcı bilgisi olmayan paket görmemiştim. Ayrıca github adresi de yoktu. Peki o zaman paketin orjinalini nereden bulacaktım? npm API’si bir ihtimaldi fakat o kadar beklemek istemedim ve diğer yola, yani github.com’da aramaya yöneldim. Kısa bir süre sonra paketi buldum. paket ‘azer/anglicize’ adındaydı. Paketi ‘package.json’ dosyasındaki satırı

'anglicize': 'https://github.com/azer/anglicize/tarball/master'

olarak düzelttim. Paket kuruldu. Sorun çözüldü. Hayırdır diyip geçtim.

Bugünkü yazıda öğrendim ki, Azer Koçulu adlı bir geliştirici NPMJS’den tüm paketlerini silmiş (çevirisi). Sebebi de, özetle Azer’in yayında kikadlı modülü var. Aynı adla messenger uygulamasına sahip şirket Kik’i bize ver, uzatma, bizim ticari markamız, yoksa avukatlarımızla zorla alırız diyor. Azer şimdi hiç vermem diyince Kik firması bu sefer NPMJS’e yazıyor. NPMJS de isteklerini kabul edip kik adlı paketin sahipliğini Azer’den alıp firmaya veriyor. Bu rezalet karşısında Azer de npmjs.org sitesinedki tüm paketlerini siliyor. Bu paketlerden biri anglicize bir diğeri de left-pad. Azer’in tepkisi ‘Ben open sourceu seviyorum, NPMJS ise resmen birisinin özel arka bahçesi gibi.’

Sorunlar burada bitmiyor. Azer’in çektiği paketler internette onbinlerce proje tarafından kullanılıyor. Sadece left-pad paketi geçen ay 2.5 milyon kez indirilmiş. Bu da büyük bir soruna yol açıyor tabii ki. Çözüm olarak ise NPMJS, normalde silinince kalıcı olarak siliyoruz dediği paketi bir yerlerden? bulup tekrar yayına sokmuş, kendi kullanıcısı adı altında. İlgili paketlere şuradan ulaşabilirsiniz.

Sonuç olarak, NPMJS gerçekten de bir firma ve ticari bir işletme. Kimseye hesap verme zorunluluğu yok. Hal böyle olunca dünydaki tüm node.js ve çoğu javascript uygulamalarının paketleri onların insafında. Benzer şey 1.5 yıl önce node.js 0.10-0.12 zamanlarında olmuştu. Pull requestleri içeri almayan ve Harmony sürümünü çıkartmayan Node.js takımına karşı olarak io.js forku çıkmıştı. Topluluk 1 yıl boyunca io.js ye geçince Node.js kendi yapısını değiştirip vakıf olmak zorunda kalmıştı. Linux Foundation bu duruma el atmış, iyi de olmuştu. Artık topluluğun hakkını topluluğa verme zamanı npmjs’e geldi gibi duruyor.