「最初,沒有人在意這場災難,這不過是一場火山,一次海嘯,一個物種的滅絕,一座城市的消失,直到這場災難和每個人息息相關......」如同一場火山爆發給人類帶來的預警,作為一款明星開源項目的作者,自毀代碼刪庫跑路這件事,或許是2022年開發界一次全新變革的開始。
這幾年裡,開源熱潮席捲全球,在代碼託管平台Github上,來自世界各地的優質開源項目層出不窮,軟件開發效率和質量得到顯著提升。
無論是國內外科技巨頭還是個人開發者,紛紛投身其中,高舉開放、協作、共享的大旗。
開源的確在幫助這個世界變得越來越好,但另一方面,開源項目背後仍有大量的維護者處於水深火熱之中。
去年年底,全球知名開源日誌組件Apache Log4j2被曝「核彈級」高危漏洞,幾乎所有行業都受到波及。
這個漏洞的出現,也撕開了開源光鮮亮麗的外表下的殘酷事實:
當有人使用開源項目時,他們會對作者充滿感激。
然而一旦這個項目出現Bug,它背後的開發者便會遭到如潮水一般猛烈的罵聲——哪怕這是沒有任何酬勞的工作。
那麼,在沒有報酬的情況下,有多少人能夠在業餘時間堅持維護這些開源項目呢?
Apache Log4j 2漏洞爆發過去一個月後,又一位知名開源項目的作者用行動做出了回答。
今年1月上旬,開源工具Faker.js和Colors.js的作者Marak,在沒有任何徵兆的情況下,突然將Faker.js項目倉庫的所有代碼清空了。
他在commit中留下了「endgame」字樣,並且在README中寫道,「What really happened with Aaron Swartz?」
(註:Aaron Swartz曾建立Creative Commons、RSS和Reddit,在2011年被指控非法入侵MIT和學術數據庫JSTOR以竊取文件,於2013年自殺。)
值得注意的是,Faker.js上一個版本依舊可以下載,版本號卻被改為了在西方中代表惡魔的數字6.6.6。
另一個倉庫Colors.js的代碼雖然沒有被清空,但Marak也在v1.4.44-liberty-2版本中添加了一個「new American flag module」。
新的代碼中引入了一段無限循環,會讓所有使用了Colors.js的程序都在控制台無休止地打印各種非ASCII字符的亂碼。
數萬個使用了這兩個開源項目的應用一夜之間要麼「變磚」,要麼不斷輸出滿屏亂碼。
Marak的刪庫行為,無疑往整個開源社區扔了顆威力驚人的大「炸彈」,無數人都不敢相信這一事實。
對於前端開發者而言,應該對Faker.js和Colors.js並不陌生了。
它們是前端工程中非常火爆的開源倉庫,被很多公司和個人在生產環境中深度使用。
Faker.js提供了各種類型的模擬數據,用於開發調試,周下載量高達兩百萬多萬,且多次進入Github日榜前三。
而Colors.js則是一款基於Node.js Console命令行參數神器,用於終端着色colors插件,每周下載量約2314萬。
Marak這番令人匪夷所思的操作,令大家疑慮頓生:明明花費了多年心血打造的兩個項目,為什麼會突然選擇自己毀掉這一切?
據了解,Marak這些年的確投入了大量精力和時間來維護這兩個項目。
但因為它們使用的是十分寬鬆的MIT開源許可協議,所以即使被拿來商用,也不用向作者支付任何費用。
通俗來講就是「白嫖」,所以Marak的獲益非常少。
隨着開源項目規模的不斷增大,Marak也需要投入更多精力來對其進行維護。
但有一個前提,那就是只有在他自己能保證足夠生存的條件下,這一切才能順利進行。
壓倒駱駝的最後一根稻草,或許是2020年9月Marak遭遇的一場火災。
當時,Marak的公寓失火,所有財產幾乎被全部燒毀,在身無分文且處於無家可歸的狀態下,Marak在推特上發布求助信息。
他公布了自己的PayPal賬號,請求網友們給他提供捐助。
可能是網友們捐助的金額難以維繫生活,2020年11月,Marak在GitHub上發文,譴責大型公司使用其Faker.js開源項目卻不支付費用的行為。
Marak表示,如果這些公司不支付費用,那麼就fork項目自行維護,因為他不再打算為任何人提供無償的維護工作了。
於是,在兩個月後,Marak兌現了他的「承諾」。截至賬號被封之前,他在GitHub上已經有90多個開源項目。
事情爆發後,全球上萬個項目的開發者在忙於修復工作的同時,也對Marak的行為進行了激烈的辯論。
有人認為,Marak的行為太不負責任,如果不想免費維護,那一開始就不要發布出來。
也有人認為,從GitHub刪除自己的代碼是每個用戶的權利,Marak有權對他維護的項目進行任何處置。
還有人直言,大公司憑什麼能從別人的無償勞動中賺到一大筆錢,這本來就不公平。
毫無疑問,這起事件再次引起了人們對於開源開發者生存現狀的關注。
在現實中,大量網站、軟件和應用依賴於免費的開源項目。
而開源項目維護工作是一項長期且艱巨的任務,大到新建功能、修復Bug,小到把控代碼質量。
可以說,作者參與得越多,用戶對項目的要求就越多。
素不相識的伸手黨,會因為你沒有及時回答問題而開罵;
下班後只想好好休息,但手機和電腦上會有消息不斷提醒有多少人在等着你解決問題;
當你熬夜爆肝做出來的成果,被別人使用後賺得盆滿缽滿,而你除了不斷上漲的star數,再也收穫不到任何利益......
久而久之,曾經全力以赴創建這個項目的快感,大概只會消失得無影無蹤。
根據去年Tidelift發布的調查報告顯示,近50%開源項目維護者拿不到任何報酬。
而年收入在1000美元(約等於6300元人民幣)以上的維護者僅占16%。
在「為什麼選擇持續維護開源項目」這一問題中,71%的開發者選擇了「享受能夠對世界產生積極影響的感覺」。
也就是說,開源帶來的物質上的收益不多,大多數開發者們都是在成就感的激勵下堅持下去的。
除了Faker.js和Apache Log4j2外,還有許多開源項目的開發者,也正處於類似的尷尬處境。
去年11月,有用戶向蘋果請求更新macOS 12中與Curl有關的信息,結果蘋果直接回復用戶讓他自行聯繫Curl的開發者。
為此,Curl創始人發言諷刺稱:「一家市值萬億美元的公司將各種開源組件組合在一起,每年可從中獲利數十億美元。當用戶就其提供的產品尋求幫助的時候,這家公司反而將用戶推給開源項目。這個開源項目是志願者運營和維護的,而這家公司(蘋果)從沒有贊助過一分錢。」
眾所周知,除了Linux等大型項目外,大多數開源項目都只是由一個小團隊甚至單個開發者在進行維護,工作量自然不言而喻。
Marak的這件事應該給所有人敲響警鐘:任何一個能夠堅持更新和維護的開源項目,背後都一位值得尊敬的程序員,給予他們必要的贊助是非常值得鼓勵的行為。
無論如何,開源不易,還是得相互理解與支持,才能走得更遠。
溫馨提示
關注【擴展迷Extfans】
閱讀更多精彩內容