+− THE DAILY DIFFdev & AI news
SHIP IT

JavaScript ၁၁ ကြောင်းက အင်တာနက်ကို ရပ်တန့်စေခဲ့သည်။ ထုတ်ပြန်ခြင်းတစ်ခု။

၂၀၁၆ ခုနှစ်၊ မတ်လ ၂၂ ရက်၊ ၂၁:၃၀ UTC: npm သည် "kik" ဟူသော package အမည်ကို မက်ဆေ့ဂျ်ပို့အက်ပ်ဖြစ်သော Kik သို့ လွှဲပြောင်းပေးပြီးနောက် developer တစ်ဦးသည် ၎င်း၏ npm packages ၂၇၃ ခုလုံးကို ထုတ်ပြန်ခြင်းမှ ပယ်ဖျက်လိုက်သည်။

၂၀၁၆ ခုနှစ်၊ မတ်လ ၂၂ ရက်၊ ၂၁:၃၀ UTC: npm သည် "kik" ဟူသော package အမည်ကို မက်ဆေ့ဂျ်ပို့အက်ပ်ဖြစ်သော Kik သို့ လွှဲပြောင်းပေးပြီးနောက် developer တစ်ဦးသည် ၎င်း၏ npm packages ၂၇၃ ခုလုံးကို ထုတ်ပြန်ခြင်းမှ ပယ်ဖျက်လိုက်သည်။ ထိုမတိုင်မီ Kik ၏ မူပိုင်ခွင့်အေးဂျင့်က "ရှေ့နေတွေ မင်းတံခါးကို လာခေါက်လိမ့်မယ်" ဟု ခြိမ်းခြောက်ခဲ့သည်။ ထို ၂၇၃ ခုထဲမှ တစ်ခုမှာ left-pad ဖြစ်ပြီး စာကြောင်းတစ်ခုရှေ့တွင် နေရာများထည့်ပေးသည့် လိုင်း ၁၁ ကြောင်းရှိသော code ဖြစ်သည်။ ၎င်းကို တစ်လလျှင် ၂.၅ သန်းအထိ download လုပ်ကြသည်။ မိနစ်ပိုင်းအတွင်း Babel, React နှင့် Node builds များသည် ကမ္ဘာတစ်ဝန်းတွင် တစ်မိနစ်လျှင် ရာနှင့်ချီ၍ ပျက်သွားသည်။ ဆယ်မိနစ်အတွင်း fork တစ်ခု ပေါ်လာသော်လည်း မည်သည့်အရာမျှ မပြောင်းလဲပေ။ အကြောင်းမှာ Babel သည် left-pad ကို line-numbers မှတစ်ဆင့် ဆွဲယူပြီး 0.0.3 ကို တိကျစွာ သတ်မှတ်ထားသောကြောင့် ဖြစ်သည်။ ၂၃:၅၅ တွင် npm သည် ဖျက်လိုက်သော version ကို backup မှ ပြန်လည်ရယူခဲ့သည်။ ၎င်းသည် registry ၏ သမိုင်းတွင် ပထမဆုံးသော "ထုတ်ပြန်ခြင်းမှ ပယ်ဖျက်ခြင်းကို ပယ်ဖျက်ခြင်း" ဖြစ်သည်။ တစ်ပတ်အကြာတွင် ၂၄ နာရီအတွင်း ထုတ်ပြန်ခြင်းကို ပယ်ဖျက်နိုင်သည့် စည်းမျဉ်းကို ထုတ်ပြန်ခဲ့သည်။ Postmortem: npm ၏ ကိုယ်ပိုင်အကောင့်နှင့် Kik မှ ထုတ်ပြန်ခဲ့သော အီးမေးလ်စာရင်းအရ၊ မည်သည့်စာရေးသူမဆို မည်သည့် version ကိုမဆို မှီခိုသူများစစ်ဆေးခြင်းမရှိဘဲ ဖျက်ခွင့်ပြုထားသော registry၊ install တိုင်းတွင် တိုက်ရိုက်ဖြေရှင်းသည့် transitive tree၊ ပုံမှန်အားဖြင့် lockfile မရှိခြင်းတို့ကြောင့် ဖြစ်သည်။ Git blame: ၆၀% npm / ၂၅% Kik / ၁၅% dependency အလေ့အကျင့်။ ပြုပြင်မှုအပေါ် စီရင်ချက်: SHIP IT။

ရေးသားထားသော ထုတ်ဝေမှု (အင်္ဂလိပ်) ကို ဖတ်ရန် ↗

ဤဗီဒီယိုတွင် ဖော်ပြထားသောအရာများ

  • မတ်လ ၁၁ ရက်: Kik ၏ မူပိုင်ခွင့်အေးဂျင့်က Azer Koçulu အား `kik` ကို အမည်ပြောင်းရန် တောင်းဆိုခဲ့သည်။ တစ်နာရီအကြာတွင် ရှေ့နေများက "မင်းတံခါးကို လာခေါက်ပြီး မင်းအကောင့်တွေကို ဖြုတ်ချပစ်မယ်" ဟု ပြောခဲ့သည်။ Azer: $30,000; Kik က npm support သို့ အီးမေးလ်ပို့ခဲ့သည်။
  • မတ်လ ၁၈-၂၀ ရက်: npm ၏ CEO က "kik.com နှင့် ပတ်သက်သည်ဟု မျှော်လင့်နိုင်သည်" ဟုဆိုကာ အမည်ကို Kik သို့ လွှဲပြောင်းပေးခဲ့သည်။ Azer က ၎င်း၏ modules အားလုံးကို ဖျက်ပစ်ရန် တောင်းဆိုခဲ့သည်။
  • မတ်လ ၂၂ ရက်၊ ၂၁:၃၀–၂၃:၅၅ UTC: packages ၂၇၃ ခုကို ထုတ်ပြန်ခြင်းမှ ပယ်ဖျက်ခဲ့သည်။ Babel, Atom, Node projects များတွင် left-pad@0.0.3 404s ပြသသည်။ ၂၁:၄၂ တွင် fork 1.0.0 ပေါ်လာသည်။ npm ၏ CTO က ၂၃:၀၃ တွင် "un-un-publishing" ဟု tweet ခဲ့သည်။ ၂၃:၅၅ တွင် backup မှ 0.0.3 ပြန်ရောက်လာသည်။ (၂.၅ နာရီကြာသည်)
  • မတ်လ ၂၃ ရက်နှင့် မတ်လ ၂၉ ရက်: npm ၏ postmortem ("ကျွန်ုပ်တို့ အမှားလုပ်မိသည်") နှင့် မူဝါဒအသစ်: ၂၄ နာရီအတွင်းသာ ထုတ်ပြန်ခြင်းမှ ပယ်ဖျက်နိုင်သည်၊ ဖျက်လိုက်သောအမည်များအတွက် လုံခြုံရေး placeholders (၂၀၂၀ မှစ၍ ၇၂ နာရီ)။

ဘာသာပြန်ထားသော စာသားမှတ်တမ်း

မူရင်း အင်္ဂလိပ်စကားပြောမှ ဘာသာပြန်ထားသည်။ ရရှိနိုင်သော အသံနှင့် စာတန်းထိုးများကို YouTube မှ ထိန်းချုပ်ထားသည်။

0:00 developer တစ်ယောက်က JavaScript ၁၁ လိုင်းကို ဖျက်လိုက်တာနဲ့ မိနစ်ပိုင်းအတွင်း Babel, React နဲ့ Node builds တွေ ကမ္ဘာတစ်ဝန်းမှာ ပျက်ကုန်တယ်။ တစ်မိနစ်ကို ရာနဲ့ချီတယ်။ အဲ့ဒီ function က left-pad ပါ။ စာကြောင်းတစ်ခုရှေ့မှာ နေရာလွတ်တွေ ဖြည့်ပေးတာပါ။ ညနေပိုင်း အကုန်မှာ npm က သူ မလုပ်နိုင်ဘူးလို့ ပြောတဲ့ အလုပ်တစ်ခုကို လုပ်တယ်။ ဖျက်လိုက်တဲ့ version ကို ပြန်ထုတ်ပေးတာပေါ့။ ဘယ်လို ဖြစ်ပျက်ခဲ့လဲ၊ ဘာလို့ဖြစ်နိုင်လဲ၊ ဘယ်သူ့မှာ တာဝန်ရှိလဲဆိုတာ ကြည့်ရအောင်။ ဒါက The Daily Diff ပါ။ Postmortem ဖြစ်ပါတယ်။ မတ်လ ၁၁ ရက်နေ့။ မက်ဆေ့ဂျ်ပို့အက်ပ် Kik က မူပိုင်ခွင့်အေးဂျင့်တစ်ယောက်က

0:26 Azer Koçulu ကို အီးမေးလ်ပို့တယ်။ မင်းရဲ့ npm package ကို အမည်ပြောင်းပါ၊ kik က ငါတို့ရဲ့ brand ပါတဲ့။ Azer က ငြင်းလိုက်တယ်။ တစ်နာရီအကြာမှာ သူတို့ရဲ့ ကုန်အမှတ်တံဆိပ် ရှေ့နေတွေက မင်းတံခါးကို လာခေါက်ပြီး မင်းအကောင့်တွေကို ဖြုတ်ချပစ်မယ်လို့ ပြောတယ်။ Azer က စျေးနှုန်းတစ်ခု ပြောလိုက်တယ်။ ဒေါ်လာ သုံးသောင်း။ ပြီးတော့ Kik က အဲ့ဒီ အီးမေးလ်စာရင်းကို npm support ကို လွှဲပေးလိုက်တယ်။ မတ်လ ၁၈ ရက်နေ့။ npm ရဲ့ CEO က npm install kik လို့ ရိုက်တဲ့သူတိုင်းက မက်ဆေ့ဂျ်ပို့

0:48 အက်ပ်ကို မျှော်လင့်တယ်လို့ ဆုံးဖြတ်ပြီး အဲ့ဒီနာမည်ကို လွှဲပေးလိုက်တယ်။ Azer က သူ့ရဲ့ အရာအားလုံးကို ဖျက်ပစ်ဖို့ တောင်းဆိုခဲ့တယ်။ နှစ်ရက်အကြာမှာတော့ သူကိုယ်တိုင် လုပ်လိုက်တယ်။ package ၂၇၃ ခု။ မတ်လ ၂၂ ရက်၊ ၂၁:၃၀ UTC။ left-pad ကို သုံးတဲ့ build တိုင်း 404 ဖြစ်ကုန်တယ်။ ဆယ်မိနစ်အကြာမှာတော့ မသိတဲ့လူတစ်ယောက်က 1.0.0 အနေနဲ့ ပြန်ထုတ်လိုက်တယ်။ ဘာမှ မပြောင်းလဲဘူး။ ဘာလို့လဲဆိုတော့ Babel နဲ့ Atom က line-numbers ဆိုတဲ့ package တစ်ခုကနေတဆင့် ဆွဲယူတာဖြစ်ပြီး 0.0.3 ကို တိတိကျကျ လိုချင်နေလို့ပါ။

1:13 ၂၃:၀၃ မှာ npm ရဲ့ CTO က tweet လုပ်တယ်။ un-un-publishing တဲ့။ ၂၃:၅၅ မှာ 0.0.3 ကို backup ကနေ ပြန်ရလိုက်တယ်။ နှစ်နာရီခွဲ ကြာတယ်။ လူတစ်ယောက်တည်းက ဒါကို ဘာလို့ လုပ်နိုင်ရတာလဲ။ အကြောင်းပြချက် သုံးခု။ npm ပေါ်က ဘယ် version ကိုမဆို သူ့ရဲ့ author က ချက်ချင်း ဖျက်နိုင်တယ်။ ဘယ်သူကမှီခိုနေလဲဆိုတာ စစ်ဆေးခြင်းမရှိဘူး။ ဒုတိယအချက်က dependencies တွေက transitive ဖြစ်တယ်။ Babel က left-pad ရှိတယ်ဆိုတာ မသိဘူး။ သူက line-numbers ကို သိတယ်။ ပြီးတော့ tree တစ်ခုလုံးက install တိုင်းမှာ တိုက်ရိုက် ဖြေရှင်းတယ်။

1:36 တတိယအချက်က ၂၀၁၆ မှာ အဲ့ဒီ tree ကို ပုံမှန်အားဖြင့် ဘယ်အရာမှ မသတ်မှတ်ထားဘူး။ lockfiles က opt-in ဖြစ်တယ်။ ဒါကြောင့် CI run တိုင်းက code ၁၁ လိုင်းက ဘယ်လိုပုံလဲဆိုတာကို အင်တာနက်ကို ပြန်မေးနေတာပဲ။ Registry တစ်ခုတည်း၊ ဘယ်သူမှ မမှီခိုတဲ့သူက လည်ပတ်နေတယ်။ git blame။ npm ၆၀ ရာခိုင်နှုန်း: သူတို့ရဲ့ postmortem မှာ ကန့်သတ်မထားတဲ့ unpublishing ကြောင့် ပြဿနာဖြစ်ခဲ့တာလို့ ဖော်ပြထားပြီး၊ "we dropped the ball" လို့ ရေးထားတယ်။ Kik ၂၅ ရာခိုင်နှုန်း: ရှေ့နေမဟုတ်တဲ့ မူပိုင်ခွင့်အေးဂျင့်တစ်ယောက်က Kik က မသုံးတော့ဘူးလို့ ဆုံးဖြတ်ထားတဲ့ နာမည်တစ်ခုအတွက် ရှေ့နေတွေ လာလိမ့်မယ်လို့ ခြိမ်းခြောက်ခဲ့တာ။ dependency အလေ့အကျင့် ၁၅ ရာခိုင်နှုန်း: စာရိုက်မယ့်အစား npm-install နဲ့ ၁၁ လိုင်း code ကို သွင်းခဲ့တဲ့လူတိုင်း။

2:06 သူတို့ကိုယ်တိုင် ရိုက်မယ့်အစား။ Kik လည်း ပါဝင်ပြီး သူတို့ရဲ့ builds တွေလည်း ပျက်ခဲ့တယ်။ ထိခိုက်မှုပမာဏ: package ၂၇၃ ခုကို ဆွဲချခဲ့ရတယ်။ အဲ့ဒီထဲက တစ်ခုက တစ်လကို နှစ်သန်းခွဲ download လုပ်ခဲ့ရတယ်။ ပြင်ဆင်ဖို့ နှစ်နာရီခွဲ ကြာတယ်။ function က ၁၁ လိုင်းပဲ ရှိတယ်။ Hacker News မှာ programmer လုပ်နည်း မေ့နေပြီလားလို့ မေးတဲ့ post တစ်ခုက အမှတ် ၁၇၀၀ ရခဲ့တယ်။ အများစုက သူတို့ရဲ့ builds တွေ အနီရောင် ပြနေတုန်းမို့လို့ပါ။ စီရင်ချက်၊ postmortem: SHIP IT။

2:26 npm က backup ကနေ ပြန်ယူပြီး နောက်နေ့မှာ postmortem ကို တင်ခဲ့တယ်။ တစ်ပတ်အတွင်းမှာ လက်ရှိကျင့်သုံးနေဆဲ စည်းမျဉ်းကို ထုတ်ပြန်ခဲ့တယ်။ ၂၄ နာရီအတွင်း unpublish လုပ်နိုင်တယ်၊ အဲ့ဒီနောက်မှာတော့ လူတစ်ယောက်နဲ့ စကားပြောရမယ်။ တနင်္လာနေ့: မင်းရဲ့ lockfile ကို commit လုပ်ပါ။ function တစ်ခုက ၁၁ လိုင်းပဲ ရှိရင် အဲ့ဒါက စာကြောင်းတစ်ပိုဒ်ပဲ၊ dependency မဟုတ်ဘူး။ မင်းပြောခွင့်မရှိသေးတဲ့ ဖြစ်စဉ်ကို ငါ့ဆီ ပို့ပေးပါ။ comments မှာဖြစ်ဖြစ်၊ the daily diff dot dev မှာဖြစ်ဖြစ်။ ဒါကတော့ ဒီနေ့အတွက် diff ပါ။

2:48 ကျွန်တော် Axrisi က Niko ပါ။ တာဝန်ယူမှုဖြင့် ပေါင်းစည်းပါ။

ရင်းမြစ်များ

  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 · my · ၂၀၂၆ စက် ၁၇

Dependabot bump တစ်ခုက worm တစ်ခုကို ထုတ်ပြန်ခဲ့ပါတယ်။ packages ၂၂ ခု။

ဘော့တ်တစ်ခုက pull request တစ်ခုကို ဖွင့်ပါတယ်။ လူတစ်ဦးက ၂၄ မိနစ်အကြာမှာ ပေါင်းစပ်လိုက်ပါတယ်။ အဲဒီနောက် ၉၅ မိနစ်အကြာမှာ worm တစ်ခုက သူ့ CI မှာ တွေ့ခဲ့တဲ့ token တစ်ခုနဲ့ သူ့နာမည်အောက်မှာ သူ့ npm package

3:04 ↗
postmortem · my · ၂၀၂၆ စက် ၁၅

Rust crate သည် compile လုပ်ချိန်၌ malware ကို အသုံးပြုခဲ့သည်။ ၈၆ မိနစ်။

ဒေါင်းလုဒ်ပေါင်း သန်း ၂၆၀ ရှိသော လေး macro ပါသည့် Rust crate တစ်ခုသည် တစ်ခုတည်းသော မှီခိုမှုကို ထည့်သွင်းပြီး `cargo build` သည် သင့်စက်ပေါ်တွင် သူစိမ်းတစ်ဦး၏ binary ကို run သည်။ ၂၀၂၆ ခုနှစ်၊ ဩဂုတ်လ ၂၀

3:09 ↗
postmortem · my · ၂၀၂၆ စက် ၂၅

တစ်မီလီစက္ကန့် အမှားကြောင့် ဗြိတိန်လေကြောင်းထိန်းသိမ်းမှု ၆ နာရီ ရပ်တန့်ခဲ့ရ

စက်တင်ဘာ ၈ ရက်၊ အင်္ဂါနေ့ နံနက် ၁၀:၀၀ နာရီတွင် NATS ၏ National Airspace System (NAS) အတွင်းရှိ ပုံမှန် squawk-code တောင်းဆိုမှုတစ်ခုသည် တန်ဖိုးတစ်ခုကို အပ်ဒိတ်လုပ်နေစဉ် အလယ်တွင် ဦးစားပေးမြင့်မားသော မက

3:06 ↗
postmortem · my · ၂၀၂၆ စက် ၂၂

Telstra ကို 2006 ခုနှစ်သို့ ပြန်ရောက်သွားစေသည့် ပြန်လည်စတင်ခြင်း။ ဖုန်းကိုးသန်း။

မဲလ်ဘုန်းမြို့ရှိ အင်ဂျင်နီယာတစ်ဦးသည် နံနက် ၂:၅၀ နာရီတွင် အချိန်ကိုက်စက်ကို ပြန်လည်ဖွင့်လိုက်ရာ နံနက်စာစားချိန်တွင် ဩစတြေးလျ၏ အကြီးဆုံး မိုဘိုင်းကွန်ရက်က ၂၀၀၆ ခုနှစ် နိုဝင်ဘာလဖြစ်ကြောင်း သဘောတူခဲ့သည်။

3:15 ↗