+− THE DAILY DIFFdev & AI news
SHIP IT

Vienpadsmit JavaScript koda rindiņas "salauza" internetu. Viena "nepublicēšana".

2016.

2016. gada 22. marts, 21:30 UTC: izstrādātājs "nepublicē" visus 273 savus npm pakotnes pēc tam, kad npm nodeva pakotnes nosaukumu "kik" ziņojumapmaiņas lietotnei Kik, kuras patentu aģents bija apsolījis "juristus, kas klauvēs pie jūsu durvīm". Viena no 273 ir left-pad: vienpadsmit rindiņas, kas pievieno atstarpes virknes sākumam, lejupielādētas 2,5 miljonus reižu mēnesī. Dažu minūšu laikā Babel, React un Node "būves" neizdodas visā pasaulē, simtiem minūtē. Desmit minūšu laikā parādās "fork" un neko nemaina, jo Babel velk left-pad caur rindu numuriem, kas precīzi "piesprādzē" 0.0.3 versiju. Plkst. 23:55 npm atjauno izdzēsto versiju no dublējuma – pirmo "ne-nepublicēšanu" reģistra vēsturē – un nedēļu vēlāk ievieš 24 stundu "nepublicēšanas" noteikumu. Pēcanalīze, no npm paša konta un Kik publicētā e-pasta pavediena: reģistrs, kas ļāva jebkuram autoram dzēst jebkuru versiju bez atkarību pārbaudes, "tranzīta koks" tika atrisināts tiešsaistē katrā instalācijā, pēc noklusējuma bez "lockfile". Git vaina: 60 npm / 25 Kik / 15 atkarību paradums. Spriedums par labojumu: SHIP IT.

Lasiet rakstisko izdevumu (angļu valodā) ↗

Ko aptver šis video

  • 11. marts: Kik patentu aģents lūdz Azeru Koçulu pārdēvēt `kik`; stundu vēlāk: juristi "klauvē pie jūsu durvīm un likvidē jūsu kontus"; Azer: 30 000 ASV dolāru; Kik sūta e-pastus npm atbalsta dienestam
  • 18.–20. marts: npm izpilddirektors nodod nosaukumu Kik ("varētu pamatoti sagaidīt, ka tas ir saistīts ar kik.com"); Azer lūdz izdzēst visus savus moduļus
  • 22. marts, 21:30–23:55 UTC: 273 pakotnes nepublicētas; left-pad@0.0.3 atgriež 404 kļūdu Babel, Atom, Node projektos; "fork" 1.0.0 parādās 21:42; npm CTO tvīto "ne-nepublicēšana" plkst. 23:03; 0.0.3 atpakaļ no dublējuma plkst. 23:55 — 2,5 stundas
  • 23. marts un 29. marts: npm pēcanalīze ("mēs pieļāvām kļūdu") un jaunā politika: nepublicēt tikai 24 stundu laikā, drošības vietturi noņemtajiem nosaukumiem (72 h kopš 2020. gada)

Tulkotais transkripts

Tulkojums no oriģinālā angļu stāstījuma. Pieejamais audio un subtitri tiek kontrolēti no YouTube.

0:00 Viens izstrādātājs izdzēš vienpadsmit JavaScript koda rindiņas, un dažu minūšu laikā Babel, React un Node "būves" neizdodas visā pasaulē, simtiem minūtē. Funkcija ir left-pad. Tā pievieno virknei atstarpes, un vakara beigās npm veic vienu lietu, ko tas saka, ka nevar darīt: atkārtoti publicē izdzēstu versiju. Kā tas notiek, kāpēc tas ir iespējams un kurš ir vainīgs. Šis ir The Daily Diff, pēcanalīze. 11. marts. Patentu aģents no Kik, ziņojumapmaiņas lietotnes,

0:26 e-pastā Azeram Koçulu: pārdēvējiet savu npm pakotni, kik ir mūsu zīmols. Azer saka nē. Stundu vēlāk: mūsu preču zīmju juristi klauvēs pie jūsu durvīm un likvidēs jūsu kontus. Azer nosauc cenu, trīsdesmit tūkstošus dolāru, un Kik pārsūta pavedienu uz npm atbalstu. 18. marts. npm izpilddirektors lemj, ka ikviens, kurš raksta npm install kik, sagaida ziņojumapmaiņas

0:48 lietotni, un nodod nosaukumu. Azer lūdz izdzēst visu, kas viņam pieder. Divas dienas vēlāk viņš to dara pats: divi simti septiņdesmit trīs pakotnes. 22. marts, 21:30 UTC. Katrs "būvējums", kas sasniedz left-pad, saņem 404 kļūdu. Desmit minūtes vēlāk svešinieks to atkārtoti publicē kā 1.0.0, un nekas nemainās, jo Babel un Atom to ielādē caur pakotni ar nosaukumu line-numbers, kas precīzi vēlas 0.0.3 versiju.

1:13 Plkst. 23:03 npm CTO tvīto: "ne-nepublicēšana". Plkst. 23:55, 0.0.3 ir atgriezies no dublējuma. Divarpus stundas. Kāpēc viens cilvēks var to izdarīt? Trīs iemesli. Jebkuru versiju npm var izdzēst tās autors, uzreiz, bez pārbaudes, kas no tās ir atkarīgs. Otrkārt, atkarības ir tranzītas: Babel nezina, ka left-pad pastāv, tas zina line-numbers, un viss koks tiek atrisināts tiešsaistē katrā instalācijā.

1:36 Treškārt, 2016. gadā nekas pēc noklusējuma nenostiprina šo koku; "lockfile" ir pēc izvēles, tāpēc katrs CI palaišanas reize no jauna jautā internetam, kā izskatās vienpadsmit koda rindiņas. Viens reģistrs, ko neviens, kas no tā ir atkarīgs, nepārvalda. git vaina. npm, sešdesmit procenti: tā paša pēcanalīze saka, ka neierobežota nepublicēšana radīja sāpes, un, citējot, mēs pieļāvām kļūdu. Kik, divdesmit pieci: patentu aģents, nevis jurists, solot juristus pie durvīm par nosaukumu, ko Kik jau bija nolēmis neizmantot. Atkarību paradums, piecpadsmit: ikviens, kurš npm-instalēja vienpadsmit rindiņas tā vietā,

2:06 lai tās ierakstītu. Ieskaitot Kik, kura "būves" arī sabojājas. Sprādziena rādiuss: divi simti septiņdesmit trīs pakotnes izņemtas, viena no tām lejupielādēta divarpus miljonus reižu mēnesī. Labojums aizņem divarpus stundas; funkcija aizņem vienpadsmit rindiņas. Hacker News, ziņojums, kas jautā, vai mēs esam aizmirsuši, kā programmēt, sasniedz septiņpadsmit simtus punktus, galvenokārt no cilvēkiem, kuru "būves" joprojām ir sarkanas. Spriedums, pēcanalīze: SHIP IT.

2:26 npm atjauno no dublējuma, nākamajā dienā publicē pēcanalīzi, un nedēļas laikā ievieš noteikumu, kas joprojām ir spēkā: jūs varat nepublicēt divdesmit četras stundas, pēc tam jūs runājat ar cilvēku. Pirmdiena: veiciet "lockfile" "commit", un, ja funkcija ir vienpadsmit rindiņas, tas ir "paragrāfs", nevis atkarība. Nosūtiet man incidentu, par kuru jums joprojām nav atļauts runāt, komentāros vai vietnē the daily diff dot dev. Un tas ir šodienas "diff".

2:48 Esmu Niko no Axrisi. Apvienojiet atbildīgi.

Avoti

  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

Saistītie video