ജാവാസ്ക്രിപ്റ്റിന്റെ പതിനൊന്ന് വരികൾ ഇന്റർനെറ്റിനെ തകർത്തു. ഒരു അൺപബ്ലിഷ്.
2016 മാർച്ച് 22, 21:30 UTC: "നിങ്ങളുടെ വാതിൽക്കൽ വക്കീലന്മാർ മുട്ടും" എന്ന് പേറ്റന്റ് ഏജന്റ് വാഗ്ദാനം ചെയ്ത മെസ്സേജിംഗ് ആപ്പായ കിക്ക്-ന് npm, "kik" എന്ന പാക്കേജ് പേര് കൈമാറിയതിന് ശേഷം, ഒരു ഡെവലപ്പർ തന്റെ 273 npm പാക്കേജുകൾ അൺപബ്ലിഷ് ചെയ്തു.
2016 മാർച്ച് 22, 21:30 UTC: "നിങ്ങളുടെ വാതിൽക്കൽ വക്കീലന്മാർ മുട്ടും" എന്ന് പേറ്റന്റ് ഏജന്റ് വാഗ്ദാനം ചെയ്ത മെസ്സേജിംഗ് ആപ്പായ കിക്ക്-ന് npm, "kik" എന്ന പാക്കേജ് പേര് കൈമാറിയതിന് ശേഷം, ഒരു ഡെവലപ്പർ തന്റെ 273 npm പാക്കേജുകൾ അൺപബ്ലിഷ് ചെയ്തു. ആ 273 പാക്കേജുകളിൽ ഒന്നാണ് left-pad: ഒരു സ്ട്രിംഗിന്റെ മുന്നിൽ സ്പേസുകൾ ചേർക്കുന്ന പതിനൊന്ന് വരികൾ, ഇത് ഒരു മാസം 2.5 ദശലക്ഷം തവണ ഡൗൺലോഡ് ചെയ്യപ്പെടുന്നു. മിനിറ്റുകൾക്കകം Babel, React, Node ബിൽഡുകൾ ലോകമെമ്പാടും പരാജയപ്പെട്ടു, മിനിറ്റിൽ നൂറുകണക്കിന് ബിൽഡുകൾ. പത്ത് മിനിറ്റിനുള്ളിൽ ഒരു ഫോർക്ക് പ്രത്യക്ഷപ്പെട്ടു, പക്ഷേ അതിന് മാറ്റമൊന്നും വരുത്താനായില്ല, കാരണം Babel line-numbers വഴി left-pad-നെ വലിച്ചെടുത്തു, അത് 0.0.3-നെ കൃത്യമായി പിൻ ചെയ്തു. 23:55-ന് npm ഒരു ബാക്കപ്പിൽ നിന്ന് ഡിലീറ്റ് ചെയ്ത പതിപ്പ് പുനഃസ്ഥാപിച്ചു — രജിസ്ട്രിയുടെ ചരിത്രത്തിലെ ആദ്യത്തെ "un-un-publish" — ഒരു ആഴ്ചയ്ക്ക് ശേഷം 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 പാക്കേജുകൾ അൺപബ്ലിഷ് ചെയ്തു; Babel, Atom, Node പ്രോജക്റ്റുകളിൽ left-pad@0.0.3 404s ആകുന്നു; 21:42-ന് fork 1.0.0 വരുന്നു; 23:03-ന് npm-ന്റെ CTO "un-un-publishing" എന്ന് ട്വീറ്റ് ചെയ്യുന്നു; 23:55-ന് ബാക്കപ്പിൽ നിന്ന് 0.0.3 തിരികെ വരുന്നു — 2.5 മണിക്കൂർ
- മാർച്ച് 23, മാർച്ച് 29: npm-ന്റെ പോസ്റ്റ്മോർട്ടം ("ഞങ്ങൾ പന്ത് താഴെയിട്ടു") പുതിയ നയം: 24 മണിക്കൂറിനുള്ളിൽ മാത്രം അൺപബ്ലിഷ് ചെയ്യുക, നീക്കം ചെയ്ത പേരുകൾക്ക് സുരക്ഷാ പ്ലേസ്ഹോൾഡറുകൾ (2020 മുതൽ 72 മണിക്കൂർ)
വിവർത്തനം ചെയ്ത ട്രാൻസ്ക്രിപ്റ്റ്
യഥാർത്ഥ ഇംഗ്ലീഷ് ആഖ്യാനത്തിൽ നിന്ന് വിവർത്തനം ചെയ്തത്. ലഭ്യമായ ഓഡിയോയും അടിക്കുറിപ്പുകളും YouTube നിയന്ത്രിക്കുന്നു.
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-ൽ ഇൻസ്റ്റാൾ ചെയ്ത എല്ലാവരും.
2:06 Kik ഉൾപ്പെടെ, അവരുടെ ബിൽഡുകളും തകരുന്നു. Kik ഉൾപ്പെടെ, അവരുടെ ബിൽഡുകളും തകരുന്നു. ബ്ലാസ്റ്റ് റേഡിയസ്: ഇരുനൂറ്റി എഴുപത്തിമൂന്ന് പാക്കേജുകൾ പിൻവലിച്ചു, അതിൽ ഒന്ന് ഒരു മാസം രണ്ടര ദശലക്ഷം തവണ ഡൗൺലോഡ് ചെയ്യപ്പെടുന്നു. പരിഹാരത്തിന് രണ്ടര മണിക്കൂർ എടുക്കുന്നു; ഫംഗ്ഷന് പതിനൊന്ന് വരികൾ എടുക്കുന്നു. ഹാക്കർ ന്യൂസിൽ, പ്രോഗ്രാം ചെയ്യാൻ ഞങ്ങൾ മറന്നുപോയോ എന്ന് ചോദിക്കുന്ന ഒരു പോസ്റ്റ് പതിനേഴായിരം പോയിന്റുകൾ നേടുന്നു, കൂടുതലും അവരുടെ ബിൽഡുകൾ ഇപ്പോഴും ചുവപ്പായ ആളുകളിൽ നിന്ന്. വിധി, പോസ്റ്റ്മോർട്ടം: SHIP IT.
2:26 npm ബാക്കപ്പിൽ നിന്ന് പുനഃസ്ഥാപിക്കുന്നു, അടുത്ത ദിവസം പോസ്റ്റ്മോർട്ടം പോസ്റ്റ് ചെയ്യുന്നു, ഒരു ആഴ്ചയ്ക്കുള്ളിൽ ഇപ്പോഴും നിലനിൽക്കുന്ന നിയമം പുറത്തിറക്കുന്നു: നിങ്ങൾക്ക് ഇരുപത്തിനാല് മണിക്കൂർ അൺപബ്ലിഷ് ചെയ്യാം, അതിനുശേഷം നിങ്ങൾ ഒരു മനുഷ്യനുമായി സംസാരിക്കണം. തിങ്കൾ: നിങ്ങളുടെ ലോക്ക്ഫയൽ കമ്മിറ്റ് ചെയ്യുക, ഒരു ഫംഗ്ഷൻ പതിനൊന്ന് വരികളാണെങ്കിൽ, അത് ഒരു ഖണ്ഡികയാണ്, ഒരു ആശ്രിതത്വമല്ല. നിങ്ങൾക്ക് ഇപ്പോഴും സംസാരിക്കാൻ അനുവാദമില്ലാത്ത സംഭവം എനിക്ക് അയയ്ക്കുക, കമന്റുകളിലോ, daily diff dot dev-ലോ. അതാണ് ഇന്നത്തെ ഡിഫ്.
2:48 ഞാൻ Axrisi-ൽ നിന്നുള്ള Niko. ഉത്തരവാദിത്തത്തോടെ ലയിപ്പിക്കുക.
ഉറവിടങ്ങൾ
- npm, Inc., "kik, left-pad, and npm" (Mar 23, 2016)blog.npmjs.org
- npm, Inc., "changes to npm's unpublish policy" (Mar 29, 2016)blog.npmjs.org
- Azer Koçulu, "I've Just Liberated My Modules" (Mar 22, 2016; archive copy)web.archive.org
- Mike Roberts (Kik), "A discussion about the breaking of the Internet" — the full e-mail thread (Mar 23, 2016; archive copy)web.archive.org
- Laurie Voss (npm CTO) on X, Mar 22, 2016, 23:03 UTCx.com
- left-pad 0.0.3 on the npm registry (the eleven lines)registry.npmjs.org
- Hacker News, Mar 22, 2016 — "I've Just Liberated My Modules" (1,573 points)news.ycombinator.com
- Hacker News, Mar 23, 2016 — "NPM and Left-Pad: Have We Forgotten How to Program?" (1,725 points)news.ycombinator.com
- Hacker News, Mar 29, 2016 — "Changes to Npm's unpublish policy" (320 points)news.ycombinator.com
- The Register, Mar 23, 2016 — "How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript"www.theregister.com



