开源项目“删库跑路”!作者不谈武功,还是另有隐情。知名开源工具Faker.js的作者Marak故意破坏了GitHub上的这个开源库,清除了项目的所有代码,并在commit中留下了“endgame”字样。此外,他开发的另一个库colors.js也受到了影响。据悉,Faker.js是一款非常流行的Node.js工具库,可以在浏览器和node.js中生成大量模拟数据用于开发调试,数据类型多样,几乎涵盖所有用例开发者需要的,可以算是假数据领域最好的开源项目之一。为javascript控制台添加颜色的colors.js仅在npm上每周就有超过2000万次下载。删库事件后,Marak自己的GitHub账号被官方封禁,引发不小争议。为何删库跑路在梳理整个事件的来龙去脉之前,不可否认的是,Marak在开发和维护Faker.js项目上投入了大量的精力和时间。如此庞大的工作量,马拉克用了十几年的时间才完成。许多商业公司深入使用这个项目,但开发者从中获得的收益却很少。reddit上的一个热门帖子称,由于个人经济困难和开源项目被他人滥用,Marak清空了Faker.js存储库。同时,不少开发者发现被删除代码的Faker.js仓库并不是真正的Faker.js原始仓库。据称,Marak首先将真正的Faker.js存储库设为私有,将其隐藏,然后创建一个新的同名Faker.js存储库。另外可以看到,虽然Marak清空了Faker.js项目仓库的代码,但是其在npm上的软件包仍然保留了历史版本的下载,其最新版本号设置为6.6.6(意为“恶魔”“数字)。马拉克删库逃跑的行为看似有些过激,但也并非无迹可寻。早在2020年11月,Marak就宣布:不再有来自Marak的免费作品——PaymeorFolkthis。他要求使用Faker.js项目的公司向他支付费用,否则这些公司将分叉该项目并自行维护,因为他不再打算免费为任何人工作。按理说,Faker.js使用的是最常见的开源协议,对传播和复制的容忍度很高。商业公司使用本项目无需支付任何费用。但马拉克宣布这一消息是有原因的。根据马拉克在推特上的说法,2020年10月,他的公寓着火了,他失去了所有的财产,陷入了身无分文的境地。为此,他不得不公开自己的PayPal账户,并向网友们乞讨捐款。推文发出后,不少网友也尽力提供帮助。经济拮据时,马拉克从不明来源获悉,“FAANG”五巨头大量使用他开发的库。他的开源成果为这些大公司创造了不可估量的价值,但他并没有从中受益。于是就有了“不许白嫖”的告示。开源离“白嫖”还有多远从法律角度来说,由于Faker.js使用了MIT协议,注定要被商业公司免费使用。而商业公司的参与,确实有助于为Faker.js的改进带来更多的反馈。但当开源作者自己陷入困境,而无数人受益的开源作品却对作者没有帮助时,就开始变得讽刺了。火灾事件发生后,也有网友向Marak提出了一些建议:比如Faker.js可以效仿Vue,开放OpenCollective捐赠。据说Vue.js每年可以捐出25万来维持核心团队的运作;而修改开源协议也可能会带来一些机会。与MIT协议相比,Apache-2.0和GPL-3.0或更高版本鼓励人们更多地关注和考虑开源的许可条件。此外,Marak本人在商业化的道路上也做了一些尝试。Marak基于Faker.js开发了虚拟数据云服务网站FakerCloud,提供虚拟数据在线生成服务。推出该服务两周后,Marak注意到来自Retool.com的两名工程师注册了他的服务。值得一提的是,从2021年1月开始,Retool.com将通过OpenCollective每月赞助Faker.js500美元,是Faker.js的重要赞助商之一。但仅仅三周后,Retool.com开发了一款与FakerCloud完全重叠的免费工具。从用户的角度来看,FakerCloud是收费的,服务体验可能无法与专业技术公司维护的免费商业产品相提并论。事情发展到这个地步,马拉克并没有死心。他给Retool的CEO写了一封邮件,希望对方能够收购Faker.js和FakerCloud。对方回复他说会认真考虑这个建议。然后,就没有音讯了……看这件事,生活远比小说要戏剧化。如果不是马拉克的真实经历,这件事更像是一部彻头彻尾的黑色喜剧。从开始开源到删库,随着这次开源事件影响的扩大,吃瓜群众扒出了更多Marak的往事。Marak19岁从麦吉尔大学毕业后在微软工作了5年,后来因为不满封闭的软件开发,辞职转而开源。在被封杀之前,他在GitHub上发布了90多个开源项目,其中最受欢迎的是faker.js和color.js,他亲自炸毁了这些项目。2010年,马拉克与他的高中朋友查理一起创办了一家云服务公司。该公司的主要Node.js服务器托管面向个人开发人员和企业用户。那时,Node.js还是一项新生的开源技术。次年,两人共同创立的公司Nodejitsu在第一轮融资中筹集了75万美元,并被评为当年纽约地区值得关注的25位创业明星之一。但好景不长。随着Node.js的影响力越来越大,Azure、Salesforce等更有实力的云服务公司相继进入市场。2015年,Nodejitsu宣布被GoDaddy收购。2015年后,Marak逐渐淡出公众视野,仅以开源贡献者的身份活跃于社区。快进到2020年,他在纽约租的公寓着火了。在灾后调查中,在公寓附近发现了一个可疑包裹,里面装有可用于制造爆炸装置的材料混合物。马拉克因涉嫌在公寓火灾中制造炸弹而被捕,随后他在如上所述无家可归的情况下发推求助。当他再次出现在聚光灯下时,马拉克这个名字已经和“删库逃跑”联系在一起了。开源商业化之路归根结底,要避免此类事件的发生,势在必行的是探索开源项目的商业化路径。目前公认的成熟模式有以下几种:支持服务:用户只需为技术支持和咨询服务付费。托管服务:例如Databricks。Spark是开源的,但付费版本仅作为Azure和AWS上的云服务提供。受限许可:如Redis。核心组件是开源的。但工具软件和高级功能(如shared-nothing分布式架构等)是收费的。OpenCore+HybridLicense:该模型建立在OpenCore之上。混合许可证在同一个代码库中混合了开源代码和专有代码。用户可以选择只使用开源代码,或者同时使用开源代码和专有代码。对于个人开发者来说,选择余地有多大?开发人员是否有权对自己的代码做任何事情?当开源协议与个人利益发生冲突时,我们应该如何理性看待开源精神?当你在马拉克,当你身处困境时,你会做出怎样的选择?【原创稿件,合作网站转载请注明作者及原文出处为.com】
