Арван нэгэн мөр JavaScript интернэтийг тасалдуулжээ. Нэг устгал.
2016 оны 3-р сарын 22, 21:30 UTC: нэгэн хөгжүүлэгч өөрийн бүх 273 npm багцыг устгажээ.
2016 оны 3-р сарын 22, 21:30 UTC: нэгэн хөгжүүлэгч өөрийн бүх 273 npm багцыг устгажээ. Учир нь npm нь "kik" багцын нэрийг мессежийн апп болох Kik-д өгсөн бөгөөд Kik-ийн патентын төлөөлөгч "хуульчид танай хаалгыг тогшино" хэмээн амласан байв. 273 багцын нэг нь left-pad юм: энэ нь тэмдэгт мөрний өмнө зай тавьдаг арван нэгэн мөр код бөгөөд сард 2.5 сая удаа татагддаг байжээ. Хэдхэн минутын дотор Babel, React болон Node-ийн бүтээцүүд дэлхий даяар, минут тутамд хэдэн зуугаар тасалдаж эхлэв. Арван минутын дотор нэгэн салаа гарч ирсэн ч юу ч өөрчилсөнгүй, учир нь Babel нь left-pad-ийг мөрийн дугаараар дамжуулан татдаг бөгөөд энэ нь яг 0.0.3-ийг шаарддаг байв. 23:55 цагт npm устгагдсан хувилбарыг нөөцлөлтөөс сэргээв – энэ нь регистрийн түүхэнд анхны "устгагдсаныг устгах" үйлдэл байв – мөн нэг долоо хоногийн дараа 24 цагийн дотор устгах дүрмийг хэрэгжүүлжээ. Дараах шинжилгээ, npm-ийн өөрийн тайлан болон Kik-ийн нийтэлсэн и-мэйл харилцаанаас: аль ч зохиогчид хамааралтай эсэхийг шалгахгүйгээр аливаа хувилбарыг устгах боломж олгосон регистр, суулгалт бүрт шууд шийдэгддэг дамжсан мод, анхдагчаар lockfile байхгүй байдал. Git буруутгал: 60 npm / 25 Kik / 15 хамаарлын дадал. Засварын тухай дүгнэлт: SHIP IT.
Бичмэл хувилбарыг унших (Англи) ↗
Энэ видео юуг хамардаг
- 3-р сарын 11: Kik-ийн патентын төлөөлөгч Азер Кочулугаас `kik` нэрийг өөрчлөхийг хүсэв; нэг цагийн дараа: хуульчид "танай хаалгыг тогшиж, таны бүртгэлийг хаана"; Азер: 30,000 доллар; Kik npm-ийн дэмжлэгт и-мэйл илгээв
- 3-р сарын 18–20: npm-ийн гүйцэтгэх захирал нэрийг Kik-д шилжүүлэв ("kik.com-той холбоотой байх нь үндэслэлтэй гэж үзнэ"); Азер өөрийн бүх модулиудыг устгахыг хүсэв
- 3-р сарын 22, 21:30–23:55 UTC: 273 багц устгагдав; [email protected] нь Babel, Atom, Node төслүүдэд 404 алдаа заав; 21:42-т fork 1.0.0 гарч ирэв; 23:03-т npm-ийн CTO "устгагдсаныг устгаж байна" гэж жиргэв; 23:55-д 0.0.3 нөөцлөлтөөс сэргэв – 2.5 цаг
- 3-р сарын 23 ба 3-р сарын 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-ийн гүйцэтгэх захирал 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 жиргэв: устгагдсаныг устгаж байна. 23:55 цагт 0.0.3 нөөцлөлтөөс сэргэв. Хоёр хагас цаг. Яагаад нэг хүн үүнийг хийх боломжтой байсан бэ? Гурван шалтгаан. npm дээрх аливаа хувилбарыг зохиогч нь түүнд хэн хамааралтайг шалгахгүйгээр, шууд устгах боломжтой. Хоёрдугаарт, хамаарал нь дамжсан байдаг: Babel left-pad байгааг мэдэхгүй, энэ нь line-numbers-ийг мэддэг, мөн бүх модыг суулгалт бүрт шууд шийдвэрлэдэг.
1:36 Гуравдугаарт, 2016 онд энэ модыг анхдагчаар юу ч барьж байсангүй; lockfile нь сонгомол байсан, тиймээс CI-ийн ажиллалт бүр арван нэгэн мөр код ямар харагдахыг интернэтээс дахин асуудаг байв. Нэг регистр, түүнд хамааралтай хэн ч ажиллуулдаггүй. git буруутгал. npm, жаран хувь: өөрийнх нь дараах шинжилгээнд хязгааргүй устгах боломж өвдөлт үүсгэсэн гэж дурдсан, мөн, иш татвал, бид алдаа гаргасан. Kik, хорин таван хувь: хуульч биш, патентын төлөөлөгч, Kik аль хэдийн ашиглахгүй гэж шийдсэн нэрний талаар хуульчдыг хаалганд ирнэ гэж амласан. Хамаарлын дадал, арван таван хувь: арван нэгэн мөр кодоор бичихээсээ илүү npm-ээр суулгасан бүх хүмүүс.
2:06 үсгээр бичихээсээ илүү. Үүнд Kik ч багтсан, тэдний бүтээцүүд ч гэсэн тасалдсан. Алдалтын цар хүрээ: хоёр зуун далан гурван багц татагдав, тэдний нэг нь сард хоёр хагас сая удаа татагддаг байсан. Засвар хийхэд хоёр хагас цаг зарцуулсан; функц нь арван нэгэн мөр байсан. Hacker News дээр, "бид програмчлахыг мартсан уу" гэсэн асуулт тавьсан нийтлэл арван долоон зуун оноо авсан бөгөөд ихэнх нь бүтээц нь улаан хэвээр байсан хүмүүсээс байв. Дүгнэлт, дараах шинжилгээ: SHIP IT.
2:26 npm нөөцлөлтөөс сэргээж, маргааш нь дараах шинжилгээг нийтлэв, мөн нэг долоо хоногийн дотор одоо хүртэл хүчинтэй байгаа дүрмийг хэрэгжүүлэв: та хорин дөрвөн цагийн дотор устгах боломжтой, үүнээс хойш та хүнтэй ярих ёстой. Даваа гараг: lockfile-аа коммит хий, хэрэв функц арван нэгэн мөр байвал, энэ нь хамаарал биш, догол мөр юм. Таны ярихыг зөвшөөрөөгүй байгаа үйл явдлыг надад илгээнэ үү, комментаар эсвэл the daily diff dot dev хаягаар. Мөн өнөөдрийн diff энэ байна.
2:48 Би Axrisi-ийн Нико байна. Хариуцлагатай нэгтгээрэй.
Эх сурвалжууд
- 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



