# Jedanaest linija JavaScripta slomilo je internet. Jedno 'unpublish'.

Published: 2026-09-13

22. mart 2016, 21:30 UTC: programer poništava objavu svih 273 svoja npm paketa nakon što npm preda ime paketa "kik" aplikaciji za razmjenu poruka Kik, čiji je patentni agent obećao "advokate koji će vam lupati na vrata". Jedan od 273 je left-pad: jedanaest linija koje stavljaju razmake ispred niza, preuzet 2,5 miliona puta mjesečno. U roku od nekoliko minuta Babel, React i Node kompilacije propadaju širom svijeta, stotine u minuti. "Fork" se pojavljuje za deset minuta i ništa ne mijenja, jer Babel povlači left-pad kroz brojeve linija, što tačno fiksira 0.0.3. U 23:55 npm vraća izbrisanu verziju iz sigurnosne kopije — prvi "un-un-publish" u historiji registra — i sedam dana kasnije objavljuje pravilo o 24-satnom poništavanju objave. Postmortem, iz npm-ovog vlastitog izvještaja i e-mail prepiske koju je Kik objavio: registar koji je omogućio svakom autoru da izbriše bilo koju verziju bez provjere zavisnosti, tranzitivno stablo riješeno uživo pri svakoj instalaciji, bez zaključane datoteke po defaultu. Git blame: 60 npm / 25 Kik / 15 navika zavisnosti. Presuda za ispravku: SHIP IT.

Canonical: https://thedailydiff.dev/bs/video/2026-09-13-left-pad/

## Šta ovaj video pokriva

- 11. mart: Kik-ov patentni agent traži od Azera Koçulua da preimenuje \`kik\`; sat vremena kasnije: advokati "lupaju na vaša vrata i gase vaše naloge"; Azer: 30.000 dolara; Kik šalje e-mail npm podršci
- 18.–20. mart: CEO npm-a prenosi ime Kiku ("razumno bi očekivao da je povezano s kik.com"); Azer traži da se svi njegovi moduli izbrišu
- 22. mart, 21:30–23:55 UTC: 273 paketa poništena objava; left-pad@0.0.3 404s u Babel, Atom, Node projektima; fork 1.0.0 u 21:42; npm-ov CTO tvituje "un-un-publishing" u 23:03; 0.0.3 se vraća iz sigurnosne kopije u 23:55 — 2.5 sata
- 23. i 29. mart: npm-ov postmortem ("zezli smo stvar") i nova politika: poništavanje objave samo unutar 24 sata, sigurnosni placeholderi za uklonjena imena (72 sata od 2020.)

## Prevedeni transkript

Prevedeno iz originalne engleske naracije. Dostupan zvuk i titlovi kontroliše YouTube.

0:00 Jedan programer briše jedanaest linija JavaScripta, i u roku od nekoliko minuta Babel, React i Node kompilacije propadaju širom svijeta, stotine u minuti. Funkcija je left-pad. Ona popunjava string razmacima, i do kraja večeri npm čini jedinu stvar koju kaže da ne može učiniti: ponovo objaviti izbrisanu verziju. Kako se to događa, zašto je moguće i ko je kriv. Ovo je The Daily Diff, postmortem. 11. mart. Patentni agent Kika, aplikacije za razmjenu poruka,

0:26 šalje e-mail Azeru Koçuluu: preimenujte svoj npm paket, kik je naš brend. Azer kaže ne. Sat vremena kasnije: naši advokati za zaštitu žiga kucat će vam na vrata i gasiti vaše račune. Azer navodi cijenu, trideset hiljada dolara, i Kik prosljeđuje prepisku npm podršci. 18. mart. CEO npm-a donosi odluku da svako ko ukuca npm install kik očekuje aplikaciju za razmjenu

0:48 poruka, i predaje ime. Azer traži da se sve njegovo izbriše. Dva dana kasnije on to sam radi: dvjesto sedamdeset i tri paketa. 22. mart, 21:30 UTC. Svaka kompilacija koja posegne za left-padom dobije 404. Deset minuta kasnije stranac ga ponovo objavljuje kao 1.0.0, i ništa se ne mijenja, jer Babel i Atom ga učitavaju putem paketa zvanog line-numbers, koji želi tačno 0.0.3.

1:13 U 23:03 npm-ov CTO tvituje: un-un-publishing. U 23:55, 0.0.3 je vraćen iz sigurnosne kopije. Dva i po sata. Zašto to može učiniti jedna osoba? Tri razloga. Bilo koja verzija na npm-u je izbrisiva od strane njenog autora, trenutno, bez provjere ko zavisi od nje. Drugo, zavisnosti su tranzitivne: Babel ne zna da left-pad postoji, zna line-numbers, i cijelo stablo se rješava uživo pri svakoj instalaciji.

1:36 Treće, 2016. godine ništa ne fiksira to stablo po defaultu; lockfileovi su opt-in, tako da svako CI pokretanje ponovo pita internet kako izgleda jedanaest linija koda. Jedan registar, kojim ne upravlja niko ko zavisi od njega. git blame. npm, šezdeset posto: njegov vlastiti postmortem kaže da neograničeno poništavanje objave je uzrokovalo bol, i, citiram, zeznuli smo stvar. Kik, dvadeset pet: patentni agent, a ne advokat, obećava advokate na vratima zbog imena koje je Kik već odlučio da ne koristi. Navika zavisnosti, petnaest: svi koji su npm-instalirali jedanaest linija umjesto

2:06 da ih kucaju. Uključujući Kik, čije se kompilacije također lome. Radijus udara: dvjesto sedamdeset i tri povučena paketa, jedan od njih preuzet dva i po miliona puta mjesečno. Ispravka traje dva i po sata; funkcija traje jedanaest linija. Na Hacker Newsu, objava koja pita jesmo li zaboravili kako programirati dostiže sedamnaest stotina bodova, uglavnom od ljudi čije su kompilacije još uvijek crvene. Presuda, postmortem: SHIP IT.

2:26 npm vraća iz sigurnosne kopije, objavljuje postmortem sljedeći dan, i u roku od sedam dana objavljuje pravilo koje još uvijek vrijedi: možete poništiti objavu na dvadeset četiri sata, nakon toga razgovarate s čovjekom. Ponedjeljak: committajte svoj lockfile, i ako funkcija ima jedanaest linija, to je paragraf, a ne zavisnost. Pošaljite mi incident o kojem još uvijek ne smijete pričati, u komentarima, ili na the daily diff dot dev. I to je diff za danas.

2:48 Ja sam Niko iz Axrisija. Spajajte odgovorno.

## Izvori

- [npm, Inc., "kik, left-pad, and npm" (Mar 23, 2016)](https://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm) — blog.npmjs.org
- [npm, Inc., "changes to npm's unpublish policy" (Mar 29, 2016)](https://blog.npmjs.org/post/141905368000/changes-to-npms-unpublish-policy) — blog.npmjs.org
- [Azer Koçulu, "I've Just Liberated My Modules" (Mar 22, 2016; archive copy)](https://web.archive.org/web/20160323201305/https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c) — web.archive.org
- [Mike Roberts (Kik), "A discussion about the breaking of the Internet" — the full e-mail thread (Mar 23, 2016; archive copy)](https://web.archive.org/web/20170112194445/https://medium.com/@mproberts/a-discussion-about-the-breaking-of-the-internet-3d4d2a83aa4d) — web.archive.org
- [Laurie Voss (npm CTO) on X, Mar 22, 2016, 23:03 UTC](https://x.com/seldo/status/712414400808755200) — x.com
- [left-pad 0.0.3 on the npm registry (the eleven lines)](https://registry.npmjs.org/left-pad/0.0.3) — registry.npmjs.org
- [Hacker News, Mar 22, 2016 — "I've Just Liberated My Modules" (1,573 points)](https://news.ycombinator.com/item?id=11340510) — news.ycombinator.com
- [Hacker News, Mar 23, 2016 — "NPM and Left-Pad: Have We Forgotten How to Program?" (1,725 points)](https://news.ycombinator.com/item?id=11348798) — news.ycombinator.com
- [Hacker News, Mar 29, 2016 — "Changes to Npm's unpublish policy" (320 points)](https://news.ycombinator.com/item?id=11382885) — news.ycombinator.com
- [The Register, Mar 23, 2016 — "How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript"](https://www.theregister.com/2016/03/23/npm_left_pad_chaos/) — www.theregister.com
