一個憤怒的開發人員是如何打破javascript的

美國東部時間週二下午5:30左右,JavaScript崩潰。更具體地說,npm,大多數JavaScript開發人員用來原始碼、測試和準備釋出程式碼的包管理器,開始失敗。對於全世界成千上萬的開發人員來說,工作流中最重要的工具是行不通的。...

美國東部時間週二下午5:30左右,JavaScript崩潰。更具體地說,npm,大多數JavaScript開發人員用來原始碼、測試和準備釋出程式碼的包管理器,開始失敗。對於全世界成千上萬的開發人員來說,工作流中最重要的工具是行不通的。

007Ys3FFgy1gq5ozatelij33402c04qu

不久之後,一個名為“npmjs.org告訴我left pad不可用(404頁)”的新版本在一個鮮為人知的GitHub儲存庫上被開啟:azer/left pad。幾十個開發人員很快加入了這個問題,幾分鐘之內他們就發現了這個問題:azer已經從npm“取消釋出”了他的“左鍵盤”程式碼。

左pad是一個小碼位,稀疏11行。基本上,它是一個JavaScript函式,它接受一個字串,併在左邊新增一個您選擇的“填充”字串。

他們工作流程中最重要的工具不起作用

Npm是關於在其他包的基礎上構建的包的,這就是為什麼left pad到處都是。據npm統計,left pad在上個月已經安裝了2550569次,主要是作為一個名為“行號”的軟體包的一部分,該軟體包將行號新增到文字中。除了許多其他專案外,“Babel”包中還包含行號,這反過來又打破了依賴Babel的數千個JavaScript專案。

所有Azer Koç烏盧要做的就是推第一塊多米諾骨牌。用GitHub使用者laurenaiad的話說(她收到了63頂派對禮帽,27個豎起的大拇指,4個微笑,3個豎起的大拇指,還有3顆心作為她的評論):

“這種方式剛剛打破了網際網路。”

什麼是npm?

在許多方面,JavaScript一直是軟體世界的西部。就像它的兄弟web技術CSS和HTML一樣,JavaScript一直受到瀏覽器供應商的奇思妙想的影響,他們訓練開發人員進行防禦性編碼。由於沒有單一的JavaScript“真相”來源,開發人員傳統上依賴第三方庫來消除瀏覽器之間的差異。

JavaScript庫還填補了該語言的另一個空白:缺乏標準庫。傳統上,像“left pad”這樣的函式都是由語言作者提供的——大公司支援的語言,比如微軟的C#、谷歌的Go、Mozilla的Rust和蘋果的Swift,都有很大的、花哨的標準庫,裡面充滿了常用的函式,所以開發者不必從頭開始寫所有的東西。JavaScript開發人員從來沒有任何易於訪問的程式碼庫可以依賴。。。直到npm出現。

Npm允許開發人員輕鬆地將程式碼塊匯入到他們的專案中。比如,如果我想留下一些東西,我可以直接打字

npm install left-pad

進入命令列,現在我可以左墊我的心。

反過來,如果我認為我已經編寫了一些其他人可能會覺得有用的JavaScript,我可以把它貼在GitHub上併發布在npm上,這樣其他人就可以在自己的專案中輕鬆地使用它了。

談談巴貝爾

Babel是近年來最著名的npm軟體包之一。透過npm在您的開發機器上安裝它,您可以編寫ES6(也稱為ES2015)——當前瀏覽器僅部分支援的最新和最好的JavaScript版本——並將其轉換為相容的、可在任何地方執行的ES5。巴貝爾是由塞巴斯蒂安麥肯齊,誰是一個無聊的高中生在澳大利亞時,他開始了這個專案。他現在為Facebook工作。

在過去的一個月裡,Babel已經安裝了749195次,並且已經被構建到React Native的核心中,React Native是Facebook用JavaScript構建移動應用程式的新框架,因此可以肯定的說,Babel及其化身是行號和left pad廣受歡迎的主要原因。

根據Babel自己的網站,Babel基本上無處不在:Facebook、Netflix、PayPal、Yahoo、Spotify、Reddit、Slack、LinkedIn、GoDaddy、Squarespace。。。它很受歡迎。

由於左墊不見了,巴貝爾無法安裝

我甚至不知道巴貝爾用行號函式做什麼,但這並不重要。重要的是,Babel包將行號包宣告為“依賴項”,將left pad宣告為依賴項。由於左墊不見了,巴貝爾無法安裝。

所以,當這個11行的小包裝打破了巴貝爾,巴貝爾打破了一切,人們註意到。

左派的作者

阿澤爾科çulu是一個多產的開源軟體的作者,大部分都是左撇子:提供簡單JavaScript功能的小型單服務npm包。Npm按照先到先得的原則給作者提供包名,Azer有一堆,確切地說是273個。舉幾個例子:“rnd”,一個隨機數發生器strip,“一個去掉HTML標簽的函式;和“隨機顏色”,它生成隨機的RGB顏色,自然地,依賴於rnd。

他還不起眼地擁有“Kik”這個名字,這是為了幫助開發人員從命令列簡單輕鬆地啟動新專案而構建的一個更複雜的開源專案。

這就是所有這些戲劇性的開始。你可以在這裡讀到艾澤爾的故事。基本上,這家名為Kik的簡訊應用公司透過律師聯絡了Azer(Kik說它實際上是一家專利代理),告訴他從npm中刪除Kik包。他拒絕了,公司繼續聯絡npm,npm同意了他的要求,並轉讓了“Kik”軟體包名稱的所有權。雖然npm是一個開源專案,但它主要由一傢俬人公司開發和維護:npm,Inc。

Azer在媒體上寫道(強調):

This situation made me realize that NPM is someone’s private land where corporate is more powerful than the people, and I do open source because, Power To The People.

阿澤的反應是取消(或“解放”)所有模組從npm。

後事

畢竟只有11行。同樣,開源JavaScript的狂野性也讓Azer取消了釋出如此廣泛的影響,這使得其他開發人員可以在數小時內突然襲擊並解決問題。您可以在最初提出問題的GitHub執行緒中自己跟蹤操作。巴貝爾刪除了對行號的依賴,併發布了一個更新版本,npm最終在Azer佔用的同一個插槽中重新釋出了左pad程式碼。Npm還將Azer的所有其他Npm模組名稱都集中在一起,以確保沒有人可以向它們上傳惡意程式碼。

如果Reddit和Hacker新聞的評論是任何跡象的話,那麼Azer的行為會引起很多人對當前JavaScript最佳實踐的質疑。矽谷“快走,打破現狀”這句格言的經典後續就是“慢下來,解決你的問題”

“慢點,修好你的屎。”

具有諷刺意味的是,Kik自己的軟體構建過程受到了left pad未釋出的影響,Kik的Messenger負責人Mike Roberts第二天在自己的媒體帖子中解釋了這一點。邁克試圖給出故事中Kik的一面,並公佈了Azer、Kik和npm之間的整個電子郵件鏈。Mike稱在npm上獲得Kik的名字是一個“禮貌的請求”,目的是釋出Kik一直在做的開源專案,但他釋出的電子郵件確實威脅到律師。

Npm也發表了自己關於這次慘敗的部落格文章。它堅持自己的決定轉移Kik名稱,因為它的名稱爭議政策優先考慮使用者的可預測性。它還研究了一些方法,如果一個包會破壞其他包的話,就更難取消釋出它。然而,npm的帖子上的評論並不樂觀。大多數開發人員似乎覺得Azer被扔到了車下,他們中的許多人已經在討論尋找一個npm替代品。

在整個故事中,Azer、Kik和npm,Inc.宣佈了對開源和JavaScript的堅定承諾。它們只是各自有一種稍微不同的表現方式。

  • 發表於 2021-05-04 00:13
  • 閱讀 ( 39 )
  • 分類:網際網路

你可能感興趣的文章

蒸汽試圖阻止仇恨審查轟炸遊戲

...是為了減少評論轟炸對某些標題的影響。它希望透過增加一個柱狀圖來實現這一點,這個柱狀圖顯示了遊戲生命週期中正面和負面評論的比例。 ...

  • 發佈於 2021-03-13 02:20
  • 閲讀 ( 57 )

7所有網站開發人員都應該知道的程式設計技巧

... 三。javascript(js) ...

  • 發佈於 2021-03-15 10:16
  • 閲讀 ( 60 )

程式設計與web開發:有什麼區別?

...正的程式語言)來定製文字的顯示方式。然後,他們使用JavaScript進行客戶端工作(比如檢查登入時是否將password欄位留空),使用PHP進行伺服器端行為(比如搜尋使用者輸入的術語)。當然,在web開發中也會用到其他語言,比如...

  • 發佈於 2021-03-15 15:29
  • 閲讀 ( 48 )

如何選擇正確的web程式語言

...網路程式設計中尤其如此。主要有以web為中心的語言(如JavaScript)以及通用語言(如Java)。我們將集中討論您應該問自己的問題,以確定要使用的正確web程式語言。 ...

  • 發佈於 2021-03-16 01:36
  • 閲讀 ( 68 )

透過我的5門頂級課程真正學習javascript

... 你為什麼不學JavaScript? ...

  • 發佈於 2021-03-17 09:52
  • 閲讀 ( 64 )

10種最常見的程式設計和編碼錯誤

... 我應該用JavaScript在我的應用程式中編寫程式碼,還是應該使用類似的框架節點.JS還是快車?我應該使用Python、Scala還是Ruby進行開發?C還是C++?哪種框架最好?對於資料庫,我應該...

  • 發佈於 2021-03-18 04:48
  • 閲讀 ( 56 )

憤怒消費者的6個最佳投訴網站

...許你甚至通知了經理或****代理,結果卻被忽視了。作為一個憤怒的消費者,你想在網上釋出評論或投訴。 ...

  • 發佈於 2021-03-18 12:02
  • 閲讀 ( 51 )

前端與後端web開發:哪條路適合您?

... 前端程式碼應該是現代HTML、CSS和JavaScript的專家。 ...

  • 發佈於 2021-03-18 15:23
  • 閲讀 ( 47 )

使用以下10個基本工具提升您的web開發技能

...發的線上社交開發環境。標準CodePen視窗只關注HTML、CSS和JavaScript的各種風格,是進行實驗和分享想法的最佳場所。 ...

  • 發佈於 2021-03-20 14:01
  • 閲讀 ( 52 )

最糟糕和最難避免的程式語言就像瘟疫一樣

... 三。javascript語言 ...

  • 發佈於 2021-03-21 17:33
  • 閲讀 ( 55 )