Faker.js 作者“刪庫跑路”引開源圈“震動”:該開源專案現已被社群控制

MissD發表於2022-01-24

5 年前,一位程式設計師因刪除了自己開源專案 left pad 中的一些程式碼而讓大半個網際網路癱瘓、導致無數程式碼庫崩潰並引發熱議。現在,同樣的事情再次發生了 —— 上上週,知名工具庫 Faker.js 的作者做了同樣的事情,現在的結果也和5年前差不多。

據最新報導顯示,目前 Faker.js 專案現在已成為由 8 名來自不同背景和公司的工程師組成的團隊社群所控制。而 Faker.js 的作者 Marak 已正式“出局”。

Faker.js 作者“刪庫跑路”引開源圈“震動”

1 月初,Faker.js 的作者 Marak Squires 主動惡意破壞自己的專案後“刪庫跑路”。該事件發生之後,瞬間引發了開源圈“震動”。

據悉,Marak 不僅將自己的 Faker.js 專案倉庫的所有程式碼清空,留下了一個簡短的自述檔案"What really happened with Aaron Swartz?",還注入了導致程式死迴圈的惡意程式碼,引起眾多應用程式崩潰。

作為一個非常有用的工具,Faker.js 可以生成可用於應用程式開發/測試方面的 Fake 資料,其受歡迎程度甚至被《財富》世界 500 強企業在內的數百家公司使用。

而一直以來,開發和維護 Faker.js 專案的作者 —— 程式設計師 Marak 向來都被認為是一位頗具爭議的人物。報導稱,Faker.js 專案作者 Marak 此前就有過刪除自己熱門專案的記錄。早在 2020 年,Marak 就曾宣稱他已經“受夠了維護 Faker.js ”。

而在此次行動之前的“預兆”中,Marak 在一份程式碼提交中宣告:“恕我直言,我將不會再為《財富》世界500強(以及其他規模較小的公司)提供免費支援。”

眾所周知,js程式碼庫是開源免費的,這需要有人支付幾十萬的薪水來繼續支援維護。但作為免費使用該程式碼庫的一些世界企業及公司們,卻在程式碼庫無法使用或出狀況的時候第一時間出來指責作者而不用付出任何代價,這一點也確實讓開源專案的作者感到失望。

由此也看來得出,Faker.js 作者此次事件的發生也並非“突然”了。

此前在 reddit 上,有不少熱門帖也表示,Marak 清空 Faker.js 倉庫的程式碼是因為缺乏資金和被別人濫用開源專案。

當然也有帖子稱,這個被刪除程式碼的 Faker.js 倉庫也不是真正的 Faker.js 原倉庫。據稱,Marak 首先將真正的 Faker.js 倉庫設定為私有,併為它修改了名字。然後再建立新的同名「Faker.js」倉庫——所以倉庫的 commit 資訊只有最新的一條記錄,而且 star 數量也遠少於原本的 Faker.js 倉庫。

儘管 Marak 清空了 Faker.js 專案倉庫的程式碼,但其在 npm 上的軟體包仍然保留著歷史版本的下載。有報導稱,Faker.js 最新的版本專案的周下載量也超過了200萬。

Faker.js 現已成為社群控制的專案

目前,Faker.js 已成為社群控制的專案,新組成的團隊則暫時將他們所維護的庫稱為“官方庫”,且合併了所有活躍的分支,待後期事態平息、混淆減少之後,他們則會放棄使用“官方庫”的名稱。

現在,社群控制的 Faker.js 專案已獲得了不少開發者的認可。以下是專案倉庫的 star 數增長情況:

自接管 Faker.js 以來,新團隊已對 issue 進行了分類和審查 PR、提供線上文件、遷移至 TypeScript、建立公開的推特帳號、在 npm 上釋出軟體包、清理 Prettier、CI、Netlify Deploy Previews 和 GitHub Actions 等工作。

同時,新團隊還制定了一個發展規劃圖:

  • 對 ESM 的支援
  • Browserify=>Rollup/Vite
  • 改進測試基礎設施
  • 提供型別生成文件
  • 與 Faker 生態系統的現有維護者互動
  • 在文件中提供互動式遊樂場
  • 與節點18相容

在資金方面,與此前對 Faker.js 專案捐款一樣。js專案是在開源集合平臺上進行的,現有團隊在與開源集合執行董事溝通後,制定了一個過渡計劃:

  • js 專案從 Open Collective 轉移到 Faker.js遺留帳戶(總計11652.69美元),將用於邀請 Marak 和另一名維護人員 Barin 加入
  • 轉讓完成後,現有團隊將成為 Faker.js 的管理員。開放集合平臺上的 js 帳戶(https://opencollective.com/fa...)
  • 已通知現有團隊,如果他們希望向 Marak 捐款,請選擇https://opencollective.com/fa...http://opencollective.com/marak。(當然,他們也會同步並通知是否收到了註明為 Marak 捐贈的資金)

最後,團隊承諾,他們將繼續開發和維護 Faker.js 專案,讓該專案變回從前那樣酷。

js 專案引發開源文化脆弱的本質

此次 Faker.js 專案作者的 “惡意破壞”事件,也引發了一場業內關於“數字生態系統的脆弱性”的探討。

努力在“商業世界”中生存的開源概念,卻不得不被最原始的契約關係所“禁錮”,而支撐這種緊張關係的是一個簡單的問題:一旦開原始碼被採用,誰將最終對其負責?

這是一個複雜的問題,也是一場關於開源與商業由來已久的“衝突”,涉及罪責、所有權、道德和人類動機的缺陷性質等話題。

而作為一個對其他專案極具依賴性的開源專案,這次 Faker.js 作者的 “惡意破壞”事件所暴露出來的問題也更為複雜。

所以現在對於“誰才是對的?”這個開源哲學中由來已久的問題,你會怎麼看呢?歡迎在評論區留言互動。

關於 Faker.js

Faker.js 是十分流行的 Node.js 工具庫,提供了各種型別的模擬資料,用於開發除錯。最早的 Faker 專案於 2004 年由 Jason Kohles 首次使用 Perl 實現。後來 Marak 實現了 Node.js 版本,並投入了大量精力和時間來維護 Faker.js。

相關文章