機器之心報道
編輯:蛋醬、小舟
「我删我自己的開源項目代碼,需要經過别人允許嗎?」
幾天前,開源庫「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 的個人負面原因。
對此,你有什麼看法?
參考連結:
https://www.kancloud.cn/apachecn/zetcode-zh/1950573
https://zhuanlan.zhihu.com/p/326301266
https://www.reddit.com/r/programming/comments/rz5rul/marak_creator_of_fakerjs_who_recently_deleted_the/
使用NVIDIA Riva快速建構企業級TTS語音合成助手
NVIDIA Riva 是一個使用 GPU 加速,能用于快速部署高性能會話式 AI 服務的 SDK,可用于快速開發語音 AI 的應用程式。Riva 的設計旨在幫助您輕松、快速地通路會話 AI 功能,開箱即用,通過一些簡單的指令和 API 操作就可以快速建構進階别的 TTS 語音合成服務。
2022年1月12日19:30-21:00,本次線上分享主要介紹:
語音合成簡介
NVIDIA Riva 特性介紹
啟動 NVIDIA Riva 用戶端快速實作文字轉語音功能
使用 Python 快速搭建基于 Riva 的 TTS 語音合成服務應用