事情是這樣的:
一名NPM(Nodejs Package Manager)社區(qū)的貢獻者Azer Ko?ulu出于對NPM管理層的怨憤退客,不聲不響刪除了自己在NPM上面的全部代碼呼股,其中就包含只有11行代碼的“Left-pad”矮烹。
沒想到從中國北京到美國硅谷飘哨,從大學宿舍學習Nodejs的新手到Facebook的資深工程師旁壮,整個互聯(lián)網(wǎng)界都炸開了鍋潘拨,他們手中的許多Nodejs模塊蒋畜,全罷工了。
此事的背景:
要理解NPM啄栓,首先就要知道Node.js娄帖。
Node.js是基于Javascript語言的后端編程框架,開發(fā)網(wǎng)站用的語言昙楚,可以理解為PHP的替代品近速。
Node.js最明顯的特征在于,除了使用Javascript語言堪旧,同時還擁有許許多多公用的模塊削葱,都由來自世界各地的開發(fā)者貢獻,這些模塊使用NPM 管理淳梦,NPM就有點像蘋果的App商店析砸,只不過這些模塊都是免費的。
AzerKo?ulu本來是NPM的熱情粉絲爆袍,經(jīng)常為NPM貢獻代碼首繁,其中之一就有個叫Kik的模塊,但是這個模塊可能是功能簡陋陨囊,也可能是知名度不高弦疮,反正用的人很少,沒什么存在感谆扎。巧巧合的是挂捅,剛好有一家公司也叫Kik芹助,是一款類似微信的社交工具堂湖。
Kik 公司也要在NPM社區(qū)用到Kik這個名字,于是就給Azer Ko?ulu發(fā)律師函状土,義正言辭要求他把自己的Kik換成別的无蜂,否則會有律師找上門。
Azer Ko?ulu覺得Kik公司說的很有道理蒙谓,然后拒絕了斥季。
畢竟取名不應(yīng)該先到先得嗎?憑啥你說什么我就信什么,憑什么你要我做啥我就做啥酣倾。而且我又沒做錯什么舵揭,我在剛開始編寫Kik模塊時候并不知道有Kik這個公司。
Kik公司交涉失敗躁锡,直接就向NPM官方投訴了午绳,沒多久,NPM社區(qū)管理員沒經(jīng)過Azer Ko?ulu本人同意映之,就把他在NPM上面的Kik模塊的控制權(quán)交給了別人拦焚。
翻船了:
這下Azer Ko?ulu簡直要爆炸了,對于NPM大失所望杠输,沒想到NPM社區(qū)是這種玩意赎败,保護大公司,漠視個人開發(fā)者蠢甲。
這簡直就是對自己價值觀的奇恥大辱僵刮。
憤怒難抑,Azer Ko?ulu決定復仇鹦牛,他要和NPM決裂妓笙,一下子刪光了自己在NPM上面的所有代碼。其中就包括流行組件“l(fā)eft-pad”能岩。
這個組件只有11行寞宫,功能很簡單,就是在給定的字符串左邊重復插入給定的字符拉鹃,以達到需要的字符串長度辈赋。
事件影響:
這個Nodejs模塊雖然簡單,但是應(yīng)用非常廣泛膏燕,下載量超過57萬次钥屈。
Facebook、Spotify以及Netflix等著名公司大型軟件項目中都用到了Babel這個模塊坝辫,而Bel本來這個模塊又調(diào)用了“l(fā)eft-pad”這個模塊篷就。
同時受影響的還有當今非常著名的React框架,這個框架幫助前端 工程師更便捷地開發(fā)網(wǎng)站界面近忙,全世界同時學習React框架的程序員可能數(shù)百萬竭业,但是突然就都不能用了。
據(jù)NPM官方博客及舍,“l(fā)eft-pad”刪除后未辆, 受到影響的模塊達到數(shù)千個。
這就像飛機的發(fā)動機突然掉了一顆螺絲锯玛,點火時候系統(tǒng)就肯定會報錯咐柜,但是你卻很難定位為題的出處兼蜈。畢竟 Nodejs采用連環(huán)套的設(shè)計思想,你調(diào)用的模塊可能調(diào)用了其他模塊拙友,其他模塊也調(diào)用了自己的其他模塊为狸,一層又一層,代碼量千千萬遗契,定位并修復所有的問題代碼钥平,實在工程浩大。
這場意外迅速在Twitter姊途、以及微博上炸開了鍋涉瘾,眾多網(wǎng)友反應(yīng)React、Babel捷兰、Ember無法使用立叛,數(shù)小時后也有網(wǎng)友反映Babel已經(jīng)推出了緊急修補版。
事情結(jié)果:
意外發(fā)生4個多小時后贡茅,NPM社區(qū)管理員才把“l(fā)eft-pad”這個名字從Azer Ko?ulu手中奪了回來秘蛇,重新寫了一個“l(fā)eft-pad”函數(shù),終于撫平了千萬程序員躁動的心顶考。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?原文轉(zhuǎn)自:http://tech2ipo.com/10028615
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?程序員的復仇:11行代碼如何讓Nodejs社區(qū)雞飛狗跳