+− THE DAILY DIFFdev & AI news
SHIP IT

Он бір жол JavaScript интернетті бұзды. Бір жариялаудан алу.

2016 жылғы 22 наурыз, 21:30 UTC: әзірлеуші npm-ге "kik" пакет атауын Kik хабар алмасу қолданбасына бергеннен кейін, оның патенттік агенті "адвокаттар есігіңді қағады" деп уәде бергеннен кейін, өзінің барлық 273 npm пакетін жариялаудан алады.

2016 жылғы 22 наурыз, 21:30 UTC: әзірлеуші npm-ге "kik" пакет атауын Kik хабар алмасу қолданбасына бергеннен кейін, оның патенттік агенті "адвокаттар есігіңді қағады" деп уәде бергеннен кейін, өзінің барлық 273 npm пакетін жариялаудан алады. 273 пакеттің бірі left-pad: жолдың алдына бос орын қоятын он бір жол, айына 2,5 миллион рет жүктелген. Бірнеше минут ішінде Babel, React және Node құрастырулары бүкіл әлем бойынша сәтсіздікке ұшырайды, минутына жүздеген. Он минут ішінде форк пайда болады және ештеңені өзгертпейді, себебі Babel left-pad-ті жол нөмірлері арқылы тартады, ол 0.0.3 нұсқасын нақты бекітеді. 23:55-те npm жойылған нұсқаны сақтық көшірмеден қалпына келтіреді — тіркеуіш тарихындағы алғашқы "жариялаудан алуды кері қайтару" — және бір аптадан кейін 24 сағаттық жариялаудан алу ережесін шығарады. Нpm-нің өз есебінен және Kik жариялаған электрондық пошта тізбегінен кейінгі талдау: авторға ешқандай тәуелділік тексеруінсіз кез келген нұсқаны жоюға мүмкіндік беретін тіркеуіш, әрбір орнату кезінде тікелей шешілетін транзитивті ағаш, әдепкі бойынша lockfile жоқ. Git blame: 60 npm / 25 Kik / 15 тәуелділік әдеті. Түзетуге қатысты үкім: SHIP IT.

Жазбаша басылымды оқыңыз (ағылшынша) ↗

Бұл бейне не туралы

  • 11 наурыз: Kik патенттік агенті Әзер Кочулудан `kik` атауын өзгертуді сұрайды; бір сағаттан кейін: адвокаттар "есігіңді қағып, аккаунттарыңды бұғаттайды"; Әзер: $30,000; Kik npm қолдау қызметіне электрондық хат жолдайды
  • 18–20 наурыз: npm CEO атауды Kik-ке береді ("kik.com-ға қатысты болады деп болжайды"); Әзер барлық модульдерін жоюды сұрайды
  • 22 наурыз, 21:30–23:55 UTC: 273 пакет жариялаудан алынды; [email protected] Babel, Atom, Node жобаларында 404 қатесін береді; 21:42-де fork 1.0.0 пайда болады; npm CTO 23:03-те "жариялаудан алуды кері қайтару" туралы твит жазады; 23:55-те 0.0.3 сақтық көшірмеден қайта оралды — 2.5 сағат
  • 23 және 29 наурыз: npm-нің кейінгі талдауы ("біз қате жібердік") және жаңа саясат: тек 24 сағат ішінде жариялаудан алу, жойылған атаулар үшін қауіпсіздік плейсхолдері (2020 жылдан бастап 72 сағат)

Аударылған транскрипция

Бастапқы ағылшын тіліндегі баяндамадан аударылған. Қолжетімді аудио және субтитрлерді YouTube басқарады.

0:00 Бір әзірлеуші JavaScript-тің он бір жолын жояды, және бірнеше минут ішінде Babel, React және Node құрастырулары бүкіл әлем бойынша сәтсіздікке ұшырайды, минутына жүздеген. Функция left-pad. Ол жолды бос орындармен толтырады, және кештің соңына қарай npm ол істей алмаймын деген бір нәрсені істейді: жойылған нұсқаны қайта жариялайды. Бұл қалай болады, неге мүмкін, және кім кінәлі. Бұл The Daily Diff, кейінгі талдау. 11 наурыз. Kik хабар алмасу қолданбасының патенттік агенті,

0:26 Әзер Кочулуға электрондық хат жолдайды: npm пакетіңіздің атауын өзгертіңіз, kik біздің бренд. Әзер жоқ дейді. Бір сағаттан кейін: біздің сауда белгісі бойынша адвокаттарымыз сіздің есігіңізді қағып, аккаунттарыңызды бұғаттайды. Әзер бағаны атайды, отыз мың доллар, және Kik тізбекті npm қолдау қызметіне жібереді. 18 наурыз. npm CEO npm install kik деп терген кез келген адам хабар алмасуды күтеді деп шешеді,

0:48 қолданбаны, және атауды береді. Әзер өзінің барлық нәрсесін жоюды сұрайды. Екі күннен кейін ол мұны өзі істейді: екі жүз жетпіс үш пакет. 22 наурыз, 21:30 UTC. left-pad-ке жүгінетін әрбір құрастыру 404 қатесін алады. Он минуттан кейін бөтен адам оны 1.0.0 ретінде қайта жариялайды, және ештеңе өзгермейді, себебі Babel және Atom оны line-numbers деп аталатын пакет арқылы жүктейді, ол 0.0.3 нұсқасын нақты қалайды.

1:13 23:03-те npm CTO твит жазады: жариялаудан алуды кері қайтару. 23:55-те, 0.0.3 сақтық көшірмеден қайта оралды. Екі жарым сағат. Бір адам мұны қалай істей алады? Үш себеп. npm-дегі кез келген нұсқаны оның авторы жоя алады, бірден, оған кім тәуелді екенін тексермей. Екіншіден, тәуелділіктер транзитивті: Babel left-pad бар екенін білмейді, ол line-numbers-ты біледі, және бүкіл ағаш әрбір орнату кезінде тікелей шешіледі.

1:36 Үшіншіден, 2016 жылы ешнәрсе ол ағашты әдепкі бойынша бекітпейді; lockfile-дер қосымша, сондықтан әрбір CI іске қосуы интернеттен он бір жол кодтың қалай көрінетінін қайта сұрайды. Бір тіркеуіш, оған тәуелді ешкім басқармайды. git blame. npm, алпыс пайыз: оның өз кейінгі талдауы шектеусіз жариялаудан алу ауырсынуды тудырды дейді, және, дәйексөз, біз қате жібердік. Kik, жиырма бес: адвокат емес, патенттік агент, Kik қолданбасы қолданбауға шешім қабылдаған атауға қатысты есік алдында адвокаттарды уәде еткен. Тәуелділік әдеті, он бес: он бір жолды терудің орнына npm-арқылы орнатқандардың бәрі.

2:06 Оның ішінде Kik, оның құрастырулары да бұзылған. Оның ішінде Kik, оның құрастырулары да бұзылған. Жойылу радиусы: екі жүз жетпіс үш пакет тартылды, олардың бірі айына екі жарым миллион рет жүктелген. Түзету екі жарым сағатты алады; функция он бір жолды алады. Hacker News-те, біз бағдарламалауды ұмыттық па деген сұрақ қойылған пост он жеті жүз ұпай жинайды, көбінесе олардың құрастырулары әлі қызыл болып тұрған адамдардан. Үкім, кейінгі талдау: SHIP IT.

2:26 npm сақтық көшірмеден қалпына келтіреді, келесі күні кейінгі талдауды жариялайды, және бір апта ішінде әлі де қолданыстағы ережені шығарады: сіз жиырма төрт сағат ішінде жариялаудан ала аласыз, одан кейін адаммен сөйлесесіз. Дүйсенбі: lockfile-ыңызды жіберіңіз, және егер функция он бір жол болса, ол тәуелділік емес, абзац. Маған әлі де айтуға рұқсат етілмеген оқиғаны жіберіңіз, пікірлерде немесе daily diff dot dev мекенжайына. Бүгінгі айырмашылық осы.

2:48 Мен Niko, Axrisi-денмін. Жауапкершілікпен біріктіріңіз.

Дереккөздер

  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 · kk · 2026 ж. 25 қыр.

Бір миллисекундтық қате Ұлыбритания әуе қозғалысын тоқтатты. Алты сағат.

8 қыркүйек сейсенбі күні сағат 10:00-де NATS-тың Ұлттық әуе кеңістігі жүйесіндегі (NAS) әдеттегі squawk-кодын сұрауы мәнді жаңарту кезінде басымдығы жоғары хабарламамен үзіледі. Әсер ету терезесі шама

3:06 ↗
postmortem · kk · 2026 ж. 22 қыр.

Қайта жүктеу Telstra-ны 2006 жылға жіберді. Тоғыз миллион телефон.

Мельбурндегі инженер таңғы сағат 2:50-де тайминг шассиін қайта қосады, содан кейін таңғы асқа дейін Австралияның ең ірі мобильді желісі 2006 жылдың қарашасы деп келіседі. 2026 жылдың 8 шілдесі: Telstr

3:15 ↗