+− THE DAILY DIFFdev & AI news
SHIP IT

Он бир сап JavaScript интернетти талкалады. Бир "unpublish".

2016-жылдын 22-марты, 21:30 UTC: иштеп чыгуучу npm пакет аталышын "kik" деп Kik билдирүү колдонмосуна бергенден кийин, өзүнүн бардык 273 npm пакеттерин жарыялоодон алып салды.

2016-жылдын 22-марты, 21:30 UTC: иштеп чыгуучу npm пакет аталышын "kik" деп Kik билдирүү колдонмосуна бергенден кийин, өзүнүн бардык 273 npm пакеттерин жарыялоодон алып салды. Kik компаниясынын патенттик агенти "юристтер эшигиңизди тыкылдатып келишет" деп убада кылган болчу. 273 пакеттин бири – left-pad: саптын алдына боштуктарды кошуучу он бир сап код, айына 2,5 миллион жолу жүктөлөт. Бир нече мүнөттүн ичинде Babel, React жана Node курулмалары дүйнө жүзү боюнча иштебей калды, мүнөтүнө жүздөгөн жолу. Он мүнөттүн ичинде форк пайда болду, бирок эч нерсени өзгөрткөн жок, анткени Babel left-pad'ды сап номерлери аркылуу тартып, 0.0.3 версиясын так бекиткен. Саат 23:55те npm өчүрүлгөн версияны камдык көчүрмөдөн калыбына келтирди – бул реестр тарыхындагы биринчи "кайра жарыялоону жокко чыгаруу" ("un-un-publish") – жана бир жумадан кийин 24 сааттык жарыялоону жокко чыгаруу эрежесин киргизди. Өлүмдөн кийинки талдоо (Postmortem), npm'дин өзүнүн эсебинен жана Kik жарыялаган электрондук каттар тизмегинен: эч кандай көз карандылыкты текшербестен каалаган авторго каалаган версияны өчүрүүгө уруксат берген реестр, ар бир орнотууда жандуу чечилген өтмө дарак, демейки боюнча кулпу файлы жок. Git айыбы: 60 npm / 25 Kik / 15 көз карандылык адат. Оңдоо боюнча өкүм: SHIP IT.

Жазма басылышын окуу (Англисче) ↗

Бул видео эмнелерди камтыйт

  • 11-март: Kik'тин патенттик агенти Азер Кочулудан `kik` аталышын өзгөртүүнү суранат; бир сааттан кийин: юристтер "эшигиңизди тыкылдатып, аккаунттарыңызды жаап салышат"; Азер: 30 000 доллар; Kik npm колдоо кызматына кат жөнөтөт
  • 18–20-март: npm'дин CEOсу аталышты Kik'ке өткөрүп берет ("kik.com сайтына байланыштуу болот деп акылга сыярлык күтүүгө болот"); Азер бардык модулдарын өчүрүүнү суранат
  • 22-март, 21:30–23:55 UTC: 273 пакет жарыялоодон алынды; left-pad@0.0.3 Babel, Atom, Node долбоорлорунда 404 катасын берет; 21:42де fork 1.0.0 пайда болот; npm'дин CTOсу 23:03тө "un-un-publishing" деп твит жазат; 0.0.3 камдык көчүрмөдөн 23:55те кайра келет — 2,5 саат
  • 23-март жана 29-март: npm'дин өлүмдөн кийинки талдоосу ("биз ката кетирдик") жана жаңы саясат: жарыялоону 24 сааттын ичинде гана жокко чыгаруу, алынып салынган аталыштар үчүн коопсуздук орун ээлөөчүлөр (2020-жылдан бери 72 саат)

Котормо стенограмма

Англис тилиндеги баштапкы баяндамадан которулган. Жеткиликтүү аудио жана коштомо жазуулар YouTube тарабынан көзөмөлдөнөт.

0:00 Бир иштеп чыгуучу он бир сап JavaScript кодун өчүрөт, жана бир нече мүнөттүн ичинде Babel, React жана Node курулмалары дүйнө жүзү боюнча иштебей калат, мүнөтүнө жүздөгөн. Функция left-pad деп аталат. Ал сапты боштуктар менен толтурат, жана кечтин аягында npm аткара албайт деп айткан бир ишти аткарат: өчүрүлгөн версияны кайра жарыялайт. Бул кантип болот, эмне үчүн мүмкүн жана күнөө кимде. Бул The Daily Diff, өлүмдөн кийинки талдоо. 11-март. Kik билдирүү колдонмосунун патенттик агенти,

0:26 Азер Кочулуга кат жөнөтөт: npm пакетиңиздин атын өзгөртүңүз, kik биздин бренд. Азер "жок" дейт. Бир сааттан кийин: биздин соода белгиси боюнча юристтер эшигиңизди тыкылдатып, аккаунттарыңызды жаап салышат. Азер баасын айтат, отуз миң доллар, жана Kik каттар тизмегин npm колдоо кызматына жөнөтөт. 18-март. npm'дин CEOсу npm install kik деп терген ар бир адам билдирүү колдонмосун күтөт деп чечет,

0:48 жана аталышты өткөрүп берет. Азер өзүнүн бардык нерсесин өчүрүүнү суранат. Эки күндөн кийин ал өзү аткарат: эки жүз жетимиш үч пакет. 22-март, 21:30 UTC. Left-pad'ды талап кылган ар бир курулма 404 катасын алат. Он мүнөттөн кийин бир бейтааныш адам аны 1.0.0 катары кайра жарыялайт, жана эч нерсе өзгөрбөйт, анткени Babel жана Atom аны line-numbers деп аталган пакет аркылуу жүктөйт, ал так 0.0.3 версиясын каалайт.

1:13 23:03тө npm'дин CTOсу твит жазат: un-un-publishing. 23:55те, 0.0.3 камдык көчүрмөдөн кайра келет. Эки жарым саат. Бир адам муну эмне үчүн жасай алат? Үч себеп. npm'деги каалаган версияны анын автору өчүрө алат, дароо, ага ким көз каранды экенин текшербестен. Экинчиден, көз карандылыктар өтмө: Babel left-pad бар экенин билбейт, ал line-numbers'ты билет, жана бүт дарак ар бир орнотууда жандуу чечилет.

1:36 Үчүнчүдөн, 2016-жылы эч нерсе ал даракты демейки боюнча бекиткен эмес; кулпу файлдары кошумча болгон, ошондуктан ар бир CI иштетүү он бир сап код кандай экенин интернеттен кайра сурайт. Бир реестр, ага көз каранды эч ким тарабынан башкарылбайт. git blame. npm, алтымыш пайыз: өзүнүн өлүмдөн кийинки талдоосунда чектелбеген жарыялоону жокко чыгаруу ооруну жаратты деп айтылат, жана, цитата, биз ката кетирдик. Kik, жыйырма беш пайыз: юрист эмес, патенттик агент, Kik колдонууну чечкен эмес аталыш үчүн юристтер эшикте деп убада берген. Көз карандылык адаты, он беш пайыз: он бир сапты тербестен npm аркылуу орноткон ар бир адам,

2:06 аларды тербестен. Анын ичинде Kik да, анын курулмалары да иштебей калган. Жардыруу радиусу: эки жүз жетимиш үч пакет алынып салынды, алардын бири айына эки жарым миллион жолу жүктөлөт. Оңдоо эки жарым саатка созулат; функция он бир саптан турат. Hacker News'те программалоону унутуп калдыкпы деп сураган пост он жети жүз упайга жетти, негизинен курулмалары дагы эле кызыл болгон адамдардан. Өкүм, өлүмдөн кийинки талдоо: SHIP IT.

2:26 npm камдык көчүрмөдөн калыбына келтирет, кийинки күнү өлүмдөн кийинки талдоону жарыялайт, жана бир жуманын ичинде дагы деле күчүндө турган эрежени киргизет: сиз жыйырма төрт саат бою жарыялоону жокко чыгара аласыз, андан кийин адам менен сүйлөшөсүз. Дүйшөмбү: кулпу файлыңызды аткарыңыз, жана эгер функция он бир саптан турса, бул абзац, көз карандылык эмес. Мага дагы деле айтууга уруксат берилбеген инцидентти жөнөтүңүз, комментарийлерде, же daily diff dot dev дарегинде. Бүгүнкү айырма ушул.

2:48 Мен Аксыриден Нико. Жоопкерчиликтүү түрдө бириктириңиз.

Булактар

  1. npm, Inc., "kik, left-pad, and npm" (Mar 23, 2016)blog.npmjs.org
  2. npm, Inc., "changes to npm's unpublish policy" (Mar 29, 2016)blog.npmjs.org
  3. Azer Koçulu, "I've Just Liberated My Modules" (Mar 22, 2016; archive copy)web.archive.org
  4. Mike Roberts (Kik), "A discussion about the breaking of the Internet" — the full e-mail thread (Mar 23, 2016; archive copy)web.archive.org
  5. Laurie Voss (npm CTO) on X, Mar 22, 2016, 23:03 UTCx.com
  6. left-pad 0.0.3 on the npm registry (the eleven lines)registry.npmjs.org
  7. Hacker News, Mar 22, 2016 — "I've Just Liberated My Modules" (1,573 points)news.ycombinator.com
  8. Hacker News, Mar 23, 2016 — "NPM and Left-Pad: Have We Forgotten How to Program?" (1,725 points)news.ycombinator.com
  9. Hacker News, Mar 29, 2016 — "Changes to Npm's unpublish policy" (320 points)news.ycombinator.com
  10. The Register, Mar 23, 2016 — "How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript"www.theregister.com

Окшош видеолор

postmortem · ky · 2026-ж., 15-сен.

Rust крейти компиляция учурунда зыяндуу программаны иштетти. 86 мүнөт.

260 миллион жолу жүктөлгөн төрт макростуу Rust крейти бир көз карандылыкты кошот жана `cargo build` сиздин машинаңызда чоочун адамдын бинардык файлын иштетет. 2026-жылдын 20-августу: arrayref 0.3.10 c

3:09 ↗
postmortem · ky · 2026-ж., 25-сен.

Бир миллисекунддук мүчүлүштүк Улуу Британиянын аба кыймылын токтотту. Алты саатка.

Шейшемби күнү, 8-сентябрда, саат 10:00дө NATSтын Улуттук Аба Мейкиндиги Системасынын (NAS) ичиндеги бир кадимки squawk-кодун суроосу, ал баалуулукту жарым-жартылай жаңыртып жаткан кезде, жогорку артык

3:06 ↗
postmortem · ky · 2026-ж., 22-сен.

Кайра жүктөлгөн Telstraны 2006-жылга кайтарды. Тогуз миллион телефон.

Мельбурндагы инженер эртең мененки саат 2:50дө убакыт шассисин кайра иштетет, ал эми эртең менен Австралиянын эң чоң мобилдик тармагы 2006-жылдын ноябры экенине макул болот. 2026-жылдын 8-июлу: Telstr

3:15 ↗