+− THE DAILY DIFFdev & AI news
SHIP IT

Ellefu línur af JavaScript brutu internetið. Ein afpöntun.

22.

22. mars 2016, 21:30 UTC: verktaki aflýsir öllum 273 npm-pökkunum sínum eftir að npm afhendir pakkanafnið "kik" til Kik, skilaboðaforritsins, en einkaleyfisfulltrúi þess hafði lofað "lögfræðingum að banka á dyrnar þínar". Einn af 273 er left-pad: ellefu línur sem setja bil fyrir framan streng, sótt 2,5 milljón sinnum í mánuði. Innan nokkurra mínútna bila Babel, React og Node byggingar um allan heim, hundruð á mínútu. Afleggjari birtist eftir tíu mínútur og breytir engu, vegna þess að Babel dregur left-pad í gegnum línunúmer, sem festir nákvæmlega 0.0.3. Klukkan 23:55 endurheimtir npm eydda útgáfu úr afriti – fyrsta "un-un-publish" í sögu skrásetningarinnar – og viku síðar sendir hún út 24-tíma afpöntunarregluna. Eftir dauða, frá eigin frásögn npm og tölvupóstþræðinum sem Kik birti: skrásetningin sem leyfði hvaða höfundi sem er að eyða hvaða útgáfu sem er án þess að athuga háðir, hið flókna tré leyst beint á hverri uppsetningu, engin læsiskrá sjálfgefið. Git blame: 60 npm / 25 Kik / 15 ósjálfstæðisvenjan. Dómur um leiðréttinguna: SHIP IT.

Lestu skriflegu útgáfuna (enska) ↗

Það sem þetta myndband fjallar um

  • 11. mars: Einkaleyfisfulltrúi Kik biður Azer Koçulu um að endurnefna `kik`; klukkustund síðar: lögfræðingar "banka á dyrnar þínar og loka reikningum þínum"; Azer: $30.000; Kik sendir tölvupóst á npm stuðning
  • 18.–20. mars: Forstjóri npm flytur nafnið til Kik ("myndi með sanngirni búast við að það væri tengt kik.com"); Azer biður um að öllum einingum hans sé eytt
  • 22. mars, 21:30–23:55 UTC: 273 pakkar afpantaðir; left-pad@0.0.3 404 villur í Babel, Atom, Node verkefnum; fork 1.0.0 klukkan 21:42; tæknistjóri npm tístir "un-un-publishing" klukkan 23:03; 0.0.3 aftur úr öryggisafriti klukkan 23:55 — 2,5 klukkustundir
  • 23. og 29. mars: Eftir dauðagreining npm ("við klúðruðum") og nýja stefnan: afpanta aðeins innan 24 klukkustunda, öryggispláss fyrir fjarlægð nöfn (72 klst. frá 2020)

Þýtt afrit

Þýtt úr upprunalegri enskri frásögn. Tiltækt hljóð og textar eru stjórnaðir af YouTube.

0:00 Einn verktaki eyðir ellefu línum af JavaScript, og innan nokkurra mínútna, Babel, React og Node byggingar eru að bila um allan heim, hundruð á mínútu. Fallið er left-pad. Það setur bil fyrir framan streng, og undir lok kvölds gerir npm það eina sem það segist ekki geta gert: endurbirta eydda útgáfu. Hvernig það gerist, hvers vegna það er mögulegt, og hver fær skuldina. Þetta er The Daily Diff, eftir dauðagreining. 11. mars. Einkaleyfisfulltrúi hjá Kik, skilaboðaforritinu,

0:26 sendir Azer Koçulu tölvupóst: endurnefndu npm pakkann þinn, kik er vörumerkið okkar. Azer segir nei. Klukkustund síðar: lögfræðingar okkar verða að banka á dyrnar þínar og loka reikningum þínum. Azer nefnir verð, þrjátíu þúsund dollara, og Kik sendir þráðinn áfram til npm stuðnings. 18. mars. Forstjóri npm ákveður að allir sem slá inn npm install kik búist við skilaboða-

0:48 appinu, og afhendir nafnið. Azer biður um að öllu hans sé eytt. Tveimur dögum síðar gerir hann það sjálfur: tvö hundruð sjötíu og þrír pakkar. 22. mars, 21:30 UTC. Hver bygging sem nær í left-pad fær 404 villu. Tíu mínútum síðar endurbirtir ókunnugur það sem 1.0.0, og ekkert breytist, því Babel og Atom hlaða því í gegnum pakka sem heitir line-numbers, sem vill nákvæmlega 0.0.3.

1:13 Klukkan 23:03 tístir tæknistjóri npm: un-un-publishing. Klukkan 23:55 er 0.0.3 komið aftur úr öryggisafriti. Tvær og hálf klukkustund. Af hverju getur ein manneskja gert þetta? Þrjár ástæður. Hægt er að eyða hvaða útgáfu sem er á npm af höfundi hennar, tafarlaust, án þess að athuga hverjir eru háðir henni. Í öðru lagi, háðir eru flóknir: Babel veit ekki að left-pad er til, það þekkir line-numbers, og allt tréð er leyst beint við hverja uppsetningu.

1:36 Í þriðja lagi, árið 2016 festir ekkert það tré sjálfgefið; læsiskrár eru valfrjálsar, svo hvert CI keyrsla spyr internetið aftur hvernig ellefu línur af kóða líta út. Ein skrásetning, rekin af engum sem er háður henni. git blame. npm, sextíu prósent: eigin eftir dauðagreining segir ótakmarkaða afpöntun olli sársaukanum, og, orðrétt, við klúðruðum. Kik, tuttugu og fimm: einkaleyfisfulltrúi, ekki lögfræðingur, lofa lögfræðingum á dyrnar vegna nafns sem Kik hafði þegar ákveðið að nota ekki. Háðarvenjan, fimmtán: allir sem npm-settu inn ellefu línur í staðinn

2:06 fyrir að skrifa þær. Þar á meðal Kik, en byggingar þeirra bila líka. Sprengisvæði: tvö hundruð sjötíu og þrír pakkar dregnir, einn af þeim sóttur tvo og hálfa milljón sinnum í mánuði. Leiðréttingin tekur tvær og hálfar klukkustundir; fallið tekur ellefu línur. Á Hacker News, póstur sem spyr hvort við höfum gleymt hvernig á að forrita nær sautján hundruð stigum, aðallega frá fólki sem er enn með rauðar byggingar. Dómur, eftir dauðagreining: SHIP IT.

2:26 npm endurheimtir úr afriti, birtir eftir dauðagreiningu næsta dag, og innan viku sendir hún út regluna sem enn stendur: þú getur afpantað í tuttugu og fjórar klukkustundir, eftir það talarðu við manneskju. Mánudagur: skuldbindið læsiskrána ykkar, og ef fall er ellefu línur, það er málsgrein, ekki háð. Sendið mér atvikið sem ykkur er enn ekki leyft að tala um, í athugasemdum, eða á the daily diff dot dev. Og það er munurinn fyrir í dag.

2:48 Ég er Niko frá Axrisi. Sameinið á ábyrgan hátt.

Heimildir

  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

Tengd myndbönd