程式設計師的復仇:11 行代碼讓 Node 社區雞飛狗跳

2020-12-14 開源中國

兩天前,一名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行代碼而已。

稿源:tech2ipo

相關焦點

  • 程式設計師每天編寫3000行代碼是什麼水平
    每天寫3000行代碼在當前的IT行業內是很難想像的,即使很多早期從事外包開發的程式設計師也很難有這樣的工作效率,大部分程式設計師每天的代碼量都在幾百行左右,研發級程式設計師一天的代碼量通常不會超過300行,應用級程式設計師的代碼量也很少能夠突破500行。
  • 11個代碼質量審核和管理工具,程式設計師收藏
    11個代碼質量審核和管理工具,程式設計師收藏 如今,代碼質量分析和審核已成為每個企業的基本流程。隨著開原始碼庫使用的增加,安全性和代碼質量對於構建高質量軟體至關重要。不良的代碼不僅會影響代碼的可維護性,而且還會在某些情況下影響其性能。
  • 程式設計師一天工作量改了5行代碼,工作很輕鬆?
    領導安排張工跟進,接到任務,張工第一時間就是想重現這個問題,可是怎麼也復現不了,費了九牛二虎之力,終於從上萬行代碼中定位到問題所在,最後張工修改了5行代碼,問題解決了。這時已經快下班了。張工伸了一下懶腰,這時財務漂亮妹子過來了,找張工確認交通費用報銷的事情,見張工懶羊羊的。
  • IT行業裡,好的程式設計師一天應該寫多少行代碼?
    今天大概寫了4個函數,昨天寫了5個函數,每個函數大概20行左右吧,都快累死了~~~也不知道和優秀的程式設計師差多少。不知道大家每天都寫多少~~~~1樓曾經有個專家說,每天精華代碼是1行。誇張了。邏輯複雜的代碼,80行,你已經算高效的了。
  • 我開始討厭node.js了
    擁抱JavaScript2014年,我從一個半吊子c#程式設計師轉速前端,突然就愛上了JavaScript,感覺好像一顆被c#束縛已久的心終於解放了,js那种放蕩不羈愛自由的操作領悟神魂顛倒,我感覺自己擺脫了那些過度封裝的程序,所有的代碼都盡在掌握之中,那種感覺說不出的爽。
  • Node.js之自動發送郵件 | 僅二十行代碼即可
    mailOptions, (error, info) => {    if (error) {        return console.log(error);    }    console.log('郵件發送成功 ID:', info.messageId);});總共才 20 來行的代碼到底行不行呢
  • Node.js 學習資料和教程(值得收藏)
    的區別Node.js http 管道拒絕服務漏洞Node.js高級編程  業界新聞看eBay如何評價他們的Node.js首次嘗鮮程式設計師如何說服老闆採用百萬級並發 Node.js也能行高性能Node.js:來自LinkedIn Mobile的10條優化建議Kraken:改變PayPal開發文化的Node.js框架Groupon拋棄Rails,轉向
  • MySQL 創始人:寫代碼比打遊戲爽,程式設計師應多泡開源社區
    但對於千千萬萬無論好壞的程式設計師來說,只有一個Monty Widenius。Monty是一位編程天才。19歲的時候,他從赫爾辛基理工大學輟學開始全職工作,因為大學已經沒有什麼東西可以教他了。在獨自一人寫完除了一個庫以外的全部代碼之後,33歲時,他發布了MySQL,後來後者成為了全世界最流行的開源資料庫。55歲時,他藐視著對老年人的歧視,仍然是自己公司最好的程式設計師。
  • 1024程式設計師節,向用代碼改變世界的程式設計師致敬!
    在計算機的二進位世界裡,1024是一個有特殊意義的數字,而程式設計師們就像是這一個個1024,以最低調、踏實、核心的功能模板一點點地搭建起網際網路世界。1G=1024M,而1G與1級諧音,也有一級棒的意思。程式設計師,一群用鍵盤改變世界的人,加班、熬夜、996對他們來說都是常態,格子衫是他們的時尚裝扮,代碼表白是他們能想到最浪漫的事。
  • 程式設計師將一萬五千行代碼精簡到四百行,卻讓10多個人丟了工作
    代碼寫得多反而代表編程能力差?網上一個網友曬出了自己同事寫的代碼,語氣透露出一絲不滿:稍微放大看看:可以看到,這是一段蠻長的Java代碼。一個應屆生甚至評論道,自己用三行搞定的東西,非得用三十行來寫,可讀性非常差。
  • 解放號發布2018代碼數據報告,10億行致敬程式設計師
    1月19日,中軟國際高級副總裁居琰博士在2019年中軟國際解放號嘉年華上發布了《2018解放號代碼數據報告》。報告顯示,解放號企業級項目代碼託管總行數10億行,總長度可以繞地球3.7圈。此外,報告還顯示Java、C#開發的代碼數總和接近平臺託管總量的80%;約佔25%的代碼提交時間是在23點到凌晨1點,這也意味著夜深人靜時,程式設計師們仍在辛苦付出。居琰博士詳細解讀了該數據報告。他講到,解放號自2015年初面向企業級項目推出代碼託管服務,為平臺線上交易、軟體項目交付提供代碼保險箱及配套服務。
  • 日常充電:教你成為程式設計師中的寫作大師
    據我的經驗看,程式設計師都是相當不錯的作家。當然,出於工作原因,我編輯過許多文章。我覺得如果不能用多種方法來改善原文,便沒有工作的感覺。然而,就算程式設計師的文章有許多語法錯誤,文章的框架和組織結構仍十分出彩。顯然,計算機語言的知識為英文寫作提供了更為邏輯系統的方法。話雖如此,程式設計師還是經常會在寫作的一些點上遇到問題。
  • 為啥國內程式設計師寫的代碼也用英文注釋?
    國內的一些程式設計師寫代碼用英文進行注釋,我覺得是他們編程之路上的一大重要進步。中國編程技術現在需要與國際接軌,而且國內很多程式設計師也喜歡更多了解程式語言的開原始碼,使用英文注釋會讓國內程式設計師在全球技術社區中形成廣泛共識和合作,從而使國內程式設計師能夠實現快速成長。
  • 大學生用三行代碼寫「程式設計師情詩」
    近日,南京航空航天大學計算機科學與技術學院舉辦的「程式設計師情詩」創意三行代碼挑戰賽完美落幕,工科男生們用程序和代碼表達自己的愛。  「其實這樣的比賽形式也是借鑑了三行情詩,不過我們與專業知識聯繫更緊密,這既展示了工科男生的浪漫情懷,又增強了同學們學習程序設計語言的積極性,」南京航空航天大學計算機科學與技術學院段然老師告訴記者。
  • 嫁給程式設計師有什麼好處?程式設計師新郎接親,被要求現場寫代碼告白
    很多人一談到程式設計師,是不是都覺得他們搞開發的,一定是非常聰明,鐵飯碗,工資很高,是不是都覺得程式設計師棒棒的,好崇拜,好羨慕,如果談到結婚,你會選擇嫁給程式設計師嗎?近日程式設計師新郎接親,被要求現場寫代碼告白,你知道嫁給程式設計師有什麼好處嗎?
  • 對程式設計師來說最難的是寫代碼嗎?
    相信看到這個標題的同學們都有自己的想法,可能剛剛進入這個行業的同學們會非常認同寫代碼就是程式設計師的主要工作,然而當你工作一定時間之後,寫代碼將變得不是那麼「重要」了,在悟空問答中眾位大咖為這個問題提供了多種多樣的答案:    答案一:寫代碼是程式設計師最主要工作,但是卻不是最難的工作,最難的是踢皮球和吵架!
  • 1024程式設計師節,不寫代碼還能寫啥
    在二進位構築的計算機世界裡,2的10次方1024可能是程式設計師最有感情的數字,1GB =1024MB,1MB =1024KB,1KB=1024B,而且10月24日這個日期非常直觀。程式設計師就像是一個個1024,以最低調、踏實、核心的功能模塊一步步搭建起程序的世界。
  • 專訪邱俊濤:高級JavaScript程式設計師代碼應結構清晰、模塊化良好
    高級JavaScript程式設計師,應能編寫出有規模、模塊化良好和結構清晰的代碼CSDN:閉包(Closure)可以說是JavaScript的一個難點,能夠熟練使用閉包也是邁向高級JavaScript程式設計師的必經之路,你能不能和大家分享下閉包學習和平時應用閉包的一些經驗和心得?
  • 《近匠》程式設計師客棧,程式設計師背後的經紀人
    市場上程式設計師方向現在做得最好的產品有三類:一個是各種工具,包括代碼託管、某種技術工具服務等;二是網際網路垂直招聘,包括新興的程式設計師拍賣;三是深度討論社區,技術問答社區。目前市面上還沒有一款專注到程式設計師人群本身,為他們帶來價值的產品。我們就是做的這個,所以價值大! CSDN:那麼程式設計師客棧與其他外包平臺相比有哪些不同?
  • 程式設計師的代碼行數越少越好?
    代碼行數越少越好?讀懂別人的代碼很困難?如何編寫出「完美」的代碼?每天要堅持8小時編程?......拜託,這些編程誤區程式設計師應該儘早知道!很長一段時間裡,我一直以為自己不善於閱讀別人的代碼。隨著時間的流逝,我意識到幾乎每個程式設計師每天都在為閱讀別人的代碼而苦惱。閱讀別人的代碼就像學一門外語。即使你很熟悉某種語言,但仍然需要使用別人的不同風格以及體系結構。而且我們一般都會假設寫代碼的人貫徹了一致性和可靠性,但有時並非如此,這確實是一個很難克服的問題。但是我發現了很多有幫助性的技巧。