# Jedenásť riadkov JavaScriptu zlomilo internet. Jedno zrušenie publikácie.

Published: 2026-09-13

22. marca 2016, 21:30 UTC: vývojár zruší publikáciu všetkých 273 svojich npm balíkov po tom, čo npm odovzdá názov balíka „kik“ aplikácii Kik na posielanie správ, ktorej patentový zástupca sľúbil „právnikov búchajúcich na vaše dvere“. Jeden z 273 je left-pad: jedenásť riadkov, ktoré vložia medzery pred reťazec, stiahnutých 2,5 milióna krát mesačne. V priebehu niekoľkých minút zlyhajú Babel, React a Node zostavenia po celom svete, stovky za minútu. Fork sa objaví za desať minút a nič nemení, pretože Babel ťahá left-pad cez čísla riadkov, čo presne viaže 0.0.3. O 23:55 npm obnoví zmazanú verziu zo zálohy — prvé „zrušenie zrušenia publikácie“ v histórii registru — a o týždeň neskôr zavedie 24-hodinové pravidlo zrušenia publikácie. Postmortem, z vlastného účtu npm a e-mailového vlákna, ktoré Kik zverejnil: register, ktorý umožnil akémukoľvek autorovi zmazať akúkoľvek verziu bez kontroly závislostí, prechodný strom sa riešil naživo pri každej inštalácii, štandardne bez lockfile. Git blame: 60 npm / 25 Kik / 15 zvyk závislostí. Verdikt k oprave: SHIP IT.

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

## Čo toto video pokrýva

- 11. mar: Patentový zástupca Kik požiada Azera Koçulu o premenovanie \`kik\`; o hodinu neskôr: právnici „búchajú na vaše dvere a odoberajú vaše účty“; Azer: 30 000 $; Kik pošle e-mail podpore npm
- 18. – 20. mar: CEO npm prevedie názov na Kik („dôvodne by očakával, že to súvisí s kik.com“); Azer požiada o odstránenie všetkých svojich modulov
- 22. mar, 21:30 – 23:55 UTC: 273 balíkov zrušených; left-pad@0.0.3 404s v projektoch Babel, Atom, Node; fork 1.0.0 o 21:42; CTO npm tweetuje „un-un-publishing“ o 23:03; 0.0.3 späť zo zálohy o 23:55 – 2,5 hodiny
- 23. mar a 29. mar: Postmortem npm („pokazili sme to“) a nová politika: zrušenie publikácie len do 24 hodín, bezpečnostné zástupné symboly pre odstránené názvy (72 hodín od roku 2020)

## Preložený prepis

Preložené z pôvodného anglického rozprávania. Dostupný zvuk a titulky sú kontrolované službou YouTube.

0:00 Jeden vývojár vymaže jedenásť riadkov JavaScriptu a v priebehu niekoľkých minút Babel, React a Node zostavenia zlyhávajú po celom svete, stovky za minútu. Funkcia je left-pad. Vyplní reťazec medzerami a do konca večera npm urobí jednu vec, o ktorej hovorí, že nemôže: znova publikuje vymazanú verziu. Ako sa to stane, prečo je to možné a koho treba viniť. Toto je The Daily Diff, postmortem. 11. marec. Patentový zástupca v Kik, aplikácii na posielanie správ,

0:26 pošle e-mail Azerovi Koçulu: premenujte svoj npm balík, kik je naša značka. Azer hovorí nie. O hodinu neskôr: naši právnici pre ochranné známky budú búchať na vaše dvere a rušiť vaše účty. Azer udáva cenu, tridsaťtisíc dolárov, a Kik prepošle vlákno na podporu npm . 18. marec. CEO npm rozhodne, že každý, kto zadá npm install kik, očakáva aplikáciu

0:48 na posielanie správ, a odovzdá názov. Azer požiada o vymazanie všetkého, čo mu patrí. O dva dni neskôr to urobí sám: dvestosedemdesiatri balíkov. 22. marec, 21:30 UTC. Každé zostavenie, ktoré siahne po left-pad, dostane 404. O desať minút neskôr ho cudzinec znovu publikuje ako 1.0.0, a nič sa nemení, pretože Babel a Atom ho načítajú cez balík nazvaný line-numbers, ktorý chce presne 0.0.3.

1:13 O 23:03 CTO npm tweetuje: un-un-publishing. O 23:55 je 0.0.3 späť zo zálohy. Dve a pol hodiny. Prečo to môže urobiť jedna osoba? Tri dôvody. Akúkoľvek verziu na npm môže jej autor vymazať, okamžite, bez kontroly, kto od nej závisí. Po druhé, závislosti sú tranzitívne: Babel nevie, že left-pad existuje, pozná line-numbers a celý strom sa rieši naživo pri každej inštalácii.

1:36 Po tretie, v roku 2016 nič štandardne tento strom nepripína; lockfiles sú voliteľné, takže každé spustenie CI sa znova pýta internetu, ako vyzerá jedenásť riadkov kódu. Jeden register, ktorý neriadi nikto, kto od neho závisí. git blame. npm, šesťdesiat percent: jeho vlastné postmortem hovorí, že neobmedzené zrušenie publikácie spôsobilo bolesť, a, citujem, "we dropped the ball". Kik, dvadsaťpäť: patentový zástupca, nie právnik, sľubuje právnikov pri dverách kvôli názvu, ktorý sa Kik už rozhodol nepoužiť. Zvyk závislostí, pätnásť: každý, kto npm-nainštaloval jedenásť riadkov namiesto

2:06 ich napísania. Vrátane Kik, ktorého zostavy sa tiež rozpadajú. Polomer výbuchu: dvestosedemdesiatri stiahnutých balíkov, jeden z nich stiahnutý dva a pol milióna krát mesačne. Oprava trvá dve a pol hodiny; funkcia trvá jedenásť riadkov. Na Hacker News sa príspevok pýtajúci sa, či sme zabudli programovať, dostane sedemnásťsto bodov, väčšinou od ľudí, ktorých zostavy sú stále červené. Verdikt, postmortem: SHIP IT.

2:26 npm obnoví zo zálohy, zverejní postmortem na druhý deň, a do týždňa zavedie pravidlo, ktoré stále platí: môžete zrušiť publikáciu na dvadsaťštyri hodín, potom sa porozprávate s človekom. Pondelok: commitnite svoj lockfile, a ak má funkcia jedenásť riadkov, je to odsek, nie závislosť. Pošlite mi incident, o ktorom stále nesmiete hovoriť, v komentároch alebo na daily diff dot dev. A to je rozdiel na dnes.

2:48 Som Niko z Axrisi. Spojte zodpovedne.

## Zdroje

- [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
