热门问题
时间线
聊天
视角

npm left-pad事件

2016年的軟體開發事件 来自维基百科,自由的百科全书

Remove ads

2016年3月22日,軟體工程師阿澤爾·科丘盧(Azer Koçulu)刪除了他在npmJavaScript包管理器)上發布的left-pad。Kik Interactive公司希望讓科丘盧更改kik包的名稱,但二者發生爭執。後npm公司強行變更了kik包的所有權。作為回應,科丘盧刪除了自己開發的left-pad等包 。此舉導致成千上萬依賴left-pad的專案無法構建或安裝,包括Babel轉譯器React網頁框架FacebookPayPalNetflixSpotify在內的許多公司都在其軟體產品中使用了left-pad,因此造成了不少問題。

快速預覽 日期, 地點 ...

該包從npm移除數小時後,npm公司手動恢復了該包。隨後,npm修改了平台相關政策。該事件引起了媒體的關注,並在軟體行業英語Software industry內引發了反響。人們討論通過軟體破壞以推動社會正義的問題,並關注模組化編程供應鏈攻擊的可能性。

Remove ads

背景

Thumb
left-pad從npm移除前的內容

left-pad自由開源JavaScript。發布者阿澤爾·科丘盧(Azer Koçulu)是加利福尼亞州奧克蘭的獨立軟體工程師。該包通過迴圈,在字串前反覆添加指定字元,使之長度符合要求。[1][2]left-pad被認為極其簡單,科丘盧編寫的最終版本中僅包含11代碼(不計空行)。[3][4]

科丘盧在npm上發布了left-pad,npm是Node.js的預設包管理器,Node.js是JavaScript執行環境[5][3]當時,left-pad鮮為人知,但其使用卻極為廣泛:其作為依賴被數千個軟體專案採用,被移除之前下載量超過1500萬次。[6][7]一些JavaScript中的重要專案依賴於left-pad才能工作:轉譯器Babel,支援向下相容JavaScript代碼;模組打包系統Webpack網頁框架ReactReact Native,分別廣泛用於網站行動應用的開發。[8][9][1]

left-pad外,科丘盧在npm上還擁有kik包,這是允許開發者為其專案設定模板的工具。[1]開發了即時通訊軟體Kik Messenger的加拿大公司Kik Interactive認為,科丘盧占有了他們的公司名。[2]2016年3月11日,Kik聘請的專利聯絡人聯絡了科丘盧,要求其放棄對kik包的控制權,理由是公司擁有「Kik」商標[2][10]他在一封郵件中寫道:

我們並不想對(kik包)過於強硬,但「Kik」在全球大多數國家都是註冊商標。如果你確實發布了名為kik的開源專案,我們的商標律師必定會找上門來,封掉你的帳戶之類的——我們別無選擇,必須這麼做,因為商標必須得保護,否則就會失效。我們能不能達成某種妥協,不用律師介入就讓你改個名字?如果我們提供一些補償,能不能讓你改名?[註 1][4]

科丘盧很快回應,拒絕更改專案名稱,並表示:

哈哈哈,真是夠了,你個混蛋。趕緊滾,別再給我發郵件了。[註 2][4]

Kik公司後來再次懇求科丘盧改名,因此科丘盧要求3萬美元賠償,理由是「為了放棄我心愛的專案,忍受一群公司混蛋的麻煩」。[2][1]2016年3月18日,npm公司執行長艾薩克·Z·施呂特(Isaac Z. Schlueter)向Kik Interactive和科丘盧發信,表示kik包的所有權將被手動轉交給Kik Interactive。[1]

Remove ads

移除

科丘盧對npm公司的決定表示失望,並聲明自己不再願意繼續參與該平台。隨後,施呂特向他提供了刪除命令,用以刪除他所有的273個模組。[10]科丘盧在2016年3月22日執行了這個指令,刪除了所有他之前發布的包。[1]left-pad被撤下,不再能在npm上公開訪問,[6]但專案和代碼仍然可以在GitHub上找到。[10]

軟體套件被刪除後,任何嘗試構建或安裝依賴left-pad的JavaScript專案(包括Babel和Webpack)都會遇到404錯誤,致使操作失敗。[1]Meta PlatformsPayPalNetflixSpotify等知名軟體科技公司都在使用這個包。[9]就連Kik Interactive的開發者也因這個包被刪除而遇到構建問題。[1]

刪除後不久,其他開發者開始在專案的Git事務跟蹤管理系統上發布大量回饋、評論、應急修複方案。[8][1]

刪除包一個小時後,科丘盧在Medium上發布文章《我剛剛解放了我的模組》(I've Just Liberated My Modules),解釋了他刪除軟體專案的原因,表示這是為了抗議企業利益對自由和開源軟體的侵蝕。[1]

Remove ads

善後

Babel等開源專案的維護者迅速發布了熱修復,移除了科丘盧刪除的依賴項。[8]npm社群使用者也迅速發布了多個被刪除的同名包,以防止惡意攻擊。[2][4]例如,另一位開發者重新建立了1.0.0版本的left-pad包。但由於科丘盧發布的是0.0.3版本,使用者仍然遇到了問題。[4]

大約兩個小時後,npm從備份中手動恢復了原始的0.0.3版本,回退了刪除操作。[1]npm的技術長勞里·沃斯(Laurie Voss)寫道,儘管公司內部爭論這是否為「正確的決定」,但他們還是「選擇了大多數人的需求」。[11]

後續

反響

npm的社群經理阿什莉·威廉斯(Ashley Williams)代表平台就事件引起的問題向使用者道歉,並表示平台「未能保護社群」。[12]Kik Interactive也為此事道歉,公司訊息部門負責人邁克·羅伯茲(Mike Roberts)在Medium上公開了與科丘盧的郵件往來內容,並認為自己的交流是「一次禮貌的請求」。[9]羅伯茲寫道,他們最初聯絡科丘盧,是希望在npm上發布與科丘盧同名的開源包。[6]科丘盧表示,他為干擾他人的工作感到抱歉,但他認為這樣做「對社群長期利益有益」。[3]

TwitterGitHubRedditHacker News等平台上的使用者對此事有著不同的反應,許多人認為這一事件曾短暫地「讓網際網路癱瘓」。[3][9][10][1]不少人評價了JavaScript開發中「快速迭代、破壞一切」的文化、開源軟體的不可預測性、對模組化編程的過度依賴。[3][9][4]使用者們還對npm強制將科丘盧的包轉交給Kik Interactive的決定表示失望,認為這是法律威脅所迫。[1]

Remove ads

影響

npm改變了其關於已發布包刪除的政策,規定如果包發布超過24小時且至少有一個專案將其作為依賴,包將不能被刪除。[12]

該事件表明,npm包的中斷可能會導致供應鏈攻擊。除了備受關注的left-pad外,不少人迅速接管了其他被刪除的包並注入未知代碼。[8]npm發布了新政策,以防止在類似糾紛中發生惡意接管。[4]然而,該事件仍被作為過度依賴外部貢獻者,導致軟體產品攻擊面增大的例證。[13]科丘盧通過故意自我破壞left-pad來引發社會問題的做法,也被認為是npm等平台上發布抗議軟體(Protestware)的前奏。[7]

參見

註腳

參考資料

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads