天天看點

程式員的複仇:11 行代碼讓 Node 社群雞飛狗跳

程式員的複仇:11 行代碼讓 Node 社群雞飛狗跳

一名npm(nodejs package manager)社群的貢獻者azer koçulu出于對npm管理層的怨憤(詳情),不聲不響删除了自己在npm上面的全部代碼,其中就包含隻有11行代碼的“left-pad”,沒想到從中國北京 到美國矽谷,從大學宿舍學習nodejs的新手到facebook的資深工程師,整個網際網路界都炸開了鍋,他們手中的許多nodejs子產品,全罷工了。

雖然npm管理者在危機發生後采用強制重新編寫釋出了azer koçulu的代碼,但是這次npm風波無疑意義深遠。

要 了解npm,首先就要知道node.js。node.js是基于javascript語言的後端程式設計架構,開發網站用的語言,可以了解為php的替代品。 node.js最明顯的特征在于,除了使用javascript語言,同時還擁有許許多多公用的子產品,都由來自世界各地的開發者貢獻,這些子產品使用npm 管理,npm就有點像蘋果的app商店,隻不過這些子產品都是免費的。

azer koçulu本來是npm的熱情粉絲,經常為npm貢獻代碼,其中之一就有個叫kik的子產品,但是這個子產品可能是功能簡陋,也可能是知名度不高,反正用的人很少,沒什麼存在感。巧巧合的是,剛好有一家公司也叫kik,是一款類似微信的社交工具。

kik 公司也要在npm社群用到kik這個名字,于是就給azer koçulu發律師函,義正言辭要求他把自己的kik換成别的,否則會有律師找上門。azer koçulu覺得kik公司說的很有道理,然後拒絕了。畢竟取名不應該先到先得嗎?憑啥你說什麼我就信什麼,憑什麼你要我做啥我就做啥。而且我又沒做錯什 麼,我在剛開始編寫kik子產品時候并不知道有kik這個公司。

kik公司交涉失敗,直接就向npm官方投訴了,沒多久,npm社群管理者沒經過azer koçulu本人同意,就把他在npm上面的kik子產品的控制權交給了别人。

這下azer koçulu簡直要爆炸了,對于npm大失所望,沒想到npm社群是這種玩意,保護大公司,漠視個人開發者。這簡直就是對自己價值觀的奇恥大辱。

憤怒難抑,azer koçulu決定複仇,他要和npm決裂,一下子删光了自己在npm上面的所有代碼。其中就包括流行元件“left-pad”。這個元件隻有11行,功能很簡單,就是在給定的字元串左邊重複插入給定的字元,以達到需要的字元串長度。

這 個nodejs子產品雖然簡單,但是應用非常廣泛,下載下傳量超過57萬次。facebook、spotify以及netflix等著名公司大型軟體項目中都用 到了babel這個子產品,而bel本來這個子產品又調用了“left-pad”這個子產品。同時受影響的還有當今非常著名的react架構,這個架構幫助前端 工程師更便捷地開發網站界面,全世界同時學習react架構的程式員可能數百萬,但是突然就都不能用了。據npm官方部落格,“left-pad”删除後, 受到影響的子產品達到數千個。

這就像飛機的發動機突然掉了一顆螺絲,點火時候系統就肯定會報錯,但是你卻很難定位為題的出處。畢竟 nodejs采用連環套的設計思想,你調用的子產品可能調用了其他子產品,其他子產品也調用了自己的其他子產品,一層又一層,代碼量千千萬,定位并修複所有的問題 代碼,實在工程浩大。

這場意外迅速在twitter、以及微網誌上炸開了鍋,衆多網友反應react、babel、ember無法使用,數小時後也有網友反映babel已經推出了緊急修補版。

以外發生4個多小時後,npm社群管理者決定出手,把“left-pad”這個名字從azer koçulu手中奪了回來,重新寫了一個“left-pad”函數,終于才撫平了千萬程式員躁動的心。

這 次意外發生後,衆多開發者開始懷疑npm的管理能力,龐大的nodejs社群竟然危機四伏,今後如果有貢獻者誤操作或密碼被盜,全世界無數的nodejs 開發者瞬間無法工作。同時也有人開始懷疑npm的設計哲學,為什麼不設計官方标準庫,而是把十來行,甚至隻有1行的代碼設計成獨立的子產品。比如有個叫 isarray的子產品,下載下傳量達到88萬次,其實隻有1行代碼而已。

====================================分割線================================

繼續閱讀