作者丨張潔
【51CTO.com原創(chuàng)稿件】
事件回顧
2022 年伊始,開源圈就出了一個(gè)眾說紛紜的事件。
知名開源工具 Faker.js 的作者 Marak 故意破壞了 GitHub 上的這個(gè)開源庫,已經(jīng)將項(xiàng)目所有代碼清空,并在 commit 中留下“endgame”字樣。此外,他開發(fā)的另一個(gè)庫 colors.js 也受到了影響。
據(jù)悉,F(xiàn)aker.js 是十分流行的 Node.js 工具庫,可以在瀏覽器和 node.js 中生成大量模擬數(shù)據(jù),用于開發(fā)調(diào)試,而且其數(shù)據(jù)類型多樣,幾乎可以覆蓋到開發(fā)者需要的任何用例,可以稱得上是 fake 數(shù)據(jù)領(lǐng)域最優(yōu)秀的開源項(xiàng)目之一。colors.js 則可以為 javascript 控制臺(tái)添加顏色,僅僅在 npm 上,每周下載量就超過 2000 萬次。
在刪庫事件發(fā)生后,Marak 本人的 GitHub 賬號還被官方封禁,引發(fā)大量爭議。
為何刪庫跑路
在梳理整個(gè)事件的來龍去脈前,不可否認(rèn)的是,Marak 投入了大量精力和時(shí)間來開發(fā)和維護(hù) Faker.js 項(xiàng)目。這樣龐大的工作量,由 Marak 一人耗時(shí)十余年完成。許多商業(yè)公司深度使用這一項(xiàng)目,然而開發(fā)者從中獲得的收益十分少。
reddit 上的熱門帖子表示,Marak 清空 Faker.js 倉庫的原因是個(gè)人遇到了經(jīng)濟(jì)困難,并且開源項(xiàng)目被別人濫用。與此同時(shí),不少開發(fā)者發(fā)現(xiàn),這個(gè)被刪除代碼的 Faker.js 倉庫也不是真正的 Faker.js 原倉庫。據(jù)稱,Marak 首先將真正的 Faker.js 倉庫設(shè)置為私有,隱藏了起來,然后創(chuàng)建了新的同名 Faker.js 倉庫。此外可以看到,雖然 Marak 清空了 Faker.js 項(xiàng)目倉庫的代碼,但其在 npm 上的軟件包仍然保留著歷史版本的下載,其最新的版本號被設(shè)置為 6.6.6(西方文化中寓意“魔鬼”的數(shù)字)。
Marak 刪庫跑路的行為看起來有點(diǎn)極端,但實(shí)際并非無跡可尋。
早在 2020 年 11 月,Marak 就曾公告:No more free work from Marak -Pay me or Folk this. 他要求使用 Faker.js 項(xiàng)目的公司向他支付費(fèi)用,否則這些公司就 fork 項(xiàng)目然后自行維護(hù),因?yàn)樗辉俅蛩忝赓M(fèi)為任何人工作。
按理說,F(xiàn)aker.js 使用的是最常見的開源協(xié)議,對傳播、復(fù)制容忍度很高,商業(yè)公司的確不用為使用此項(xiàng)目支付任何費(fèi)用。但 Marak 發(fā)布這個(gè)公告也是事出有因。
據(jù) Marak 在推特上透露,2020 年 10 月,他的公寓失火,他因此失去了所有家當(dāng),陷入了身無分文的境地。為此,他不得不公開 PayPal 賬號,懇求網(wǎng)友們的捐助。推文發(fā)出后,不少網(wǎng)友也盡力提供了援助。在財(cái)政上陷入拮據(jù)之時(shí),Marak 又從未知信息源了解到,“FAANG”五巨頭內(nèi)部大量使用他開發(fā)的庫。他的開源成果為這些大公司創(chuàng)造的價(jià)值不可估量,他卻并未因此受益。于是那份“拒絕白嫖”的公告應(yīng)運(yùn)而生。
開源距離“白嫖”有多遠(yuǎn)
固然從法律角度說,從 Faker.js 使用 MIT 協(xié)議開始,就注定了商業(yè)公司免費(fèi)使用它無可厚非。而且商業(yè)公司的參與也的確有助于為 Faker.js 的完善帶來更多反饋。但當(dāng)開源作者本人陷入困境,無數(shù)人從中受益的開源成果卻無法給作者帶來助益時(shí),這件事就開始變得諷刺起來。
當(dāng)失火事件發(fā)生后,也有網(wǎng)友就此向 Marak 提出了一些建議:比如 Faker.js 可以效仿 Vue,開通 OpenCollective 捐贈(zèng)。據(jù)稱,Vue.js 每年可以募捐到 25 萬刀用于維持核心團(tuán)隊(duì)運(yùn)轉(zhuǎn);還有修改開源協(xié)議或許也能帶來一些轉(zhuǎn)機(jī),相比 MIT 協(xié)議,Apache-2.0 和 GPL-3.0 或更高版本鼓勵(lì)人們更加注意并考慮開源的許可條件。
此外,Marak 本人也在商業(yè)化道路上做過一些嘗試?;?Faker.js,Marak 開發(fā)了虛擬數(shù)據(jù)云服務(wù)網(wǎng)站 Faker Cloud,提供虛擬數(shù)據(jù)在線生成服務(wù)。
在上線服務(wù)后的兩周,Marak 注意到兩位來自 Retool.com 的工程師注冊了他的服務(wù)。值得一提的是,從 2021 年 1 月開始,Retool.com 通過 OpenCollective 每月贊助 Faker.js 500 美元,是 Faker.js 重要金主之一。但也就在三周后,Retool.com 開發(fā)了一款和 Faker Cloud 功能完全重疊的免費(fèi)工具。從用戶角度看,F(xiàn)aker Cloud 收費(fèi),并且服務(wù)體驗(yàn)上可能也比不上由專業(yè)技術(shù)公司維護(hù)的免費(fèi)商業(yè)產(chǎn)品。
事情發(fā)展到這一步時(shí),Marak 也并未放棄,他給 Retool 的 CEO 寫了郵件,希望對方可以收購 Faker.js 和 Faker Cloud。對方回復(fù)了他,并表示會(huì)認(rèn)真考慮這個(gè)建議。然后,就沒有音訊了......
綜觀此事,生活遠(yuǎn)比小說更為戲劇化。如果不是 Marak 的真人真事,這件事更像一個(gè)徹頭徹尾的黑色喜劇。
自開源始,到刪庫終
隨著這起開源跑路事件的影響擴(kuò)大,吃瓜群眾扒出了 Marak 本人更多的過往。
Marak19 歲從麥吉爾大學(xué)畢業(yè)后,就在微軟工作了 5 年。隨后,因?qū)Ψ忾]的軟件開發(fā)不滿,才辭職投向開源。截至被封之前,他在 GitHub 上發(fā)布了 90 多個(gè)開源項(xiàng)目,最熱門的便是被他親手炸掉的 faker.js 與 color.js。
2010 年,Marak 與高中時(shí)代的好友 Charlie 一起創(chuàng)辦了一家云服務(wù)公司。公司主營 Node.js 服務(wù)器托管,同時(shí)面向個(gè)人開發(fā)者和企業(yè)用戶。彼時(shí) Node.js 還是一項(xiàng)剛興起的開源技術(shù)。
次年,兩人聯(lián)合創(chuàng)辦的公司 Nodejitsu 首輪融資獲得 75 萬美元,還被評為當(dāng)年紐約地區(qū)值得關(guān)注的 25 個(gè)創(chuàng)業(yè)之星。但好景不長,隨著 Node.js 影響力加大,Azure、Salesforce 等更強(qiáng)大的云服務(wù)公司紛紛入局。到了 2015 年,Nodejitsu 宣布被 GoDaddy 收購。
2015 年后,Marak 漸漸消失于公眾視野,僅作為開源貢獻(xiàn)者活躍在社區(qū)中。時(shí)間線快進(jìn)到 2020 年,他在紐約租住的公寓發(fā)生火災(zāi)。在災(zāi)后調(diào)查中,這間寓所附近發(fā)現(xiàn)了可疑包裹,里面是可以做出爆炸裝置的混合材料。Marak 因公寓失火涉嫌制造炸彈事件被捕,之后便是前文中提到的在無家可歸時(shí)在推特發(fā)帖求助。等他再次來到聚光燈下時(shí),Marak 這個(gè)名字就和“刪庫跑路”掛在了一起。
開源商業(yè)化之路
歸根結(jié)底,要避免此類事件發(fā)生,探索開源項(xiàng)目的商業(yè)化路徑勢在必行。目前公認(rèn)比較成熟的模式有這樣幾種:
- 支持服務(wù):用戶只需為技術(shù)支持及咨詢服務(wù)買單。
- 托管服務(wù):比如 Databricks。Spark 是開源的,但收費(fèi)版本僅提供 Azure 和 AWS 上的云服務(wù)。
- 限制性許可:比如 Redis。核心部分的組件是開源的。但工具類軟件,進(jìn)階功能(如無共享分布式架構(gòu)等)都是收費(fèi)的。
- 開放核心 + 混合許可:這種模式在開放核心的基礎(chǔ)上進(jìn)行了改造。混合許可在同一個(gè)代碼庫中混合了開源代碼和專有代碼。用戶可以選擇只使用開源代碼,或者同時(shí)使用開源代碼和專有代碼。
對于個(gè)人開發(fā)者而言,選擇的空間有多大?開發(fā)者是否有權(quán)對自己的代碼做任何事情?開源協(xié)議與個(gè)人利益發(fā)生沖突時(shí),我們又該如何理性的看待開源精神?當(dāng)你身處 Marak 的境地時(shí),又會(huì)做出什么選擇呢?
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】