Njëmbëdhjetë rreshta JavaScript-i prishën internetin. Një çpublikim.
22 Mars 2016, 21:30 UTC: një zhvillues çpublikon të gjitha 273 paketat e tij npm pasi npm i jep emrin e paketës "kik" aplikacionit të mesazheve Kik, agjenti i patentave të të cilit kishte premtuar "avokatë që do t'ju trokasin në derë".
22 Mars 2016, 21:30 UTC: një zhvillues çpublikon të gjitha 273 paketat e tij npm pasi npm i jep emrin e paketës "kik" aplikacionit të mesazheve Kik, agjenti i patentave të të cilit kishte premtuar "avokatë që do t'ju trokasin në derë". Një nga 273-at është left-pad: njëmbëdhjetë rreshta që vendosin hapësira para një string-u, të shkarkuar 2.5 milionë herë në muaj. Brenda pak minutash ndërtimet Babel, React dhe Node dështojnë në mbarë botën, qindra në minutë. Një fork shfaqet pas dhjetë minutash dhe nuk ndryshon asgjë, sepse Babel tërheq left-pad nëpërmjet numrave të rreshtave, i cili fikson saktësisht 0.0.3. Në 23:55 npm riktheu versionin e fshirë nga një kopje rezervë — "ç-çpublikimi" i parë në historinë e regjistrit — dhe një javë më vonë publikon rregullin 24-orësh të çpublikimit. Postmortem, nga llogaria e vetë npm dhe fije e-mail-i që Kik publikoi: regjistri që lejonte çdo autor të fshinte çdo version pa kontroll të varësive, pema transitive e zgjidhur drejtpërdrejt në çdo instalim, pa lockfile si parazgjedhje. Faji i Git: 60 npm / 25 Kik / 15 zakoni i varësive. Vendimi për rregullimin: SHIP IT.
Lexoni edicionin e shkruar (anglisht) ↗
Çfarë mbulon kjo video
- 11 Mars: Agjenti i patentave të Kik i kërkon Azer Koçulu-s të riemërtojë `kik`; një orë më vonë: avokatë "që trokasin në derën tuaj dhe heqin llogaritë tuaja"; Azer: 30,000 dollarë; Kik i dërgon e-mail mbështetjes së npm
- 18–20 Mars: CEO i npm-së transferon emrin te Kik ("do të priste arsyeshmisht që të lidhej me kik.com"); Azer kërkon fshirjen e të gjitha moduleve të tij
- 22 Mars, 21:30–23:55 UTC: 273 paketa të çpublikuara; left-pad@0.0.3 404s në projektet Babel, Atom, Node; fork 1.0.0 në 21:42; CTO i npm-së poston në Twitter "un-un-publishing" në 23:03; 0.0.3 kthehet nga kopja rezervë në 23:55 — 2.5 orë
- 23 dhe 29 Mars: postmortem i npm-së ("e lëshuam topi") dhe politika e re: çpubliko vetëm brenda 24 orëve, zëvendësues sigurie për emrat e hequr (72 orë që nga viti 2020)
Transkript i përkthyer
Përkthyer nga tregimi origjinal në anglisht. Audio dhe titrat e disponueshme kontrollohen nga YouTube.
0:00 Një zhvillues fshin njëmbëdhjetë rreshta JavaScript, dhe brenda pak minutash Babel, Ndërtimet React dhe Node po dështojnë në mbarë botën, qindra në minutë. Funksioni është left-pad. Ai mbush një varg me hapësira, dhe në fund të mbrëmjes npm bën atë gjë që thotë se nuk mund ta bëjë: ripublikon një version të fshirë. Si ndodh, pse është e mundur, dhe kush merr fajin. Ky është The Daily Diff, postmortem. 11 mars. Një agjent patentash në Kik, aplikacioni i mesazheve,
0:26 i dërgon email Azer Koçulu-s: riemërto paketën tënde npm, kik është marka jonë. Azer thotë jo. Një orë më vonë: avokatët tanë të markës tregtare do të trokasin në derën tuaj dhe do t'ju heqin llogaritë. Azer jep një çmim, tridhjetë mijë dollarë, dhe Kik ia përcjell fijen e-mail-it tek npm mbështetje. 18 mars. CEO i npm vendos që kushdo që shkruan npm install kik pret aplikacionin e mesazheve,
0:48 dhe ia dorëzon emrin. Azer kërkon fshirjen e të gjitha gjërave të tij. Dy ditë më vonë ai e bën vetë: dyqind e shtatëdhjetë e tre paketa. 22 Mars, 21:30 UTC. Çdo ndërtim që kërkon left-pad merr një 404. Dhjetë minuta më vonë një i huaj e ripublikon atë si 1.0.0, dhe asgjë nuk ndryshon, sepse Babel dhe Atom e ngarkojnë atë përmes një pakete të quajtur line-numbers, e cila kërkon saktësisht 0.0.3.
1:13 Në 23:03 CTO i npm poston në Twitter: un-un-publishing. Në 23:55, 0.0.3 kthehet nga një rezervë. Dy orë e gjysmë. Pse mund ta bëjë këtë një person? Tri arsye. Çdo version në npm mund të fshihet nga autori i tij, menjëherë, pa asnjë kontroll të atyre që varen prej tij. Së dyti, varësitë janë kalimtare: Babel nuk e di që left-pad ekziston, ai njeh line-numbers, dhe e gjithë pema zgjidhet drejtpërdrejt në çdo instalim.
1:36 Së treti, në 2016 asgjë nuk e fikson atë pemë si parazgjedhje; lockfiles janë opsionale, kështu që çdo ekzekutim i CI i ridërgon internetit pyetjen se si duken njëmbëdhjetë rreshta kodi. Një regjistër, i drejtuar nga askush që varet prej tij. faji i git. npm, gjashtëdhjetë për qind: postmortem i tij thotë se çpublikimi i pakufizuar shkaktoi dhimbjen, dhe, citat, ne e lëshuam topi. Kik, njëzet e pesë: një agjent patentash, jo një avokat, duke premtuar avokatë në derë për një emër që Kik tashmë kishte vendosur të mos e përdorte. Zakoni i varësive, pesëmbëdhjetë: të gjithë ata që instaluan njëmbëdhjetë rreshta nëpërmjet npm në vend
2:06 që t'i shkruanin. Përfshirë Kik, ndërtimet e të cilit prishen gjithashtu. Rrezja e shpërthimit: dyqind e shtatëdhjetë e tre paketa të tërhequra, një prej tyre e shkarkuar dy milionë e gjysmë herë në muaj. Rregullimi merr dy orë e gjysmë; funksioni merr njëmbëdhjetë rreshta. Në Hacker News, një postim që pyet nëse kemi harruar si të programojmë arrin shtatëmbëdhjetë qind pikë, kryesisht nga njerëz ndërtimet e të cilëve janë ende të kuqe. Vendimi, postmortem: SHIP IT.
2:26 npm rikthehet nga kopja rezervë, poston postmortem-in ditën tjetër, dhe brenda një jave nxjerr rregullin që ende qëndron: mund të çpublikosh për njëzet e katër orë, pas kësaj flet me një njeri. E hënë: komitto lockfile-in tënd, dhe nëse një funksion është njëmbëdhjetë rreshta, është një paragraf, jo një varësi. Më dërgoni incidentin për të cilin ende nuk ju lejohet të flisni, në komente, ose te the daily diff dot dev. Dhe ky është ndryshimi për sot.
2:48 Unë jam Niko nga Axrisi. Ndërthuruni me përgjegjësi.
Burimet
- npm, Inc., "kik, left-pad, and npm" (Mar 23, 2016)blog.npmjs.org
- npm, Inc., "changes to npm's unpublish policy" (Mar 29, 2016)blog.npmjs.org
- Azer Koçulu, "I've Just Liberated My Modules" (Mar 22, 2016; archive copy)web.archive.org
- Mike Roberts (Kik), "A discussion about the breaking of the Internet" — the full e-mail thread (Mar 23, 2016; archive copy)web.archive.org
- Laurie Voss (npm CTO) on X, Mar 22, 2016, 23:03 UTCx.com
- left-pad 0.0.3 on the npm registry (the eleven lines)registry.npmjs.org
- Hacker News, Mar 22, 2016 — "I've Just Liberated My Modules" (1,573 points)news.ycombinator.com
- Hacker News, Mar 23, 2016 — "NPM and Left-Pad: Have We Forgotten How to Program?" (1,725 points)news.ycombinator.com
- Hacker News, Mar 29, 2016 — "Changes to Npm's unpublish policy" (320 points)news.ycombinator.com
- The Register, Mar 23, 2016 — "How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript"www.theregister.com



