1. 程式人生 > >網際網路幾乎崩潰,來自程式設計師之怒!只苦了那些web開發程式猿

網際網路幾乎崩潰,來自程式設計師之怒!只苦了那些web開發程式猿

您可能從來沒有聽說過,但是在2016年3月23日,網際網路幾乎崩潰了。

當憤怒的程式設計師決定清除託管在名為npm上的JavaScript 註冊列表中所有的程式碼時,搭建起網際網路的大量軟體都崩潰了。

這聽起來不是什麼大不了的事——畢竟,程式碼總是處於被刪除然後重新上傳更新的狀態——但由奧克蘭的開發者AzerKoçulu所建立的這一組11行程式碼的包,恰好是簡單但應用範圍極其廣泛的工具。 Facebook、Netflix和Airbnb等公司的正常執行都依賴於它。

在這裡插入圖片描述

Github via Quartz

問題得到了及時的解決,對於我們絕大多數使用者來說,由於瀏覽器快取,我們不會注意到任何的異常。

但對於Web開發人員來說,這是一場短暫的噩夢,每秒都有數千個模組崩潰。當時有一位開發人員在github論壇上寫道:“全網都崩潰了啊”。

那麼為什麼刪除這麼一小段程式碼就像多米諾骨牌一樣推倒了網際網路的其他部分呢?首先,在構建程式時,有許多現成的模組和工具可使過程更快更簡單。

Javascript模組最大型的登錄檔其實是一家名為npm的開源平臺,它有點像開發人員的App商店。他們在上面查詢他們想要的功能,然後把找到的相關功能的程式碼地址新增到本地的引用中。格式諸如npm.****,開發工具內建的功能自動呼叫其中的程式碼。

模組中最受歡迎的是Koçulu的11行的’left-pad’模組——一個簡單到令人驚訝但又非常有用的程式碼片段。事實上,整個開發社群甚至都沒有意識到之前幾乎所有人都引用了這段程式碼。

“如果開發人員呼叫npm模組,軟體編譯器只會在時機成熟時下載程式碼並執行,而不是下載之後儲存到本地上。”科技記者Matt Weinberger解釋道。

我們在這裡談論的是知名的矽谷企業。正如Weinberger的報道,Facebook,Netflix和Spotify依賴left-pad包更快地執行程式碼編譯器Babel,以及幫助開發人員構建介面更為友好的React——Facebook 的內部專案,最初用來架設Instagram 。

npm模組大部分時間都執行得很好——除非當前模組被刪除,這就是Koçulu所做的事情。

為了開源社群的榮耀,在10分鐘內,其他人就釋出了功能完全相同的替補版本,這解決了一些問題,但並非全部。

面對如倒下的多米諾骨牌一樣的連鎖崩潰,npm採取了前所未有的措施,從備份中還原了被刪除模組,從而在根本上解決了問題。

但此舉引發了程式設計人員的強烈反對和關於npm社群使用者權益問題的激烈爭論。

回到開頭,為什麼Koçulu刪除了自己的模組?正如他在一篇文章中所解釋的那樣,這一切都是因為與通訊公司Kik之間的糾紛——Koçulu正在編寫的模組,也命名為kik。

該公司希望他更改模組的名稱,以便他們可以推出自己的產品,但他拒絕了,導致兩方之間發生了激烈的口角——通過電子郵件。

最終,npm平臺捲了進來,卻不是與他們的開發人員站在一起——他們同意,為了全社會更廣泛的利益,kik歸屬於Kik公司會更有意義。

該決定使Koçulu異常惱火,並向平臺管理者傳送了一封電子郵件說:

“我很多年前就是平臺的使用者,也是社群的貢獻者,並且萬萬沒想到你們會支援公司的專利律師威脅我這樣的開源貢獻者……心寒了,我希望刪除我貢獻的所有程式碼,包括我的帳戶。我不想成為npm的一部分,如果你們做不了,請告訴我該如何做。我想我有權從npm上刪除我的東西。”

幾個小時後,npm同意了他的要求,刪除了他在npm註冊的所有273個模組。但由於所有人都只看到kik,沒有人意識到隨之而來的是什麼。

Koçulu此後曾向他的模組使用者道歉,但始終堅持他最初的決定。

這裡推薦一下我的前端學習交流群:731771211 裡面都是學習前端的,如果你想製作酷炫的網頁,想學習知識。自己整理了一份2018最全面前端學習資料,從最基礎的HTML+CSS+JS到移動端HTML5到各種框架都有整理,送給每一位前端小夥伴,有想學習web前端的,或是轉行,或是大學生,還有工作中想提升自己能力的,正在學習的小夥伴歡迎加入學習。 點選:加入