拒絕白嫖,開源項目作者刪庫跑路,數千個應用程序無限輸出亂碼
幾天前,開源庫「faker.js」和「colors.js」的用戶打開電腦,發現自己的應用程序正在輸出亂碼數據,那一刻,他們驚呆了。
更令人震驚的是,開發者們發現,造成這一混亂局面的就是「faker.js」和「colors.js」的作者 Marak Squires 本人。
一夜之間,Marak Squires 主動刪除了「faker.js」和「colors.js」項目倉庫的所有代碼,讓正在使用這兩個開源項目的數千位開發者直接崩潰。
「faker.js」和「colors.js」
faker.js 在 npm 上的每周下載量接近 250 萬,color.js 每周的下載量約為 2240 萬,本次刪庫的影響是極其嚴重的,使用這兩個項目開發的工具包括 AWS CDK 等。
如果在構建和測試應用時,真實的數據量遠遠不夠,那么 Faker 類工具將幫助開發者生成偽數據。faker.js 就是可為多個領域生成偽數據的 Node.js 庫,包括地址、商業、公司、日期、財務、圖像、隨機數、名稱等。

faker.js 支持生成英文、中文等多語種信息,包含豐富的 API,此前版本通常一個月迭代更新一次。faker.js 不僅可以使用在服務器端的 JavaScript,還可以應用在瀏覽器端的 JavaScript。
現在,faker.js 項目的所有 commit 信息都被改為「endgame」,在 README 中,作者寫下這樣一句話:「What really happened with Aaron Swartz?」

Swartz 是一位杰出的開發人員,幫助建立了 Creative Commons、RSS 和 Reddit。2011 年,Swartz 被指控從學術數據庫 JSTOR 中竊取文件,目的是免費訪問這些文件。Swartz 在 2013 年自殺,Squires 提到 Swartz 可能意指圍繞這一死亡疑云。
Marak Squires 向 colors.js 提交了惡意代碼,添加了一個「a new American flag module」,然后將其發布到了 GitHub 和 npm。

隨后他在 GitHub 和 npm 發布了 faker.js 6.6.6,這兩個動作引發了同樣的破壞性事件。破壞后的版本導致應用程序無限輸出奇怪的字母和符號,從三行寫著「LIBERTY LIBERTY LIBERTY」的文本開始,后面跟著一系列非 ASCII 字符:

目前,color.js 已經更新了一個可以使用的版本。faker.js 項目尚未恢復,開發者只能通過降級到此前的 5.5.3 版本來解決問題。
為了解決問題,Squires 在 GitHub 上還發布了更新以解決「zalgo 問題」,該問題是指損壞文件產生的故障文本。

「我們注意到在 v1.4.44-liberty-2 版本的 colors 中有一個 zalgo 錯誤,」Squires 以一種諷刺的語氣寫道。「我們現在正在努力解決這個問題,很快就會有解決方案。」
在將更新推送到 faker.js 兩天后,Squires 發了一條推文,表示自己存儲了數百個項目的 GitHub 賬戶已經被封。Squires 在 1 月 4 日發布了 faker.js 的最新 commit,在 1 月 6 日被封,直到 1 月 7 日推送了 colors.js 的「liberty」版本。然而,從 faker.js 和 colors.js 的更新日志來看,他的賬戶似乎被解封過。目前尚不清楚 Squires 的帳戶是否再次被封。

至此,故事并沒有就此結束。Squires 2020 年 11 月發在 GitHub 上的一篇帖子被挖出來,在帖子中他寫道自己不再想做免費的工作了。「恕我直言,我不想再用我的免費工作來支持財富 500 強(和其他小型公司),以此為契機,向我發送一份六位數的年度合同,或者 fork 項目并讓其他人參與其中。」

Squires 的大膽舉動引起了人們對開源開發者的道德和財務困境的關注,這可能是 Marak Squires 行動的目標。大量網站、軟件和應用程序依賴開源開發人員來創建基本工具和組件,而所有這些都是免費的,無償開發人員經常不知疲倦地工作,努力修復其開源軟件中的安全問題。
開發者們怎么看
軟件工程師 Sergio Gómez 表示:「從 GitHub 刪除自己的代碼違反了他們的服務條款?WTF?這是綁架。我們需要開始分散托管免費軟件源代碼。」

「不知道發生了什么,但我將我所有的項目都托管在 GitLab 私有 instance 上,永遠不要相信任何互聯網服務提供商。」

有網友認為 faker.js 團隊的反應有些夸張了,并說道:「沒有人會用一個只生成一些虛假數據的包賺大錢。faker.js 的確為開發者生成偽數據節省了一些時間,但我們也可以讓實習生編寫類似程序來生成數據。這對企業來說并沒有那么重要。」

甚至有人認為 Marak 這么做是一種沖動行為,不夠理性,并和他之前「賣掉房子購買 NFT」的傳聞聯系起來,認為 Marak 需要學會控制自己的情緒:

這種說法很快帶偏部分網友的看法,有人原本同情開源項目被「白嫖」,但現在已轉向認為 Marak 是惡意刪庫,并指出:「停止維護他的項目或完全刪除都是他的權利,但故意提交有害代碼是不對的。」

當然,也有人為開源軟件(FOSS)開發者的待遇鳴不平:「希望有相關的基金會位 FOSS 開發人員提供資金支持」,而軟件的可靠性和穩定性也是至關重要的。

有人表示:一些大公司確實不尊重開源項目的版權,濫用開源項目對于 FOSS 開發者來說是絕對不公平的。但 Marak 對 faker.js 的做法并不可取,不是正面例子,存在 Marak 的個人負面原因。

對此,你有什么看法?