“最初,没有人在意这场灾难,这不过是一场火山,一次海啸,一个物种的灭绝,一座城市的消失,直到这场灾难和每个人息息相关......”如同一场火山爆发给人类带来的预警,作为一款明星开源项目的作者,自毁代码删库跑路这件事,或许是2022年开发界一次全新变革的开始。
这几年里,开源热潮席卷全球,在代码托管平台Github上,来自世界各地的优质开源项目层出不穷,软件开发效率和质量得到显著提升。
无论是国内外科技巨头还是个人开发者,纷纷投身其中,高举开放、协作、共享的大旗。
开源的确在帮助这个世界变得越来越好,但另一方面,开源项目背后仍有大量的维护者处于水深火热之中。
去年年底,全球知名开源日志组件Apache Log4j2被曝“核弹级”高危漏洞,几乎所有行业都受到波及。
这个漏洞的出现,也撕开了开源光鲜亮丽的外表下的残酷事实:
当有人使用开源项目时,他们会对作者充满感激。
然而一旦这个项目出现Bug,它背后的开发者便会遭到如潮水一般猛烈的骂声——哪怕这是没有任何酬劳的工作。
那么,在没有报酬的情况下,有多少人能够在业余时间坚持维护这些开源项目呢?
Apache Log4j 2漏洞爆发过去一个月后,又一位知名开源项目的作者用行动做出了回答。
今年1月上旬,开源工具Faker.js和Colors.js的作者Marak,在没有任何征兆的情况下,突然将Faker.js项目仓库的所有代码清空了。
他在commit中留下了“endgame”字样,并且在README中写道,“What really happened with Aaron Swartz?”
(注:Aaron Swartz曾建立Creative Commons、RSS和Reddit,在2011年被指控非法入侵MIT和学术数据库JSTOR以窃取文件,于2013年自杀。)
值得注意的是,Faker.js上一个版本依旧可以下载,版本号却被改为了在西方中代表恶魔的数字6.6.6。
另一个仓库Colors.js的代码虽然没有被清空,但Marak也在v1.4.44-liberty-2版本中添加了一个“new American flag module”。
新的代码中引入了一段无限循环,会让所有使用了Colors.js的程序都在控制台无休止地打印各种非ASCII字符的乱码。
数万个使用了这两个开源项目的应用一夜之间要么“变砖”,要么不断输出满屏乱码。
Marak的删库行为,无疑往整个开源社区扔了颗威力惊人的大“炸弹”,无数人都不敢相信这一事实。
对于前端开发者而言,应该对Faker.js和Colors.js并不陌生了。
它们是前端工程中非常火爆的开源仓库,被很多公司和个人在生产环境中深度使用。
Faker.js提供了各种类型的模拟数据,用于开发调试,周下载量高达两百万多万,且多次进入Github日榜前三。
而Colors.js则是一款基于Node.js Console命令行参数神器,用于终端着色colors插件,每周下载量约2314万。
Marak这番令人匪夷所思的操作,令大家疑虑顿生:明明花费了多年心血打造的两个项目,为什么会突然选择自己毁掉这一切?
据了解,Marak这些年的确投入了大量精力和时间来维护这两个项目。
但因为它们使用的是十分宽松的MIT开源许可协议,所以即使被拿来商用,也不用向作者支付任何费用。
通俗来讲就是“白嫖”,所以Marak的获益非常少。
随着开源项目规模的不断增大,Marak也需要投入更多精力来对其进行维护。
但有一个前提,那就是只有在他自己能保证足够生存的条件下,这一切才能顺利进行。
压倒骆驼的最后一根稻草,或许是2020年9月Marak遭遇的一场火灾。
当时,Marak的公寓失火,所有财产几乎被全部烧毁,在身无分文且处于无家可归的状态下,Marak在推特上发布求助信息。
他公布了自己的PayPal账号,请求网友们给他提供捐助。
可能是网友们捐助的金额难以维系生活,2020年11月,Marak在GitHub上发文,谴责大型公司使用其Faker.js开源项目却不支付费用的行为。
Marak表示,如果这些公司不支付费用,那么就fork项目自行维护,因为他不再打算为任何人提供无偿的维护工作了。
于是,在两个月后,Marak兑现了他的“承诺”。截至账号被封之前,他在GitHub上已经有90多个开源项目。
事情爆发后,全球上万个项目的开发者在忙于修复工作的同时,也对Marak的行为进行了激烈的辩论。
有人认为,Marak的行为太不负责任,如果不想免费维护,那一开始就不要发布出来。
也有人认为,从GitHub删除自己的代码是每个用户的权利,Marak有权对他维护的项目进行任何处置。
还有人直言,大公司凭什么能从别人的无偿劳动中赚到一大笔钱,这本来就不公平。
毫无疑问,这起事件再次引起了人们对于开源开发者生存现状的关注。
在现实中,大量网站、软件和应用依赖于免费的开源项目。
而开源项目维护工作是一项长期且艰巨的任务,大到新建功能、修复Bug,小到把控代码质量。
可以说,作者参与得越多,用户对项目的要求就越多。
素不相识的伸手党,会因为你没有及时回答问题而开骂;
下班后只想好好休息,但手机和电脑上会有消息不断提醒有多少人在等着你解决问题;
当你熬夜爆肝做出来的成果,被别人使用后赚得盆满钵满,而你除了不断上涨的star数,再也收获不到任何利益......
久而久之,曾经全力以赴创建这个项目的快感,大概只会消失得无影无踪。
根据去年Tidelift发布的调查报告显示,近50%开源项目维护者拿不到任何报酬。
而年收入在1000美元(约等于6300元人民币)以上的维护者仅占16%。
在“为什么选择持续维护开源项目”这一问题中,71%的开发者选择了“享受能够对世界产生积极影响的感觉”。
也就是说,开源带来的物质上的收益不多,大多数开发者们都是在成就感的激励下坚持下去的。
除了Faker.js和Apache Log4j2外,还有许多开源项目的开发者,也正处于类似的尴尬处境。
去年11月,有用户向苹果请求更新macOS 12中与Curl有关的信息,结果苹果直接回复用户让他自行联系Curl的开发者。
为此,Curl创始人发言讽刺称:“一家市值万亿美元的公司将各种开源组件组合在一起,每年可从中获利数十亿美元。当用户就其提供的产品寻求帮助的时候,这家公司反而将用户推给开源项目。这个开源项目是志愿者运营和维护的,而这家公司(苹果)从没有赞助过一分钱。”
众所周知,除了Linux等大型项目外,大多数开源项目都只是由一个小团队甚至单个开发者在进行维护,工作量自然不言而喻。
Marak的这件事应该给所有人敲响警钟:任何一个能够坚持更新和维护的开源项目,背后都一位值得尊敬的程序员,给予他们必要的赞助是非常值得鼓励的行为。
无论如何,开源不易,还是得相互理解与支持,才能走得更远。
温馨提示
关注【扩展迷Extfans】
阅读更多精彩内容
文章评论