+− THE DAILY DIFFdev & AI news
SHIP IT

Tizenegy sor JavaScript megbénította az internetet. Egy visszavonás.

2016.

2016. március 22., 21:30 UTC: Egy fejlesztő visszavonja mind a 273 npm csomagját, miután az npm átadja a „kik” csomagnevet a Kik üzenetküldő alkalmazásnak, amelynek szabadalmi ügyvivője „ügyvédeket ígért az ajtóra dörömbölve”. A 273 közül az egyik a left-pad: tizenegy sor, amely szóközöket helyez egy string elé, havi 2,5 milliós letöltéssel. Percek alatt a Babel, React és Node build-ek világszerte hibát jeleznek, percenként több száz. Tíz percen belül megjelenik egy fork, és semmit sem változtat, mert a Babel a left-pad-et sorszámokon keresztül húzza be, ami pontosan a 0.0.3-at rögzíti. 23:55-kor az npm visszaállítja a törölt verziót egy biztonsági másolatból – a registry történetének első „vissza-nem-visszavonása” –, és egy héttel később bevezeti a 24 órás visszavonási szabályt. Boncolás, az npm saját beszámolója és a Kik által közzétett e-mail szál alapján: a registry, amely bármely szerzőnek lehetővé tette bármely verzió törlését függőségi ellenőrzés nélkül, az áthidaló fa élőben oldódott fel minden telepítéskor, alapértelmezés szerint nem volt lockfile. Git blame: 60 npm / 25 Kik / 15 a függőségi szokás. A javításról szóló ítélet: SHIP IT.

Olvassa el az írott kiadást (angolul) ↗

Amit ez a videó tartalmaz

  • Március 11.: A Kik szabadalmi ügyvivője arra kéri Azer Koçulut, hogy nevezze át a `kik`-et; egy órával később: ügyvédek „az ajtóra dörömbölve és a fiókjait lefoglalva”; Azer: 30 000 dollár; A Kik e-mailt küld az npm támogatásnak
  • Március 18–20.: Az npm vezérigazgatója átadja a nevet a Kiknek („ésszerűen elvárható, hogy az kik.com-hoz kapcsolódjon”); Azer kéri az összes moduljának törlését
  • Március 22., 21:30–23:55 UTC: 273 csomag visszavonva; left-pad@0.0.3 404-et jelez a Babel, Atom, Node projektekben; fork 1.0.0 21:42-kor; az npm CTO-ja tweetel az „un-un-publishing”-ről 23:03-kor; 0.0.3 vissza a biztonsági másolatból 23:55-kor – 2,5 óra
  • Március 23. és március 29.: az npm boncolása („ejtettük a labdát”) és az új szabályzat: csak 24 órán belül lehet visszavonni, biztonsági helyőrzők a eltávolított neveknél (2020 óta 72 óra)

Lefordított átirat

Az eredeti angol narrációból fordítva. A rendelkezésre álló hangot és feliratokat a YouTube vezérli.

0:00 Egy fejlesztő töröl tizenegy sor JavaScriptet, és percek alatt a Babel, a React és a Node buildek világszerte hibát jeleznek, percenként több százat. A függvény a left-pad. Szóközökkel egészít ki egy stringet, és estére az npm megteszi azt az egyetlen dolgot, amiről azt mondja, nem teheti: újra közzétesz egy törölt verziót. Hogyan történik, miért lehetséges, és kit terhel a felelősség. Ez a The Daily Diff, boncolás. Március 11. A Kik, az üzenetküldő alkalmazás, szabadalmi ügyvivője

0:26 e-mailt küld Azer Koçulunak: nevezze át az npm csomagját, a kik a mi márkánk. Azer nemet mond. Egy órával később: a védjegyügyvédeink az ajtóján fognak dörömbölni és lezárják a fiókjait. Azer megnevez egy árat, harmincezer dollárt, és a Kik továbbítja a szálat az npm támogatásnak. Március 18. Az npm vezérigazgatója úgy dönt, hogy bárki, aki az npm install kik parancsot beírja, az üzenetküldő

0:48 alkalmazásra számít, és átadja a nevet. Azer kéri az összes sajátjának törlését. Két nappal később maga teszi meg: kétszázhetvenhárom csomag. Március 22., 21:30 UTC. Minden build, amely a left-pad-et keresi, 404-et kap. Tíz perccel később egy idegen újra közzéteszi 1.0.0-ként, és semmi sem változik, mert a Babel és az Atom egy line-numbers nevű csomagon keresztül tölti be, amely pontosan a 0.0.3-at kéri.

1:13 23:03-kor az npm CTO-ja tweetel: un-un-publishing. 23:55-kor a 0.0.3 visszatér egy biztonsági másolatból. Két és fél óra. Miért teheti ezt egy ember? Három ok. Bármely verzió az npm-en törölhető a szerzője által, azonnal, anélkül, hogy ellenőriznék, ki függ tőle. Másodszor, a függőségek tranzitívak: a Babel nem tudja, hogy a left-pad létezik, tudja a line-numbers-t, és az egész fa élőben oldódik fel minden telepítéskor.

1:36 Harmadszor, 2016-ban alapértelmezés szerint semmi sem rögzíti ezt a fát; a lockfile-ok opt-in-ek, így minden CI futtatás újra megkérdezi az internetet, hogyan néz ki tizenegy sor kód. Egy registry, amelyet senki sem futtat, aki függ tőle. git blame. npm, hatvan százalék: saját boncolása szerint a korlátlan visszavonás okozta a fájdalmat, és, idézem, ejtettük a labdát. Kik, huszonöt: egy szabadalmi ügyvivő, nem ügyvéd, ügyvédeket ígérve az ajtónál egy olyan név miatt, amelyet a Kik már eldöntött, hogy nem fog használni. A függőségi szokás, tizenöt: mindenki, aki npm-install-t használt tizenegy sor helyett

2:06 ahelyett, hogy beírta volna őket. Beleértve a Kik-et is, amelynek buildjei szintén hibát jeleznek. Robbanási sugár: kétszázhetvenhárom csomag visszavonva, egyikük havi két és fél millió alkalommal letöltve. A javítás két és fél órát vesz igénybe; a függvény tizenegy sort. A Hacker News-on egy bejegyzés, amely azt kérdezi, elfelejtettük-e programozni, ezerhétszáz pontot ér el, többnyire olyan emberektől, akiknek a buildjei még mindig pirosak. Ítélet, boncolás: SHIP IT.

2:26 Az npm visszaállítja biztonsági másolatból, másnap közzéteszi a boncolást, és egy héten belül bevezeti a még mindig érvényes szabályt: visszavonhatja huszonnégy órán keresztül, utána beszél egy emberrel. Hétfő: commit-elje a lockfile-t, és ha egy függvény tizenegy soros, az egy bekezdés, nem függőség. Küldje el nekem azt az incidenst, amiről még mindig nem beszélhet, a hozzászólásokban, vagy a daily diff dot dev címen. És ez a mai diff.

2:48 Niko vagyok az Axrisi-től. Merge responsibly.

Források

  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

Kapcsolódó videók