+− THE DAILY DIFFdev & AI news
SHIP IT

On bir satır JavaScript interneti kırdı. Bir yayından kaldırma.

22 Mart 2016, 21:30 UTC: Bir geliştirici, patent vekili "kapınızda avukatlar" sözü veren mesajlaşma uygulaması Kik'e "kik" paket adını npm'in vermesinin ardından tüm 273 npm paketini yayından kaldırır.

22 Mart 2016, 21:30 UTC: Bir geliştirici, patent vekili "kapınızda avukatlar" sözü veren mesajlaşma uygulaması Kik'e "kik" paket adını npm'in vermesinin ardından tüm 273 npm paketini yayından kaldırır. 273 paketten biri left-pad'dir: bir dizenin önüne boşluk koyan ve ayda 2,5 milyon kez indirilen on bir satır. Dakikalar içinde Babel, React ve Node derlemeleri dünya çapında, dakikada yüzlerce kez başarısız olur. On dakika içinde bir fork ortaya çıkar ve hiçbir şeyi değiştirmez, çünkü Babel left-pad'i tam olarak 0.0.3'ü sabitleyen satır numaraları aracılığıyla çeker. 23:55'te npm silinen sürümü bir yedekten geri yükler - kayıt defteri tarihindeki ilk "yayından kaldırmayı geri alma" - ve bir hafta sonra 24 saatlik yayından kaldırma kuralını uygular. Postmortem, npm'in kendi hesabından ve Kik'in yayınladığı e-posta dizisinden: herhangi bir yazarın bağımlılık kontrolü olmadan herhangi bir sürümü silmesine izin veren kayıt defteri, her yüklemede canlı olarak çözülen geçişli ağaç, varsayılan olarak kilit dosyası yok. Git blame: %60 npm / %25 Kik / %15 bağımlılık alışkanlığı. Düzeltme hakkındaki karar: SHIP IT.

Yazılı sürümü oku (İngilizce) ↗

Bu video neleri kapsar

  • 11 Mart: Kik'in patent vekili Azer Koçulu'dan `kik`'i yeniden adlandırmasını ister; bir saat sonra: avukatlar "kapınızda ve hesaplarınızı kapatıyor"; Azer: 30.000 dolar; Kik npm desteğine e-posta gönderir
  • 18–20 Mart: npm'in CEO'su adı Kik'e devreder ("kik.com ile ilgili olmasını beklemek makul olur"); Azer tüm modüllerinin silinmesini ister
  • 22 Mart, 21:30–23:55 UTC: 273 paket yayından kaldırılır; [email protected], Babel, Atom, Node projelerinde 404 hatası verir; 21:42'de fork 1.0.0; npm'in CTO'su 23:03'te "yayından kaldırmayı geri alma" tweet'i atar; 23:55'te yedekten 0.0.3 geri gelir — 2.5 saat
  • 23 Mart ve 29 Mart: npm'in postmortem'i ("işi batırdık") ve yeni politika: yayından kaldırma sadece 24 saat içinde, kaldırılan adlar için güvenlik yer tutucuları (2020'den beri 72 saat)

Çevrilmiş deşifre

Orijinal İngilizce anlatımdan çevrilmiştir. Mevcut ses ve altyazılar YouTube tarafından kontrol edilir.

0:00 Bir geliştirici on bir satır JavaScript'i siler ve dakikalar içinde Babel, React ve Node derlemeleri dünya çapında, dakikada yüzlercesi başarısız olur. Fonksiyon left-pad'dir. Bir dizenin önüne boşluk ekler ve akşamın sonunda npm, yapamayacağını söylediği tek şeyi yapar: silinen bir sürümü yeniden yayınlamak. Nasıl oldu, neden mümkün ve kim suçlanmalı. Bu The Daily Diff, postmortem. 11 Mart. Mesajlaşma uygulaması Kik'teki bir patent vekili,

0:26 Azer Koçulu'ya e-posta gönderir: npm paketinizi yeniden adlandırın, kik bizim markamız. Azer hayır der. Bir saat sonra: ticari marka avukatlarımız kapınızı çalacak ve hesaplarınızı kapatacak. Azer otuz bin dolar gibi bir fiyat belirler, ve Kik yazışmayı npm desteğine iletir. 18 Mart. npm'in CEO'su, npm install kik yazan herkesin mesajlaşma

0:48 uygulamasını beklediğine karar verir ve adı devreder. Azer kendisine ait her şeyin silinmesini ister. İki gün sonra kendisi yapar: iki yüz yetmiş üç paket. 22 Mart, 21:30 UTC. left-pad'e ulaşan her derleme 404 hatası alır. On dakika sonra bir yabancı onu 1.0.0 olarak yeniden yayınlar, ve hiçbir şey değişmez, çünkü Babel ve Atom onu satır numaraları adı verilen bir paket aracılığıyla yükler, ki bu da tam olarak 0.0.3'ü ister.

1:13 23:03'te npm'in CTO'su tweet atar: yayından kaldırmayı geri alma. 23:55'te, 0.0.3 bir yedekten geri döner. İki buçuk saat. Neden bir kişi bunu yapabilir? Üç neden. npm'deki herhangi bir sürüm, yazarı tarafından anında silinebilir, üzerine kimin bağımlı olduğu kontrol edilmeden. İkincisi, bağımlılıklar geçişlidir: Babel left-pad'in var olduğunu bilmez, satır numaralarını bilir ve tüm ağaç her yüklemede canlı olarak çözülür.

1:36 Üçüncüsü, 2016'da hiçbir şey o ağacı varsayılan olarak sabitlemez; kilit dosyaları isteğe bağlıdır, bu yüzden her CI çalıştırması internete on bir satır kodun neye benzediğini yeniden sorar. Tek bir kayıt defteri, kendisine bağlı kimse tarafından çalıştırılmıyor. git blame. npm, yüzde altmış: kendi postmortem'i kısıtlamasız yayından kaldırmanın acıya neden olduğunu ve, alıntı, işi batırdığımızı söylüyor. Kik, yüzde yirmi beş: bir avukat değil, bir patent vekili, Kik'in zaten kullanmamaya karar verdiği bir ad için kapıda avukatlar vaat ediyor. Bağımlılık alışkanlığı, yüzde on beş: on bir satırı yazmak yerine

2:06 npm-install eden herkes. Derlemeleri de bozulan Kik dahil. Patlama yarıçapı: iki yüz yetmiş üç paket çekildi, bunlardan biri ayda iki buçuk milyon kez indirildi. Düzeltme iki buçuk saat sürer; fonksiyon on bir satır sürer. Hacker News'te, programlamayı unuttuk mu diye soran bir gönderi, çoğunlukla derlemeleri hala kırmızı olan kişilerden olmak üzere on yedi yüz puan alır. Karar, postmortem: SHIP IT.

2:26 npm yedekten geri yükler, ertesi gün postmortem'i yayınlar, ve bir hafta içinde hala geçerli olan kuralı uygular: yirmi dört saat boyunca yayından kaldırabilirsiniz, ondan sonra bir insanla konuşursunuz. Pazartesi: kilit dosyanızı commit edin ve eğer bir fonksiyon on bir satırsa, o bir paragraftır, bir bağımlılık değil. Hala konuşmanıza izin verilmeyen olayı bana gönderin, yorumlar kısmında veya the daily diff dot dev adresinden. Ve bugünün diff'i bu.

2:48 Ben Axrisi'den Niko. Sorumlulukla birleştirin.

Kaynaklar

  1. npm, Inc., "kik, left-pad, and npm" (Mar 23, 2016)blog.npmjs.org
  2. npm, Inc., "changes to npm's unpublish policy" (Mar 29, 2016)blog.npmjs.org
  3. Azer Koçulu, "I've Just Liberated My Modules" (Mar 22, 2016; archive copy)web.archive.org
  4. Mike Roberts (Kik), "A discussion about the breaking of the Internet" — the full e-mail thread (Mar 23, 2016; archive copy)web.archive.org
  5. Laurie Voss (npm CTO) on X, Mar 22, 2016, 23:03 UTCx.com
  6. left-pad 0.0.3 on the npm registry (the eleven lines)registry.npmjs.org
  7. Hacker News, Mar 22, 2016 — "I've Just Liberated My Modules" (1,573 points)news.ycombinator.com
  8. Hacker News, Mar 23, 2016 — "NPM and Left-Pad: Have We Forgotten How to Program?" (1,725 points)news.ycombinator.com
  9. Hacker News, Mar 29, 2016 — "Changes to Npm's unpublish policy" (320 points)news.ycombinator.com
  10. The Register, Mar 23, 2016 — "How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript"www.theregister.com

İlgili videolar