# Jedenáct řádků JavaScriptu rozbilo internet. Jedno zrušení publikování.

Published: 2026-09-13

22. března 2016, 21:30 UTC: vývojář zruší publikování všech 273 svých npm balíčků poté, co npm předá název balíčku „kik“ aplikaci Kik, jejíž patentový zástupce slíbil „právníky bouchající na vaše dveře“. Jeden z 273 je left-pad: jedenáct řádků, které přidávají mezery před řetězec, staženo 2,5 milionukrát za měsíc. Během několika minut selhávají sestavení Babel, React a Node celosvětově, stovky za minutu. Fork se objeví za deset minut a nic nemění, protože Babel táhne left-pad přes čísla řádků, což přesně upevňuje verzi 0.0.3. V 23:55 npm obnoví smazanou verzi ze zálohy – první „zrušení zrušení publikování“ v historii registru – a o týden později zavede 24hodinové pravidlo pro zrušení publikování. Postmortem, z vlastního účtu npm a e-mailové korespondence, kterou Kik zveřejnil: registr, který umožnil každému autorovi smazat jakoukoli verzi bez kontroly závislostí, přechodový strom vyřešený živě při každé instalaci, bez lockfile ve výchozím nastavení. Git blame: 60 npm / 25 Kik / 15 závislostní návyk. Verdikt k opravě: SHIP IT.

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

## Co toto video pokrývá

- 11. března: Patentový zástupce Kiku žádá Azera Koçulu o přejmenování \`kik\`; o hodinu později: právníci „bouchají na vaše dveře a ruší vaše účty“; Azer: 30 000 $; Kik e-mailuje podporu npm
- 18.–20. března: CEO npm převede jméno na Kik („by se oprávněně očekávalo, že to bude souviset s kik.com“); Azer žádá o smazání všech svých modulů
- 22. března, 21:30–23:55 UTC: 273 balíčků zrušeno; left-pad@0.0.3 404s v projektech Babel, Atom, Node; fork 1.0.0 v 21:42; CTO npm tweetuje „un-un-publishing“ v 23:03; 0.0.3 zpět ze zálohy v 23:55 – 2,5 hodiny
- 23. a 29. března: Postmortem npm („pokazili jsme to“) a nová politika: zrušit publikování pouze do 24 hodin, bezpečnostní zástupné symboly pro odstraněná jména (72 h od roku 2020)

## Přeložený přepis

Přeloženo z původního anglického vyprávění. Dostupné audio a titulky jsou řízeny YouTube.

0:00 Jeden vývojář smaže jedenáct řádků JavaScriptu a během několika minut Babel, React a Node sestavení selhávají po celém světě, stovky za minutu. Funkce se jmenuje left-pad. Vycpe řetězec mezerami a na konci večera npm udělá jednu věc, o které říká, že nemůže: znovu publikovat smazanou verzi. Jak se to stane, proč je to možné a kdo nese vinu. Toto je The Daily Diff, postmortem. 11. března. Patentový zástupce Kik, aplikace pro zasílání zpráv,

0:26 pošle e-mail Azeru Koçulu: přejmenujte svůj npm balíček, kik je naše značka. Azer řekne ne. O hodinu později: naši právníci pro ochranné známky budou bušit na vaše dveře a rušit vaše účty. Azer jmenuje cenu, třicet tisíc dolarů, a Kik předá vlákno npm podpoře. 18. března. CEO npm rozhodne, že každý, kdo napíše npm install kik, očekává aplikaci pro zasílání

0:48 zpráv, a jméno předá. Azer požádá o smazání všeho, co mu patří. O dva dny později to udělá sám: dvě stě sedmdesát tři balíčků. 22. března, 21:30 UTC. Každé sestavení, které sáhne po left-pad, dostane 404. O deset minut později to cizinec znovu publikuje jako 1.0.0, a nic se nezmění, protože Babel a Atom to načítají přes balíček s názvem line-numbers, který přesně chce 0.0.3.

1:13 V 23:03 CTO npm tweetuje: zrušení zrušení publikování. V 23:55 je 0.0.3 zpět ze zálohy. Dvě a půl hodiny. Proč to může udělat jedna osoba? Tři důvody. Jakoukoli verzi na npm může její autor smazat, okamžitě, bez kontroly, kdo na ní závisí. Za druhé, závislosti jsou tranzitivní: Babel neví, že left-pad existuje, ví o line-numbers a celý strom se řeší živě při každé instalaci.

1:36 Za třetí, v roce 2016 nic tento strom ve výchozím nastavení neuzamyká; lockfily jsou volitelné, takže každý CI běh se znovu ptá internetu, jak vypadá jedenáct řádků kódu. Jeden registr, který nespravuje nikdo, kdo na něm závisí. git blame. npm, šedesát procent: jeho vlastní postmortem říká, že neomezené zrušení publikování způsobilo bolest, a, cituji, pokazili jsme to. Kik, dvacet pět: patentový zástupce, ne právník, slibující právníky u dveří kvůli jménu, které se Kik už rozhodl nepoužívat. Závislostní návyk, patnáct: všichni, kdo npm-instalovali jedenáct řádků místo

2:06 aby je napsali. Včetně Kik, jehož sestavení se také rozbijí. Rozsah dopadu: dvě stě sedmdesát tři stažených balíčků, jeden z nich stažen dva a půl milionukrát za měsíc. Oprava trvá dvě a půl hodiny; funkce má jedenáct řádků. Na Hacker News, příspěvek s dotazem, zda jsme zapomněli programovat, dosáhne sedmnáct set bodů, většinou od lidí, jejichž sestavení jsou stále červená. Verdikt, postmortem: SHIP IT.

2:26 npm obnoví ze zálohy, zveřejní postmortem následující den, a do týdne zavede pravidlo, které stále platí: můžete zrušit publikování po dobu dvacet čtyři hodin, poté mluvíte s člověkem. Pondělí: zapište svůj lockfile, a pokud má funkce jedenáct řádků, je to odstavec, ne závislost. Pošlete mi incident, o kterém stále nesmíte mluvit, do komentářů, nebo na daily diff dot dev. A to je dnešní diff.

2:48 Jsem Niko z Axrisi. Sloučit zodpovědně.

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