+− THE DAILY DIFFdev & AI news
SHIP IT

अकरा ओळींच्या जाव्हास्क्रिप्टने इंटरनेट तोडले. एका अनपब्लिशमुळे.

22 मार्च 2016, 21:30 UTC: एका डेव्हलपरने त्याचे 273 npm पॅकेजेस अनपब्लिश केले, कारण npm ने "kik" नावाचे पॅकेज Kik या मेसेजिंग ॲपला दिले होते, ज्याच्या पेटंट एजंटने "वकील तुमच्या दारात थाप मारतील" अशी धमकी दिली होती.

22 मार्च 2016, 21:30 UTC: एका डेव्हलपरने त्याचे 273 npm पॅकेजेस अनपब्लिश केले, कारण npm ने "kik" नावाचे पॅकेज Kik या मेसेजिंग ॲपला दिले होते, ज्याच्या पेटंट एजंटने "वकील तुमच्या दारात थाप मारतील" अशी धमकी दिली होती. त्या 273 पैकी एक left-pad आहे: अकरा ओळी जे स्ट्रिंगच्या सुरुवातीला स्पेसेस टाकतात, जे महिन्यातून 2.5 दशलक्ष वेळा डाउनलोड होते. काही मिनिटांत Babel, React आणि Node चे बिल्ड्स जगभरात अयशस्वी झाले, प्रति मिनिट शेकडो. दहा मिनिटांत एक फोर्क दिसला आणि त्याने काहीही बदलले नाही, कारण Babel left-pad ला line-numbers द्वारे खेचते, जे 0.0.3 ला अगदी तंतोतंत पिन करते. 23:55 वाजता npm ने डिलीट केलेली आवृत्ती बॅकअपमधून पुनर्संचयित केली — रजिस्ट्रीच्या इतिहासातील पहिला "un-un-publish" — आणि एका आठवड्यानंतर 24 तासांचा अनपब्लिश नियम लागू केला. पोस्टमॉर्टम, npm च्या स्वतःच्या खात्यातून आणि Kik ने प्रकाशित केलेल्या ईमेल थ्रेडमधून: कोणतीही निर्भरता तपासल्याशिवाय कोणत्याही लेखकाला कोणतीही आवृत्ती हटवू देणारी रजिस्ट्री, प्रत्येक इन्स्टॉलवर ट्रान्झिटिव्ह ट्री थेट रिझॉल्व्ह होते, डीफॉल्टनुसार कोणतीही लॉकफाइल नाही. Git blame: 60 npm / 25 Kik / 15 निर्भरता सवय. दुरुस्तीवरील निर्णय: SHIP IT.

लिखित आवृत्ती वाचा (इंग्रजी) ↗

या व्हिडिओमध्ये काय समाविष्ट आहे

  • 11 मार्च: Kik च्या पेटंट एजंटने Azer Koçulu ला `kik` चे नाव बदलण्यास सांगितले; एका तासानंतर: वकील "तुमच्या दारात थाप मारतील आणि तुमची खाती बंद करतील"; Azer: $30,000; Kik npm सपोर्टला ईमेल करते
  • 18-20 मार्च: npm चे CEO नाव Kik ला हस्तांतरित करतात ("किक.कॉमशी संबंधित असण्याची वाजवी अपेक्षा"); Azer त्याचे सर्व मॉड्यूल्स हटवण्यास सांगतो
  • 22 मार्च, 21:30-23:55 UTC: 273 पॅकेजेस अनपब्लिश; [email protected] Babel, Atom, Node प्रोजेक्ट्समध्ये 404s; 21:42 वाजता फोर्क 1.0.0; npm चे CTO 23:03 वाजता "un-un-publishing" ट्विट करतात; 23:55 वाजता बॅकअपमधून 0.0.3 परत — 2.5 तास
  • 23 मार्च आणि 29 मार्च: npm चे पोस्टमॉर्टम ("आम्ही गफलत केली") आणि नवीन धोरण: फक्त 24 तासांच्या आत अनपब्लिश करा, काढलेल्या नावांसाठी सुरक्षा प्लेसहोल्डर्स (2020 पासून 72 तास)

अनुवादित प्रतिलेख

मूळ इंग्रजी निवेदनातून अनुवादित. उपलब्ध ऑडिओ आणि मथळे YouTube द्वारे नियंत्रित आहेत.

0:00 एका डेव्हलपरने जाव्हास्क्रिप्टच्या अकरा ओळी हटवल्या, आणि काही मिनिटांतच Babel, React आणि Node चे बिल्ड्स जगभरात अयशस्वी होत आहेत, प्रति मिनिट शेकडो. कार्य left-pad आहे. ते एका स्ट्रिंगला स्पेसेसने पॅड करते, आणि संध्याकाळपर्यंत npm ते एक काम करते जे ते करू शकत नाही असे म्हणते: हटवलेली आवृत्ती पुन्हा प्रकाशित करणे. हे कसे घडते, ते का शक्य आहे, आणि कोणाला दोष दिला जातो. हे The Daily Diff आहे, पोस्टमॉर्टम. 11 मार्च. Kik, मेसेजिंग ॲपमधील एक पेटंट एजंट,

0:26 Azer Koçulu ला ईमेल करतो: तुमच्या npm पॅकेजचे नाव बदला, kik आमचा ब्रँड आहे. Azer नाही म्हणतो. एका तासानंतर: आमचे ट्रेडमार्क वकील तुमच्या दारात थाप मारणार आहेत आणि तुमची खाती बंद करणार आहेत. Azer तीस हजार डॉलर्सची किंमत सांगतो, आणि Kik तो थ्रेड npm सपोर्टला फॉरवर्ड करतो. 18 मार्च. npm चे CEO नियम करतात की npm install kik टाइप करणारा कोणताही व्यक्ती मेसेजिंग

0:48 ॲपची अपेक्षा करतो, आणि नाव सोपवून देतो. Azer त्याच्या सर्व गोष्टी हटवण्यास सांगतो. दोन दिवसांनंतर तो स्वतः करतो: दोनशे त्र्याहत्तर पॅकेजेस. 22 मार्च, 21:30 UTC. left-pad साठी पोहोचणाऱ्या प्रत्येक बिल्डला 404 मिळतो. दहा मिनिटांनंतर एक अनोळखी व्यक्ती ते 1.0.0 म्हणून पुन्हा प्रकाशित करतो, आणि काहीही बदलत नाही, कारण Babel आणि Atom ते line-numbers नावाच्या पॅकेजमधून लोड करतात, जे 0.0.3 तंतोतंत मागते.

1:13 23:03 वाजता npm चे CTO ट्विट करतात: un-un-publishing. 23:55 वाजता, 0.0.3 बॅकअपमधून परत येते. अडीच तास. एक व्यक्ती हे का करू शकते? तीन कारणे. npm वर कोणतीही आवृत्ती तिच्या लेखकाने हटवता येते, तात्काळ, त्यावर कोण अवलंबून आहे याची तपासणी न करता. दुसरे, अवलंबित्व ट्रान्झिटिव्ह आहेत: Babel ला left-pad अस्तित्वात आहे हे माहित नाही, त्याला line-numbers माहित आहे, आणि प्रत्येक इन्स्टॉलवर संपूर्ण ट्री थेट रिझॉल्व्ह होते.

1:36 तिसरे, 2016 मध्ये डीफॉल्टनुसार काहीही ते ट्री पिन करत नाही; लॉकफाइल्स ऐच्छिक आहेत, त्यामुळे प्रत्येक CI रन इंटरनेटला अकरा ओळी कोड कशा दिसतात हे पुन्हा विचारते. एक रजिस्ट्री, ज्यावर कोणीही अवलंबून नाही असे चालवते. git blame. npm, साठ टक्के: त्याच्या स्वतःच्या पोस्टमॉर्टममध्ये म्हटले आहे की अप्रतिबंधित अनपब्लिशिंगमुळे वेदना झाल्या, आणि, कोट, आम्ही गफलत केली. Kik, पंचवीस टक्के: एक पेटंट एजंट, वकील नाही, Kik ने आधीच वापरण्याचे ठरवले नसलेल्या नावावर वकिलांनी दारात असल्याबद्दल धमकी दिली. अवलंबित्व सवय, पंधरा टक्के: npm-install अकरा ओळी टाइप करण्याऐवजी

2:06 ज्याने कोणी केले. Kik सह, ज्याचे बिल्ड्स देखील तुटले. स्फोटाची त्रिज्या: दोनशे त्र्याहत्तर पॅकेजेस खेचली गेली, त्यापैकी एक महिन्यातून अडीच दशलक्ष वेळा डाउनलोड होते. दुरुस्तीला अडीच तास लागतात; फंक्शनला अकरा ओळी लागतात. हॅकर न्यूजवर, प्रोग्राम कसे करायचे हे आम्ही विसरलो आहोत का असे विचारणारी एक पोस्ट सतराशे पॉइंट्स मिळवते, मुख्यतः ज्यांच्या बिल्ड्स अजूनही लाल आहेत अशा लोकांकडून. निर्णय, पोस्टमॉर्टम: SHIP IT.

2:26 npm बॅकअपमधून पुनर्संचयित करते, दुसऱ्या दिवशी पोस्टमॉर्टम पोस्ट करते, आणि एका आठवड्याच्या आत आजही अस्तित्वात असलेला नियम लागू करते: तुम्ही चोवीस तास अनपब्लिश करू शकता, त्यानंतर तुम्हाला माणसाशी बोलावे लागेल. सोमवार: तुमची लॉकफाइल कमिट करा, आणि जर एक फंक्शन अकरा ओळींचे असेल, ते एक परिच्छेद आहे, अवलंबित्व नाही. तुम्ही अजूनही ज्या घटनेबद्दल बोलू शकत नाही ती मला पाठवा, टिप्पण्यांमध्ये, किंवा daily diff dot dev वर. आणि आजचा हाच diff आहे.

2:48 मी Axrisi चा Niko. जबाबदारीने विलीन करा.

स्रोत

  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

संबंधित व्हिडिओ

postmortem · mr · १७ सप्टें, २०२६

डिपेंडबॉटच्या एका बंपने वर्म प्रकाशित केले. २२ पॅकेजेस.

एक बॉट पुल रिक्वेस्ट उघडतो. एक माणूस २४ मिनिटांनी ती विलीन करतो. त्यानंतर ९५ मिनिटांनी, एका वर्मने त्याच्या CI मध्ये मिळालेल्या टोकनसह, त्याच्या २२ npm पॅकेजेसच्या ११० दुर्भावनापूर्ण आवृत्त्या त्याच्य

3:04 ↗
postmortem · mr · १५ सप्टें, २०२६

Rust क्रेटने कंपाइल करताना मालवेअर चालवले. ८६ मिनिटे.

२६० दशलक्ष डाउनलोड्स असलेला चार-मॅक्रो रस्ट क्रेट एक अवलंबित्व (dependency) जोडतो, आणि `cargo build` तुमच्या मशीनवर अनोळखी व्यक्तीची बायनरी चालवतो. २० ऑगस्ट २०२६: arrayref 0.3.10 crates.io वर proc-mac

3:09 ↗
postmortem · mr · २५ सप्टें, २०२६

एक मिलिसेकंदाच्या दोषामुळे यूकेमधील हवाई वाहतूक थांबली. सहा तास.

मंगळवार, 8 सप्टेंबर रोजी 10:00 वाजता, NATS च्या राष्ट्रीय हवाई क्षेत्र प्रणाली (NAS) मधील एक नियमित स्क्वॉक-कोड विनंती उच्च-प्राधान्य संदेशामुळे खंडित झाली, जेव्हा ती एका मूल्याचे अपडेट करण्याच्या मध्

3:06 ↗
postmortem · mr · २२ सप्टें, २०२६

एका रीबूटमुळे टेलस्ट्रा 2006 मध्ये पोहोचले. नव्वद लाख फोन.

मेलबर्नमधील एका अभियंत्याने पहाटे 2:50 वाजता टायमिंग चेसिस पुन्हा चालू केले आणि नाश्त्यापर्यंत ऑस्ट्रेलियाच्या सर्वात मोठ्या मोबाइल नेटवर्कने मान्य केले की तो नोव्हेंबर 2006 आहे. 8 जुलै 2026: टेलस्ट्र

3:15 ↗