# Eleven lines of JavaScript broke the internet. One unpublish.

Published: 2026-09-13

ថ្ងៃទី 22 ខែមីនា ឆ្នាំ 2016 ម៉ោង 21:30 UTC: អ្នកអភិវឌ្ឍន៍ម្នាក់បានឈប់ផ្សព្វផ្សាយកញ្ចប់ npm ទាំង 273 របស់គាត់ បន្ទាប់ពី npm បានប្រគល់ឈ្មោះកញ្ចប់ “kik” ទៅ Kik ដែលជាកម្មវិធីផ្ញើសារ ដែលភ្នាក់ងារប៉ាតង់របស់វាបានសន្យាថា “មេធាវីនឹងគោះទ្វារអ្នក”។ ក្នុងចំណោម 273 នោះគឺ left-pad៖ ដប់មួយបន្ទាត់ដែលដាក់ចន្លោះនៅពីមុខខ្សែអក្សរ ទាញយក 2.5 លានដងក្នុងមួយខែ។ ក្នុងរយៈពេលប៉ុន្មាននាទី ការបង្កើត Babel, React និង Node បរាជ័យនៅទូទាំងពិភពលោក រាប់រយក្នុងមួយនាទី។ សមមួយបានលេចឡើងក្នុងរយៈពេលដប់នាទី ហើយមិនបានផ្លាស់ប្តូរអ្វីទាំងអស់ ពីព្រោះ Babel ទាញ left-pad តាមរយៈលេខបន្ទាត់ ដែលកំណត់ 0.0.3 យ៉ាងជាក់លាក់។ នៅម៉ោង 23:55 npm បានស្ដារកំណែដែលបានលុបចេញពីការបម្រុងទុក — ជា “un-un-publish” ដំបូងគេក្នុងប្រវត្តិសាស្ត្របញ្ជីឈ្មោះ — ហើយមួយសប្តាហ៍ក្រោយមកបានបញ្ចេញច្បាប់ឈប់ផ្សព្វផ្សាយ 24 ម៉ោង។ ក្រោយឧបទ្ទវហេតុ ពីគណនីផ្ទាល់របស់ npm និងខ្សែសំបុត្រអេឡិចត្រូនិចដែល Kik បានបោះពុម្ពផ្សាយ៖ បញ្ជីឈ្មោះដែលអនុញ្ញាតឱ្យអ្នកនិពន្ធណាមួយលុបកំណែណាមួយដោយគ្មានការត្រួតពិនិត្យអ្នកពឹងផ្អែក ដើមឈើឆ្លងដែនត្រូវបានដោះស្រាយផ្ទាល់រាល់ការដំឡើង គ្មាន lockfile តាមលំនាំដើម។ Git blame៖ 60 npm / 25 Kik / 15 ទម្លាប់ពឹងផ្អែក។ សាលក្រមលើការជួសជុល៖ SHIP IT.

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

## អ្វីដែលវីដេអូនេះគ្របដណ្ដប់

- ថ្ងៃទី 11 ខែមីនា៖ ភ្នាក់ងារប៉ាតង់របស់ Kik សុំឱ្យ Azer Koçulu ប្តូរឈ្មោះ \`kik\` ។ មួយម៉ោងក្រោយមក៖ មេធាវី “គោះទ្វារអ្នក និងបិទគណនីរបស់អ្នក” ។ Azer៖ 30,000 ដុល្លារ។ Kik ផ្ញើសារអេឡិចត្រូនិចទៅកាន់ការគាំទ្ររបស់ npm ។
- ថ្ងៃទី 18-20 ខែមីនា៖ នាយកប្រតិបត្តិរបស់ npm ផ្ទេរឈ្មោះទៅ Kik (“នឹងរំពឹងយ៉ាងសមហេតុផលថាវាទាក់ទងនឹង kik.com”) ។ Azer សុំឱ្យលុបម៉ូឌុលទាំងអស់របស់គាត់។
- ថ្ងៃទី 22 ខែមីនា ម៉ោង 21:30-23:55 UTC៖ កញ្ចប់ 273 មិនត្រូវបានបោះពុម្ពផ្សាយទេ។ left-pad@0.0.3 404s នៅក្នុងគម្រោង Babel, Atom, Node ។ fork 1.0.0 នៅម៉ោង 21:42 ។ CTO របស់ npm tweet “un-un-publishing” នៅម៉ោង 23:03 ។ 0.0.3 ត្រឡប់មកពីការបម្រុងទុកវិញនៅម៉ោង 23:55 — 2.5 ម៉ោង។
- ថ្ងៃទី 23 ខែមីនា និង 29 ខែមីនា៖ ក្រោយឧបទ្ទវហេតុរបស់ npm (“យើងបានធ្វើខុស”) និងគោលការណ៍ថ្មី៖ ឈប់ផ្សព្វផ្សាយបានតែក្នុងរយៈពេល 24 ម៉ោងប៉ុណ្ណោះ កន្លែងដាក់សុវត្ថិភាពសម្រាប់ឈ្មោះដែលបានលុប (72 ម៉ោងចាប់តាំងពីឆ្នាំ 2020) ។

## កំណត់ត្រាដែលបានបកប្រែ

បកប្រែចេញពីការនិទានដើមជាភាសាអង់គ្លេស។ សំឡេង និងចំណងជើងរងដែលមានគឺស្ថិតនៅក្រោមការគ្រប់គ្រងរបស់ YouTube។

0:00 អ្នកអភិវឌ្ឍន៍ម្នាក់បានលុប JavaScript ដប់មួយបន្ទាត់ ហើយក្នុងរយៈពេលប៉ុន្មាននាទី Babel, ការបង្កើត React និង Node កំពុងបរាជ័យនៅទូទាំងពិភពលោក រាប់រយក្នុងមួយនាទី។ អនុគមន៍គឺ left-pad ។ វាដាក់ចន្លោះក្នុងខ្សែអក្សរ ហើយនៅចុងល្ងាច npm ធ្វើការងារ មួយដែលវានិយាយថាវាមិនអាចធ្វើបាន៖ បោះពុម្ពឡើងវិញនូវកំណែដែលបានលុប។ តើវាកើតឡើងដោយរបៀបណា ហេតុអ្វីបានជាវាអាចទៅរួច និងអ្នកណាជាអ្នកត្រូវស្តីបន្ទោស។ នេះគឺជា The Daily Diff, ក្រោយឧបទ្ទវហេតុ។ ថ្ងៃទី 11 ខែមីនា។ ភ្នាក់ងារប៉ាតង់នៅ Kik ដែលជាកម្មវិធីផ្ញើសារ

0:26 ផ្ញើសារអេឡិចត្រូនិចទៅកាន់ Azer Koçulu៖ ប្តូរឈ្មោះកញ្ចប់ npm របស់អ្នក kik គឺជាម៉ាកយីហោរបស់យើង។ Azer និយាយថាអត់ទេ។ មួយម៉ោងក្រោយមក៖ មេធាវីពាណិជ្ជសញ្ញារបស់យើងនឹងគោះទ្វារអ្នក និង បិទគណនីរបស់អ្នក។ Azer ដាក់តម្លៃ សាមសិបពាន់ដុល្លារ ហើយ Kik បញ្ជូនខ្សែសំបុត្រទៅ npm ការគាំទ្រ។ ថ្ងៃទី 18 ខែមីនា។ នាយកប្រតិបត្តិរបស់ npm កំណត់ថាអ្នកណាម្នាក់ដែលវាយបញ្ចូល npm install kik រំពឹងថានឹងមានការផ្ញើសារ

0:48 កម្មវិធី ហើយប្រគល់ឈ្មោះនេះទៅឱ្យ។ Azer សុំឱ្យលុបអ្វីៗទាំងអស់របស់គាត់។ ពីរថ្ងៃក្រោយមក គាត់ធ្វើវាដោយខ្លួនឯង៖ ពីររយចិតសិបបីកញ្ចប់។ ថ្ងៃទី 22 ខែមីនា ម៉ោង 21:30 UTC ។ រាល់ការបង្កើតដែលទាញយក left-pad ទទួលបាន 404 ។ ដប់នាទីក្រោយមក ជនចម្លែកម្នាក់បោះពុម្ពវាឡើងវិញជា 1.0.0, ហើយគ្មានអ្វីផ្លាស់ប្តូរទេ ពីព្រោះ Babel និង Atom ផ្ទុកវាតាមរយៈកញ្ចប់មួយដែលមានឈ្មោះថា line-numbers ដែលចង់បាន 0.0.3 យ៉ាងពិតប្រាកដ។

1:13 នៅម៉ោង 23:03 CTO របស់ npm tweet៖ un-un-publishing ។ នៅម៉ោង 23:55, 0.0.3 ត្រឡប់មកពីការបម្រុងទុកវិញ។ ពីរម៉ោងកន្លះ។ ហេតុអ្វីបានជាមនុស្សម្នាក់អាចធ្វើបែបនេះបាន? ហេតុផលបីយ៉ាង។ រាល់កំណែនៅលើ npm អាចត្រូវបានលុបដោយអ្នកនិពន្ធរបស់វា, ភ្លាមៗ ដោយគ្មានការត្រួតពិនិត្យថាអ្នកណាពឹងផ្អែកលើវា។ ទីពីរ ការពឹងផ្អែកគឺឆ្លងដែន៖ Babel មិនដឹងថា left-pad មានទេ វាស្គាល់ line-numbers ហើយដើមឈើទាំងមូលត្រូវបានដោះស្រាយផ្ទាល់រាល់ការដំឡើង។

1:36 ទីបី ក្នុងឆ្នាំ 2016 គ្មានអ្វីកំណត់ដើមឈើនោះតាមលំនាំដើមទេ lockfile គឺជាការជ្រើសរើស ដូច្នេះរាល់ការដំណើរការ CI សួរអ៊ីនធឺណិតម្តងទៀតថា កូដដប់មួយបន្ទាត់មើលទៅដូចអ្វី។ បញ្ជីឈ្មោះមួយ ដែលដំណើរការដោយគ្មាននរណាម្នាក់ដែលពឹងផ្អែកលើវា។ git blame. npm, ហុកសិបភាគរយ៖ ក្រោយឧបទ្ទវហេតុផ្ទាល់របស់វាបាននិយាយថា ការមិនបោះពុម្ពផ្សាយដោយគ្មានការរឹតបន្តឹង បណ្តាលឱ្យមានការឈឺចាប់ ហើយបានដកស្រង់សម្តីថា យើងបានធ្វើខុស។ Kik, ម្ភៃប្រាំ៖ ភ្នាក់ងារប៉ាតង់ មិនមែនមេធាវីទេ សន្យាមេធាវីនៅមាត់ទ្វារលើឈ្មោះ Kik ដែលបានសម្រេចចិត្តមិនប្រើរួចហើយ។ ទម្លាប់ពឹងផ្អែក, ដប់ប្រាំ៖ អ្នកណាក៏ដោយដែលបានដំឡើង npm ដប់មួយបន្ទាត់ជំនួស

2:06 នៃការវាយបញ្ចូលវា។ រួមទាំង Kik ដែលការបង្កើតរបស់វាក៏បរាជ័យដែរ។ កាំផ្ទុះ៖ កញ្ចប់ពីររយចិតសិបបីត្រូវបានទាញយក មួយក្នុងចំណោមនោះត្រូវបានទាញយកពីរលានកន្លះដងក្នុងមួយខែ។ ការជួសជុលចំណាយពេលពីរម៉ោងកន្លះ អនុគមន៍ចំណាយពេលដប់មួយបន្ទាត់។ នៅលើ Hacker News ការបង្ហោះដែលសួរថាតើយើងបានភ្លេចពីរបៀបសរសេរកម្មវិធីឬអត់? ទទួលបានមួយពាន់ប្រាំពីររយពិន្ទុ ភាគច្រើនមកពីមនុស្សដែលការបង្កើតរបស់ពួកគេនៅតែក្រហម។ សាលក្រម ក្រោយឧបទ្ទវហេតុ៖ SHIP IT.

2:26 npm ស្ដារពីការបម្រុងទុក បង្ហោះក្រោយឧបទ្ទវហេតុនៅថ្ងៃបន្ទាប់ ហើយក្នុងរយៈពេលមួយសប្តាហ៍បានចេញច្បាប់ដែលនៅតែមានសុពលភាព៖ អ្នកអាចឈប់ផ្សព្វផ្សាយបាន ម្ភៃបួនម៉ោង បន្ទាប់ពីនោះអ្នកនិយាយជាមួយមនុស្ស។ ថ្ងៃច័ន្ទ៖ បញ្ជាក់ lockfile របស់អ្នក ហើយប្រសិនបើអនុគមន៍មានដប់មួយបន្ទាត់ វាគឺជាកថាខណ្ឌ មិនមែនជាការពឹងផ្អែកទេ។ ផ្ញើមកខ្ញុំនូវឧបទ្ទវហេតុដែលអ្នកនៅតែមិនត្រូវបានអនុញ្ញាតឱ្យនិយាយអំពី នៅក្នុងមតិយោបល់ ឬនៅ the daily diff dot dev ។ ហើយនោះជាភាពខុសគ្នាសម្រាប់ថ្ងៃនេះ។

2:48 ខ្ញុំ Niko មកពី Axrisi ។ បញ្ចូលដោយការទទួលខុសត្រូវ។

## ប្រភព

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