+− THE DAILY DIFFdev & AI news
SHIP IT

جاوا اسکرپٹ کی گیارہ لائنوں نے انٹرنیٹ کو توڑ دیا۔ ایک غیر اشاعت۔

22 مارچ 2016، 21:30 UTC: ایک ڈویلپر اپنے تمام 273 npm پیکجز کو غیر شائع کر دیتا ہے جب npm پیکیج کا نام "kik" میسجنگ ایپ Kik کو دے دیتا ہے، جس کے پیٹنٹ ایجنٹ نے "آپ کے دروازے پر وکلاء" کا وعدہ کیا تھا۔

22 مارچ 2016، 21:30 UTC: ایک ڈویلپر اپنے تمام 273 npm پیکجز کو غیر شائع کر دیتا ہے جب npm پیکیج کا نام "kik" میسجنگ ایپ Kik کو دے دیتا ہے، جس کے پیٹنٹ ایجنٹ نے "آپ کے دروازے پر وکلاء" کا وعدہ کیا تھا۔ 273 میں سے ایک left-pad ہے: گیارہ لائنیں جو ایک سٹرنگ کے سامنے خالی جگہیں ڈالتی ہیں، ہر ماہ 2.5 ملین بار ڈاؤن لوڈ کی جاتی ہیں۔ چند منٹوں میں Babel، React اور Node کی تعمیرات دنیا بھر میں ناکام ہو جاتی ہیں، سینکڑوں فی منٹ۔ دس منٹ میں ایک فورک ظاہر ہوتا ہے اور کچھ نہیں بدلتا، کیونکہ Babel left-pad کو لائن نمبروں کے ذریعے کھینچتا ہے، جو 0.0.3 کو بالکل پن کرتا ہے۔ 23:55 پر npm بیک اپ سے حذف شدہ ورژن کو بحال کرتا ہے — جو رجسٹری کی تاریخ میں پہلی "غیر-غیر-اشاعت" ہے — اور ایک ہفتے بعد 24 گھنٹے کی غیر اشاعت کا اصول جاری کرتا ہے۔ پوسٹ مارٹم، npm کے اپنے اکاؤنٹ اور Kik کے شائع کردہ ای میل تھریڈ سے: وہ رجسٹری جس نے کسی بھی مصنف کو کسی بھی ورژن کو بغیر کسی انحصار کی جانچ کے حذف کرنے کی اجازت دی، ہر انسٹال پر براہ راست حل ہونے والا منتقلی کا درخت، ڈیفالٹ کے ذریعے کوئی لاک فائل نہیں۔ Git الزام: 60 npm / 25 Kik / 15 انحصار کی عادت۔ درست کرنے پر فیصلہ: SHIP IT۔

تحریری ایڈیشن پڑھیں (انگریزی) ↗

اس ویڈیو میں کیا شامل ہے

  • 11 مارچ: Kik کا پیٹنٹ ایجنٹ Azer Koçulu سے `kik` کا نام تبدیل کرنے کو کہتا ہے؛ ایک گھنٹے بعد: وکیل "آپ کے دروازے پر دستک دے رہے ہیں اور آپ کے اکاؤنٹس کو بند کر رہے ہیں"؛ Azer: $30,000؛ Kik npm سپورٹ کو ای میل کرتا ہے۔
  • 18-20 مارچ: npm کا CEO نام Kik کو منتقل کرتا ہے ("مناسب طور پر توقع ہوگی کہ یہ kik.com سے متعلق ہوگا")؛ Azer اپنے تمام ماڈیولز کو حذف کرنے کا کہتا ہے۔
  • 22 مارچ، 21:30-23:55 UTC: 273 پیکجز غیر شائع کیے گئے؛ left-pad@0.0.3 Babel، Atom، Node پروجیکٹس میں 404s؛ 21:42 پر فورک 1.0.0؛ npm کا CTO 23:03 پر "غیر-غیر-اشاعت" ٹویٹ کرتا ہے؛ 23:55 پر بیک اپ سے 0.0.3 واپس — 2.5 گھنٹے۔
  • 23 مارچ اور 29 مارچ: npm کا پوسٹ مارٹم ("ہم نے غلطی کی") اور نئی پالیسی: صرف 24 گھنٹوں کے اندر غیر شائع کریں، ہٹائے گئے ناموں کے لیے سیکیورٹی پلیس ہولڈرز (2020 سے 72 گھنٹے)۔

ترجمہ شدہ ٹرانسکرپٹ

اصل انگریزی بیان سے ترجمہ کیا گیا۔ دستیاب آڈیو اور کیپشنز یوٹیوب کے زیر انتظام ہیں۔

0:00 ایک ڈویلپر جاوا اسکرپٹ کی گیارہ لائنیں حذف کرتا ہے، اور چند منٹوں میں Babel، React اور Node کی تعمیرات دنیا بھر میں ناکام ہو رہی ہیں، سینکڑوں فی منٹ۔ فنکشن left-pad ہے۔ یہ ایک سٹرنگ کو خالی جگہوں سے بھرتا ہے، اور شام کے آخر تک npm وہ ایک کام کرتا ہے جو یہ کہتا ہے کہ وہ نہیں کر سکتا: حذف شدہ ورژن کو دوبارہ شائع کرنا۔ یہ کیسے ہوتا ہے، کیوں یہ ممکن ہے، اور کس کو الزام دیا جاتا ہے۔ یہ The Daily Diff ہے، پوسٹ مارٹم۔ 11 مارچ۔ Kik، میسجنگ ایپ کا ایک پیٹنٹ ایجنٹ،

0:26 Azer Koçulu کو ای میل کرتا ہے: اپنے npm پیکج کا نام تبدیل کریں، kik ہمارا برانڈ ہے۔ Azer نہیں کہتا ہے۔ ایک گھنٹے بعد: ہمارے ٹریڈ مارک کے وکیل آپ کے دروازے پر دستک دینے والے ہیں اور آپ کے اکاؤنٹس کو بند کر رہے ہیں۔ Azer تیس ہزار ڈالر کی قیمت بتاتا ہے، اور Kik تھریڈ کو npm کو بھیج دیتا ہے سپورٹ۔ 18 مارچ۔ npm کا CEO فیصلہ کرتا ہے کہ کوئی بھی جو 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 پر 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-install کیں،

2:06 بشمول Kik، جس کی تعمیرات بھی ٹوٹ جاتی ہیں۔ دھماکہ خیز شعاع: دو سو تہتر پیکجز کھینچے گئے، ان میں سے ایک ہر ماہ ڈھائی ملین بار ڈاؤن لوڈ کیا جاتا ہے۔ درست کرنے میں ڈھائی گھنٹے لگتے ہیں؛ فنکشن میں گیارہ لائنیں لگتی ہیں۔ ہیکر نیوز پر، ایک پوسٹ پوچھتی ہے کہ کیا ہم پروگرام کرنا بھول گئے ہیں سترہ سو پوائنٹس حاصل کرتی ہے، زیادہ تر ان لوگوں کی طرف سے جن کی تعمیرات ابھی بھی سرخ ہیں۔ فیصلہ، پوسٹ مارٹم: SHIP IT۔ npm بیک اپ سے بحال کرتا ہے، اگلے دن پوسٹ مارٹم پوسٹ کرتا ہے،

2:26 اور ایک ہفتے کے اندر وہ اصول جاری کرتا ہے جو اب بھی برقرار ہے: آپ چوبیس گھنٹے کے لیے غیر شائع کر سکتے ہیں، اس کے بعد آپ کسی انسان سے بات کرتے ہیں۔ پیر: اپنی لاک فائل کو کمٹ کریں، اور اگر کوئی فنکشن گیارہ لائنوں کا ہے، یہ ایک پیراگراف ہے، انحصار نہیں۔ مجھے وہ واقعہ بھیجیں جس کے بارے میں آپ کو ابھی تک بات کرنے کی اجازت نہیں ہے، تبصروں میں، یا daily diff dot dev پر۔ اور آج کے لیے بس اتنا ہی ہے۔ میں Axrisi سے Niko ہوں۔

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 · ur · 25 ستمبر، 2026

ایک ملی سیکنڈ کے بگ نے برطانیہ کی فضائی ٹریفک کو روک دیا۔ چھ گھنٹے۔

منگل 8 ستمبر کو صبح 10:00 بجے، NATS کے نیشنل ایئر اسپیس سسٹم (NAS) کے اندر ایک معمول کی سکواک کوڈ کی درخواست کو ایک اعلی ترجیحی پیغام نے روک دیا جبکہ یہ ایک قدر کو اپ ڈیٹ کرنے کے آدھے راستے میں تھا۔ ن

3:06 ↗
postmortem · ur · 22 ستمبر، 2026

ایک ریبوٹ نے ٹیل اسٹرا کو 2006 میں بھیج دیا: 90 لاکھ فون متاثر ہوئے۔

میلبورن میں ایک انجینئر نے صبح 2:50 پر ایک ٹائمنگ چیسس کو دوبارہ آن کیا، اور ناشتے تک آسٹریلیا کا سب سے بڑا موبائل نیٹ ورک اس بات پر متفق ہو گیا کہ یہ نومبر 2006 ہے۔ 8 جولائی 2026: ٹیل اسٹرا کے NTP چی

3:15 ↗