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