开源项目“删库跑路”!作者不讲武德,还是另有隐情,


作者丨张洁

事件回顾

2022 年伊始,开源圈就出了一个众说纷纭的事件。

知名开源工具 Faker.js 的作者 Marak 故意破坏了 GitHub 上的这个开源库,已经将项目所有代码清空,并在 commit 中留下“endgame”字样。此外,他开发的另一个库 colors.js 也受到了影响。

据悉,Faker.js 是十分流行的 Node.js 工具库,可以在浏览器和 node.js 中生成大量模拟数据,用于开发调试,而且其数据类型多样,几乎可以覆盖到开发者需要的任何用例,可以称得上是 fake 数据领域最优秀的开源项目之一。colors.js 则可以为 javascript 控制台添加颜色,仅仅在 npm 上,每周下载量就超过 2000 万次。

在删库事件发生后,Marak 本人的 GitHub 账号还被官方封禁,引发大量争议。

为何删库跑路

在梳理整个事件的来龙去脉前,不可否认的是,Marak 投入了大量精力和时间来开发和维护 Faker.js 项目。这样庞大的工作量,由 Marak 一人耗时十余年完成。许多商业公司深度使用这一项目,然而开发者从中获得的收益十分少。

reddit 上的热门帖子表示,Marak 清空 Faker.js 仓库的原因是个人遇到了经济困难,并且开源项目被别人滥用。与此同时,不少开发者发现,这个被删除代码的 Faker.js 仓库也不是真正的 Faker.js 原仓库。据称,Marak 首先将真正的 Faker.js 仓库设置为私有,隐藏了起来,然后创建了新的同名 Faker.js 仓库。此外可以看到,虽然 Marak 清空了 Faker.js 项目仓库的代码,但其在 npm 上的软件包仍然保留着历史版本的下载,其最新的版本号被设置为 6.6.6(西方文化中寓意“魔鬼”的数字)。

Marak 删库跑路的行为看起来有点极端,但实际并非无迹可寻。

早在 2020 年 11 月,Marak 就曾公告:No more free work from Marak -Pay me or Folk this. 他要求使用 Faker.js 项目的公司向他支付费用,否则这些公司就 fork 项目然后自行维护,因为他不再打算免费为任何人工作。

按理说,Faker.js 使用的是最常见的开源协议,对传播、复制容忍度很高,商业公司的确不用为使用此项目支付任何费用。但 Marak 发布这个公告也是事出有因。

据 Marak 在推特上透露,2020 年 10 月,他的公寓失火,他因此失去了所有家当,陷入了身无分文的境地。为此,他不得不公开 PayPal 账号,恳求网友们的捐助。推文发出后,不少网友也尽力提供了援助。在财政上陷入拮据之时,Marak 又从未知信息源了解到,“FAANG”五巨头内部大量使用他开发的库。他的开源成果为这些大公司创造的价值不可估量,他却并未因此受益。于是那份“拒绝白嫖”的公告应运而生。

开源距离“白嫖”有多远

固然从法律角度说,从 Faker.js 使用 MIT 协议开始,就注定了商业公司免费使用它无可厚非。而且商业公司的参与也的确有助于为 Faker.js 的完善带来更多反馈。但当开源作者本人陷入困境,无数人从中受益的开源成果却无法给作者带来助益时,这件事就开始变得讽刺起来。

当失火事件发生后,也有网友就此向 Marak 提出了一些建议:比如 Faker.js 可以效仿 Vue,开通 OpenCollective 捐赠。据称,Vue.js 每年可以募捐到 25 万刀用于维持核心团队运转;还有修改开源协议或许也能带来一些转机,相比 MIT 协议,Apache-2.0 和 GPL-3.0 或更高版本鼓励人们更加注意并考虑开源的许可条件。

此外,Marak 本人也在商业化道路上做过一些尝试。基于 Faker.js,Marak 开发了虚拟数据云服务网站 Faker Cloud,提供虚拟数据在线生成服务。

在上线服务后的两周,Marak 注意到两位来自 Retool.com 的工程师注册了他的服务。值得一提的是,从 2021 年 1 月开始,Retool.com 通过 OpenCollective 每月赞助 Faker.js 500 美元,是 Faker.js 重要金主之一。但也就在三周后,Retool.com 开发了一款和 Faker Cloud 功能完全重叠的免费工具。从用户角度看,Faker Cloud 收费,并且服务体验上可能也比不上由专业技术公司维护的免费商业产品。

事情发展到这一步时,Marak 也并未放弃,他给 Retool 的 CEO 写了邮件,希望对方可以收购 Faker.js 和 Faker Cloud。对方回复了他,并表示会认真考虑这个建议。然后,就没有音讯了......

综观此事,生活远比小说更为戏剧化。如果不是 Marak 的真人真事,这件事更像一个彻头彻尾的黑色喜剧。

自开源始,到删库终

随着这起开源跑路事件的影响扩大,吃瓜群众扒出了 Marak 本人更多的过往。

Marak19 岁从麦吉尔大学毕业后,就在微软工作了 5 年。随后,因对封闭的软件开发不满,才辞职投向开源。截至被封之前,他在 GitHub 上发布了 90 多个开源项目,最热门的便是被他亲手炸掉的 faker.js 与 color.js。

2010 年,Marak 与高中时代的好友 Charlie 一起创办了一家云服务公司。公司主营 Node.js 服务器托管,同时面向个人开发者和企业用户。彼时 Node.js 还是一项刚兴起的开源技术。

次年,两人联合创办的公司 Nodejitsu 首轮融资获得 75 万美元,还被评为当年纽约地区值得关注的 25 个创业之星。但好景不长,随着 Node.js 影响力加大,Azure、Salesforce 等更强大的云服务公司纷纷入局。到了 2015 年,Nodejitsu 宣布被 GoDaddy 收购。

2015 年后,Marak 渐渐消失于公众视野,仅作为开源贡献者活跃在社区中。时间线快进到 2020 年,他在纽约租住的公寓发生火灾。在灾后调查中,这间寓所附近发现了可疑包裹,里面是可以做出爆炸装置的混合材料。Marak 因公寓失火涉嫌制造炸弹事件被捕,之后便是前文中提到的在无家可归时在推特发帖求助。等他再次来到聚光灯下时,Marak 这个名字就和“删库跑路”挂在了一起。

开源商业化之路

归根结底,要避免此类事件发生,探索开源项目的商业化路径势在必行。目前公认比较成熟的模式有这样几种:

  • 支持服务:用户只需为技术支持及咨询服务买单。
  • 托管服务:比如 Databricks。Spark 是开源的,但收费版本仅提供 Azure 和 AWS 上的云服务。
  • 限制性许可:比如 Redis。核心部分的组件是开源的。但工具类软件,进阶功能(如无共享分布式架构等)都是收费的。
  • 开放核心 + 混合许可:这种模式在开放核心的基础上进行了改造。混合许可在同一个代码库中混合了开源代码和专有代码。用户可以选择只使用开源代码,或者同时使用开源代码和专有代码。

对于个人开发者而言,选择的空间有多大?开发者是否有权对自己的代码做任何事情?开源协议与个人利益发生冲突时,我们又该如何理性的看待开源精神?当你身处 Marak 的境地时,又会做出什么选择呢?

相关内容