# On bir sətir JavaScript interneti "sındırdı". Bir dərcdən çıxarma.

Published: 2026-09-13

22 mart 2016-cı il, saat 21:30 UTC: bir tərtibatçı, npm-in "kik" paket adını Kik mesajlaşma proqramına verdikdən sonra 273 npm paketinin hamısını dərcdən çıxarır. Kik-in patent agenti "qapınızı döyən vəkillər" vəd etmişdi. Həmin 273 paketdən biri left-pad idi: sətirin əvvəlinə boşluq qoyan on bir sətirlik kod, ayda 2,5 milyon dəfə yüklənirdi. Dəqiqələr ərzində Babel, React və Node quruluşları dünya miqyasında, dəqiqədə yüzlərlə dəfə uğursuzluğa düçar oldu. On dəqiqə ərzində bir fork peyda oldu və heç nəyi dəyişmədi, çünki Babel left-pad-i sətir nömrələri vasitəsilə çəkirdi, bu da 0.0.3-ü dəqiq şəkildə təyin edirdi. Saat 23:55-də npm silinmiş versiyanı ehtiyat nüsxədən bərpa etdi – registrin tarixində ilk "dərcdən çıxarmanın geri qaytarılması" – və bir həftə sonra 24 saatlıq dərcdən çıxarma qaydasını tətbiq etdi. Postmortem, npm-in öz hesabından və Kik-in dərc etdiyi e-poçt yazışmalarından: heç bir asılılığı olmayan hər hansı bir müəllifə istənilən versiyanı silməyə imkan verən registr, hər quraşdırmada canlı şəkildə həll olunan keçid ağacı, standart olaraq kilid faylı yox idi. Git ittihamı: 60 npm / 25 Kik / 15 asılılıq vərdişi. Düzəlişlə bağlı hökm: SHIP IT.

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

## Bu videoda nələr əhatə olunur

- Mart 11: Kik-in patent agenti Azər Koçuludan \`kik\` adını dəyişdirməsini xahiş edir; bir saat sonra: vəkillər "qapınızı döyəcək və hesablarınızı bağlayacaqlar"; Azər: $30,000; Kik npm dəstək xidmətinə e-poçt göndərir
- Mart 18–20: npm-in CEO-su adı Kik-ə ötürür ("kik.com ilə əlaqəli olmasını ağlabatan şəkildə gözləmək olar"); Azər bütün modullarının silinməsini xahiş edir
- Mart 22, 21:30–23:55 UTC: 273 paket dərcdən çıxarıldı; left-pad@0.0.3 Babel, Atom, Node layihələrində 404 xətası verir; fork 1.0.0 saat 21:42-də; npm-in CTO-su saat 23:03-də "dərcdən çıxarmanın geri qaytarılması" tvitini yazır; 0.0.3 saat 23:55-də ehtiyat nüsxədən geri qaytarılır — 2.5 saat
- Mart 23 və Mart 29: npm-in postmortem-i ("biz səhvə yol verdik") və yeni siyasət: yalnız 24 saat ərzində dərcdən çıxarma, silinmiş adlar üçün təhlükəsizlik yer tutucuları (2020-ci ildən bəri 72 saat)

## Tərcümə olunmuş transkript

Orijinal ingilis dilindəki nəqldən tərcümə edilmişdir. Mövcud audio və subtitrlər YouTube tərəfindən idarə olunur.

0:00 Bir tərtibatçı on bir sətir JavaScript-i silir və dəqiqələr ərzində Babel, React və Node quruluşları dünya miqyasında, dəqiqədə yüzlərlə dəfə uğursuzluğa düçar olur. Funksiya left-pad-dir. O, sətiri boşluqlarla doldurur və axşamın sonunda npm bacara bilməyəcəyini dediyi bir şeyi edir: silinmiş versiyanı yenidən dərc edir. Bu necə baş verir, niyə mümkündür və kim günahkardır. Bu, The Daily Diff, postmortem-dir. Martın 11-i. Kik mesajlaşma proqramının patent agenti,

0:26 Azər Koçuluya e-poçt göndərir: npm paketinizin adını dəyişdirin, kik bizim brendimizdir. Azər yox deyir. Bir saat sonra: ticarət nişanı vəkillərimiz qapınızı döyəcək və hesablarınızı bağlayacaqlar. Azər bir qiymət, otuz min dollar təyin edir, və Kik yazışmanı npm dəstək xidmətinə yönləndirir. Martın 18-i. npm-in CEO-su qərar verir ki, npm install kik yazan hər kəs mesajlaşma

0:48 proqramını gözləyir və adı ötürür. Azər özünə aid olan hər şeyin silinməsini xahiş edir. İki gün sonra o, bunu özü edir: iki yüz yetmiş üç paket. Martın 22-si, saat 21:30 UTC. left-pad-ə ehtiyacı olan hər bir quruluş 404 xətası alır. On dəqiqə sonra bir yad adam onu 1.0.0 olaraq yenidən dərc edir, və heç nə dəyişmir, çünki Babel və Atom onu line-numbers adlı bir paket vasitəsilə yükləyir, hansı ki, dəqiq olaraq 0.0.3-ü istəyir.

1:13 Saat 23:03-də npm-in CTO-su tvit edir: dərcdən çıxarmanın geri qaytarılması. Saat 23:55-də 0.0.3 ehtiyat nüsxədən geri qaytarılır. İki yarım saat. Niyə bir nəfər bunu edə bilər? Üç səbəb. npm-dəki hər hansı bir versiya müəllifi tərəfindən dərhal, heç bir asılılıq yoxlaması olmadan silinə bilər. dərhal, ondan kimin asılı olduğunu yoxlamadan. İkincisi, asılılıqlar keçicidir: Babel left-pad-in mövcud olduğunu bilmir, o, line-numbers-i bilir və bütün ağac hər quraşdırmada canlı şəkildə həll olunur.

1:36 Üçüncüsü, 2016-cı ildə heç nə o ağacı standart olaraq təyin etmirdi; kilid faylları seçməli idi, beləliklə, hər bir CI işi internetdən on bir sətir kodun nəyə bənzədiyini yenidən soruşur. Bir registr, ondan asılı olan heç kəs tərəfindən idarə olunmur. git ittihamı. npm, altmış faiz: öz postmortem-i deyir ki, məhdudiyyətsiz dərcdən çıxarma ağrıya səbəb oldu və, sitat, biz səhvə yol verdik. Kik, iyirmi beş: bir patent agenti, vəkil deyil, Kik-in artıq istifadə etməməyə qərar verdiyi bir ad üzərində qapıda vəkilləri vəd edir. Asılılıq vərdişi, on beş: on bir sətir kodu yazmaq əvəzinə hər kəs npm-install etdi.

2:06 yazmaq əvəzinə. O cümlədən Kik, quruluşları da uğursuzluğa düçar oldu. Partlama radiusu: iki yüz yetmiş üç paket çəkildi, onlardan biri ayda iki yarım milyon dəfə yüklənirdi. Düzəliş iki yarım saat çəkir; funksiya on bir sətirdir. Hacker News-də proqramlaşdırmağı unutmuşuqmu sualını verən bir post min yeddi yüz bal toplayır, əsasən quruluşları hələ də qırmızı olan insanlardan. Hökm, postmortem: SHIP IT.

2:26 npm ehtiyat nüsxədən bərpa edir, növbəti gün postmortem-i dərc edir, və bir həftə ərzində hələ də qüvvədə olan qaydanı tətbiq edir: iyirmi dörd saat ərzində dərcdən çıxara bilərsiniz, iyirmi dörd saat, ondan sonra bir insanla danışırsınız. Bazar ertəsi: kilid faylınızı təsdiqləyin, və əgər bir funksiya on bir sətirdirsə, o, bir paraqrafdır, asılılıq deyil. Mənə hələ də danışmağa icazə verilməyən hadisəni göndərin, şərhlərdə, və ya daily diff dot dev ünvanına. Və bugünkü fərq budur.

2:48 Mən Axrisi-dən Niko. Məsuliyyətlə birləşdirin.

## Mənbələr

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