ສິບເອັດແຖວຂອງ JavaScript ເຮັດໃຫ້ອິນເຕີເນັດລົ້ມ. ການຍົກເລີກການເຜີຍແຜ່ຄັ້ງດຽວ.
ວັນທີ 22 ມີນາ 2016, 21:30 UTC: ນັກພັດທະນາໄດ້ຍົກເລີກການເຜີຍແຜ່ npm packages ທັງໝົດ 273 ອັນຂອງລາວ ຫຼັງຈາກທີ່ npm ໄດ້ມອບຊື່ package "kik" ໃຫ້ Kik, ແອັບສົ່ງຂໍ້ຄວາມ, ເຊິ່ງຕົວແທນສິດທິບັດຂອງພວກເຂົາໄດ້ສັນຍາວ່າ "ທະນາຍຄວາມຈະມາເຄາະປະຕູເຮືອນທ່ານ".
ວັນທີ 22 ມີນາ 2016, 21:30 UTC: ນັກພັດທະນາໄດ້ຍົກເລີກການເຜີຍແຜ່ npm packages ທັງໝົດ 273 ອັນຂອງລາວ ຫຼັງຈາກທີ່ npm ໄດ້ມອບຊື່ package "kik" ໃຫ້ Kik, ແອັບສົ່ງຂໍ້ຄວາມ, ເຊິ່ງຕົວແທນສິດທິບັດຂອງພວກເຂົາໄດ້ສັນຍາວ່າ "ທະນາຍຄວາມຈະມາເຄາະປະຕູເຮືອນທ່ານ". ໜຶ່ງໃນ 273 ອັນຄື left-pad: ສິບເອັດແຖວທີ່ໃສ່ຊ່ອງຫວ່າງຢູ່ໜ້າ string, ຖືກດາວໂຫຼດ 2.5 ລ້ານເທື່ອຕໍ່ເດືອນ. ພາຍໃນບໍ່ເທົ່າໃດນາທີ Babel, React ແລະ Node builds ທົ່ວໂລກກໍລົ້ມເຫຼວ, ຫຼາຍຮ້ອຍເທື່ອຕໍ່ນາທີ. fork ປາກົດຂຶ້ນໃນສິບນາທີແລະບໍ່ມີຫຍັງປ່ຽນແປງ, ເພາະວ່າ Babel ດຶງ left-pad ຜ່ານ line-numbers, ເຊິ່ງປັກໝຸດ 0.0.3 ຢ່າງແນ່ນອນ. ເວລາ 23:55 npm ໄດ້ກູ້ຄືນເວີຊັນທີ່ຖືກລຶບອອກຈາກ backup — ເປັນ "un-un-publish" ທໍາອິດໃນປະຫວັດຂອງ registry — ແລະໜຶ່ງອາທິດຕໍ່ມາໄດ້ອອກກົດລະບຽບການຍົກເລີກການເຜີຍແຜ່ 24 ຊົ່ວໂມງ. Postmortem, ຈາກບັນຊີຂອງ npm ເອງ ແລະອີເມວທີ່ Kik ໄດ້ເຜີຍແຜ່: registry ທີ່ອະນຸຍາດໃຫ້ຜູ້ຂຽນໃດໆລຶບເວີຊັນໃດໆໄດ້ໂດຍບໍ່ມີການກວດສອບ dependents, transitive tree ທີ່ຖືກແກ້ໄຂແບບສົດໆໃນທຸກການຕິດຕັ້ງ, ບໍ່ມີ lockfile ໂດຍຄ່າເລີ່ມຕົ້ນ. Git blame: 60 npm / 25 Kik / 15 the dependency habit. ຜົນການຕັດສິນກ່ຽວກັບການແກ້ໄຂ: SHIP IT.
ອ່ານສະບັບລາຍລັກອັກສອນ (ພາສາອັງກິດ) ↗
ສິ່ງທີ່ວິດີໂອນີ້ກວມເອົາ
- ວັນທີ 11 ມີນາ: ຕົວແທນສິດທິບັດຂອງ Kik ຂໍໃຫ້ Azer Koçulu ປ່ຽນຊື່ `kik`; ຊົ່ວໂມງຕໍ່ມາ: ທະນາຍຄວາມ "ຈະມາເຄາະປະຕູເຮືອນຂອງທ່ານແລະປິດບັນຊີຂອງທ່ານ"; Azer: $30,000; Kik ສົ່ງອີເມວຫາຝ່າຍຊ່ວຍເຫຼືອຂອງ npm
- ວັນທີ 18–20 ມີນາ: CEO ຂອງ npm ໂອນຊື່ໃຫ້ Kik ("ຈະຄາດຫວັງຢ່າງສົມເຫດສົມຜົນວ່າມັນກ່ຽວຂ້ອງກັບ kik.com"); Azer ຂໍໃຫ້ລຶບໂມດູນທັງໝົດຂອງລາວ
- ວັນທີ 22 ມີນາ, 21:30–23:55 UTC: 273 packages ຖືກຍົກເລີກການເຜີຍແຜ່; [email protected] 404s ໃນໂຄງການ Babel, Atom, Node; fork 1.0.0 ເວລາ 21:42; CTO ຂອງ npm tweet "un-un-publishing" ເວລາ 23:03; 0.0.3 ກັບຄືນຈາກ backup ເວລາ 23:55 — 2.5 ຊົ່ວໂມງ
- ວັນທີ 23 ມີນາ ແລະ 29 ມີນາ: postmortem ຂອງ npm ("ພວກເຮົາເຮັດພາດ") ແລະນະໂຍບາຍໃໝ່: ຍົກເລີກການເຜີຍແຜ່ພາຍໃນ 24 ຊົ່ວໂມງເທົ່ານັ້ນ, security placeholders ສໍາລັບຊື່ທີ່ຖືກລຶບ (72 ຊົ່ວໂມງນັບຕັ້ງແຕ່ປີ 2020)
ບົດບັນທຶກທີ່ແປແລ້ວ
ແປຈາກຄຳບັນຍາຍຕົ້ນສະບັບພາສາອັງກິດ. ສຽງ ແລະ ຄຳບັນຍາຍທີ່ມີໃຫ້ແມ່ນຄວບຄຸມໂດຍ YouTube.
0:00 ນັກພັດທະນາຄົນໜຶ່ງລຶບ JavaScript ສິບເອັດແຖວ, ແລະພາຍໃນບໍ່ເທົ່າໃດນາທີ Babel, React ແລະ Node builds ກໍລົ້ມເຫຼວທົ່ວໂລກ, ຫຼາຍຮ້ອຍເທື່ອຕໍ່ນາທີ. ຟັງຊັນນັ້ນຄື left-pad. ມັນຈະໃສ່ຊ່ອງຫວ່າງໃສ່ string, ແລະເມື່ອສິ້ນສຸດຕອນແລງ npm ໄດ້ເຮັດ ສິ່ງໜຶ່ງທີ່ມັນບອກວ່າມັນບໍ່ສາມາດເຮັດໄດ້: ເຜີຍແຜ່ເວີຊັນທີ່ຖືກລຶບຄືນໃໝ່. ມັນເກີດຂຶ້ນແນວໃດ, ເປັນຫຍັງມັນຈຶ່ງເປັນໄປໄດ້, ແລະໃຜເປັນຜູ້ຮັບຜິດຊອບ. ນີ້ແມ່ນ The Daily Diff, postmortem. ວັນທີ 11 ມີນາ. ຕົວແທນສິດທິບັດຂອງ Kik, ແອັບສົ່ງຂໍ້ຄວາມ,
0:26 ສົ່ງອີເມວຫາ Azer Koçulu: ປ່ຽນຊື່ npm package ຂອງທ່ານ, kik ແມ່ນຍີ່ຫໍ້ຂອງພວກເຮົາ. Azer ບອກວ່າບໍ່. ຊົ່ວໂມງຕໍ່ມາ: ທະນາຍຄວາມເຄື່ອງໝາຍການຄ້າຂອງພວກເຮົາຈະມາເຄາະປະຕູເຮືອນຂອງທ່ານແລະ ປິດບັນຊີຂອງທ່ານ. Azer ຕັ້ງລາຄາ, ສາມໝື່ນໂດລາ, ແລະ Kik ສົ່ງຕໍ່ອີເມວຫາຝ່າຍຊ່ວຍເຫຼືອຂອງ npm ວັນທີ 18 ມີນາ. CEO ຂອງ npm ຕັດສິນວ່າໃຜກໍຕາມທີ່ພິມ npm install kik ຈະຄາດຫວັງວ່າເປັນແອັບສົ່ງຂໍ້ຄວາມ,
0:48 ແລະມອບຊື່ນັ້ນໃຫ້. Azer ຂໍໃຫ້ລຶບທຸກສິ່ງທຸກຢ່າງຂອງລາວ. ສອງມື້ຕໍ່ມາລາວໄດ້ເຮັດເອງ: ສອງຮ້ອຍເຈັດສິບສາມ packages. ວັນທີ 22 ມີນາ, 21:30 UTC. ທຸກ build ທີ່ຮຽກໃຊ້ left-pad ໄດ້ຮັບ 404. ສິບນາທີຕໍ່ມາຄົນແປກໜ້າໄດ້ເຜີຍແຜ່ຄືນໃໝ່ເປັນ 1.0.0, ແລະບໍ່ມີຫຍັງປ່ຽນແປງ, ເພາະວ່າ Babel ແລະ Atom ໂຫຼດມັນຜ່ານ package ທີ່ເອີ້ນວ່າ line-numbers, ເຊິ່ງຕ້ອງການ 0.0.3 ຢ່າງແນ່ນອນ.
1:13 ເວລາ 23:03 CTO ຂອງ npm tweet: un-un-publishing. ເວລາ 23:55, 0.0.3 ກັບຄືນຈາກ backup. ສອງຊົ່ວໂມງເຄິ່ງ. ເປັນຫຍັງຄົນຄົນດຽວຈຶ່ງເຮັດສິ່ງນີ້ໄດ້? ສາມເຫດຜົນ. ເວີຊັນໃດກໍຕາມໃນ npm ສາມາດຖືກລຶບໂດຍຜູ້ຂຽນ, ທັນທີ, ໂດຍບໍ່ມີການກວດສອບວ່າໃຜເພິ່ງພາມັນ. ອັນທີສອງ, dependencies ແມ່ນ transitive: Babel ບໍ່ຮູ້ວ່າ left-pad ມີຢູ່, ມັນຮູ້ line-numbers, ແລະ tree ທັງໝົດຖືກແກ້ໄຂແບບສົດໆໃນທຸກການຕິດຕັ້ງ.
1:36 ອັນທີສາມ, ໃນປີ 2016 ບໍ່ມີຫຍັງປັກໝຸດ tree ນັ້ນໂດຍຄ່າເລີ່ມຕົ້ນ; lockfiles ແມ່ນ opt-in, ດັ່ງນັ້ນທຸກ CI run ຈຶ່ງຖາມອິນເຕີເນັດຄືນວ່າສິບເອັດແຖວຂອງໂຄດມີລັກສະນະແນວໃດ. ໜຶ່ງ registry, ທີ່ດໍາເນີນການໂດຍບໍ່ມີໃຜທີ່ເພິ່ງພາມັນ. git blame. npm, ຫົກສິບເປີເຊັນ: postmortem ຂອງມັນເອງກ່າວວ່າການຍົກເລີກການເຜີຍແຜ່ທີ່ບໍ່ຈໍາກັດ ເຮັດໃຫ້ເກີດຄວາມເຈັບປວດ, ແລະ, quote, ພວກເຮົາເຮັດພາດ. Kik, ຊາວຫ້າເປີເຊັນ: ຕົວແທນສິດທິບັດ, ບໍ່ແມ່ນທະນາຍຄວາມ, ສັນຍາວ່າທະນາຍຄວາມຈະມາເຄາະປະຕູເຮືອນກ່ຽວກັບຊື່ທີ່ Kik ໄດ້ຕັດສິນໃຈແລ້ວວ່າຈະບໍ່ໃຊ້. ນິໄສການເພິ່ງພາອາໄສ, ສິບຫ້າເປີເຊັນ: ທຸກຄົນທີ່ npm-install ສິບເອັດແຖວແທນ
2:06 ທີ່ຈະພິມມັນ. ລວມທັງ Kik, ເຊິ່ງ builds ກໍລົ້ມເຫຼວເຊັ່ນກັນ. ຂະໜາດຂອງຜົນກະທົບ: ສອງຮ້ອຍເຈັດສິບສາມ packages ຖືກດຶງອອກ, ໜຶ່ງໃນນັ້ນຖືກດາວໂຫຼດສອງລ້ານຫ້າແສນເທື່ອຕໍ່ເດືອນ. ການແກ້ໄຂໃຊ້ເວລາສອງຊົ່ວໂມງເຄິ່ງ; ຟັງຊັນໃຊ້ເວລາສິບເອັດແຖວ. ໃນ Hacker News, ໂພສທີ່ຖາມວ່າພວກເຮົາລືມວິທີການຂຽນໂປຣແກຣມແລ້ວບໍ ໄດ້ຮັບ ໜຶ່ງພັນເຈັດຮ້ອຍຄະແນນ, ສ່ວນໃຫຍ່ແມ່ນມາຈາກຄົນທີ່ builds ຂອງພວກເຂົາຍັງເປັນສີແດງຢູ່. ຄຳຕັດສິນ, postmortem: SHIP IT.
2:26 npm ກູ້ຄືນຈາກ backup, ໂພສ postmortem ໃນມື້ຕໍ່ມາ, ແລະພາຍໃນໜຶ່ງອາທິດໄດ້ອອກກົດລະບຽບທີ່ຍັງຄົງຢູ່: ທ່ານສາມາດຍົກເລີກການເຜີຍແຜ່ໄດ້ ຊາວສີ່ຊົ່ວໂມງ, ຫຼັງຈາກນັ້ນທ່ານຕ້ອງລົມກັບຄົນ. ວັນຈັນ: commit lockfile ຂອງທ່ານ, ແລະຖ້າຟັງຊັນມີສິບເອັດແຖວ, ມັນແມ່ນວັກ, ບໍ່ແມ່ນ dependency. ສົ່ງ incident ທີ່ທ່ານຍັງບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເວົ້າເຖິງໃຫ້ຂ້ອຍ, ໃນ comments, ຫຼືທີ່ the daily diff dot dev. ແລະນັ້ນຄື diff ສໍາລັບມື້ນີ້.
2:48 ຂ້ອຍຊື່ Niko ຈາກ Axrisi. Merge ຢ່າງມີຄວາມຮັບຜິດຊອບ.
ແຫຼ່ງຂໍ້ມູນ
- 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



