如今,整个互联网的运行和世界上最大的科技公司们都离不开开源软件。但为这些开源软件出人出力的志愿者们已经精疲力尽。他们纷纷表示,依赖开源软件的公司应该贡献更多资金和代码,而不是坐享其成。
布莱恩·巴布里茨(Blaine Bublitz)每天都要花上几个小时的时间来查阅Gulp.js用户发来的电子邮件。Gulp.js是巴布里茨自愿维护的一个开源软件项目,微软和美国国家航空航天局(NASA)等机构都在使用这个软件项目。
发给巴布里茨的大多数电子邮件都是要求对项目进行更新或修复,堆积在巴布里茨待办事项上的东西越来越多,似乎永无止境。有些用户态度很好,但很多人更喜欢追问巴布里茨为什么要花这么长时间。很多不礼貌的要求影响到巴布里茨的心情,甚至一度导致他“消失”了6个月,完全停止了项目维护工作。
巴布里茨说:“本来钱就不多,再加上人们对你大喊大叫,说你需要做点什么,这让我根本不想干。”
另一位开源项目的志愿者玛丽娜·莫斯蒂(Marina Mosti)每周花10个小时维护名为FormVueLate的项目,但没有从这个项目中挣到过一分钱。莫斯蒂在VoiceThread担任全职技术主管,这样才能为她在开源项目的志愿者工作提供资金支持。
但莫斯蒂在如何平衡受欢迎的开源项目维护和完成本职工作之间已经耗尽精力。她说,FormVueLate团队的其他开发人员也筋疲力尽。虽然几个月前就需要对FormVueLate的一些代码进行全面重写,但是他们迄今为止还没有写出第一行代码。
莫斯蒂说:“我们没有时间、精力或心思花在这些事情上。”
巴布里茨和莫斯蒂并不孤单。与其他几个重要开源项目合作的志愿者也有同感。他们抱怨道,这项工作让人感觉永远“难以解决”,“影响了我的健康和快乐”,“成为我生活的负担”。
但是互联网不允许他们的工作半途而废。整个系统背后的开源项目对数字世界至关重要,支撑着世界上许多软件的运行,包括微软、亚马逊和奈飞等最大最富有的科技公司也是如此,例如Google就依赖开源项目来运行自家的Web应用程序。
长期以来,互联网都是在开源项目开发人员的无偿支撑下运行,现在已经岌岌可危。最近的一系列安全事件暴露出这个生态系统是多么脆弱,而开源开发者们已经精疲力尽,有的人选择逃离,有的人甚至通过破坏开源项目以示抗议。缺乏对这些开发者的支持将让整个互联网面临危险。
虽然人们常常听说针对大公司和关键基础设施的网络攻击急剧增加,但人们很少讨论的是,开源项目也受到了网络攻击激增的影响。软件供应链管理公司Sonatype的一份报告显示,2020年至2021年,针对开源项目的网络攻击同比增长650%。报告称,29%的热门开源项目至少有一个已知的安全漏洞。
从理论上讲,如果有更多人看到代码,开源软件会更加安全。但最近的一系列安全事件表明,如果开发人员不去修复漏洞,对项目不管不顾,甚至于破坏开源项目,那么会给互联网生态系统带来相当大的负面影响。去年12月份,黑客就利用开源项目Log4j影响到IBM、甲骨文、亚马逊和微软等公司。网络安全公司Check Point称,潜在的损害“不可估量”,并表示这“显然是近年来互联网上最严重的漏洞之一”。
仅仅两周后,又有一个程序员破坏了广为人知的Colors.js和Faker.js开源库。他似乎在用故意破坏这种方式来抗议大公司免费使用自己的项目。
最近,研究人员还发现Mozilla的Firefox开源浏览器中有两个“严重”安全漏洞。此外,开源的Linux操作系统也出现了“多年来最严重的漏洞”。
“我们已经看到了足够多的供应链灾难,这不会是最后一次,”软件Promith和KEDA的维护人员汤姆·克霍夫(Tom Kerkhove)在谈到去年冬天发生的这些事件时说。“企业确实需要帮助开源项目维护人员在决定删库之前帮助他们构建产品。”
所有一切都是开源的
开源项目的使用时间和软件出现时间一样长,但其在20世纪90年代随着Linux操作系统等项目席卷整个行业而流行起来。现在,开源项目是亚马逊网络服务AWS等云平台的基础,并为人们每天都在使用的Facebook和Google应用程序提供动力。
而且开源项目还在继续发展。微软旗下的开源项目GitHub在过去的12个月时间里获得超过26亿份代码。OpenLogic对2660名专业人士的调查发现,77%的受访者表示,2021年他们所在的机构均增加了对开源软件的使用。
软件公司红帽首席技术官克里斯·赖特(Chris Wright)说:“更重要的是,开源对整个商业世界和我们所有人的日常生活来说非常重要,影响很大。”“这在整个软件行业都很普遍。”
报酬很少或没有报酬
尽管开源项目无处不在,并且在互联网经济中扮演着重要角色,但大多数开源项目开发人员从他们的贡献中赚不到多少钱。
Tidelift对近400名开源软件维护人员的调查显示,46%的人没有得到任何报酬。即便在那些拿到报酬的人中,只有大约一半的人每年能拿到1000美元以上。此外约有一半的受访者表示,作为开源项目维护人员,他们最大的抱怨是工作报酬不够。
开源的自由属性也导致了不公平。目前开源项目由男性主导,当没有报酬时,没有那么多闲暇时间或工作没有那么稳定的人不太可能再为开源项目做出贡献。
如今,GitHub Sponsors、Tidelift和Open Collective等网站正试图通过允许开发人员接受捐赠和其他形式补偿的方式来解决资金问题。不过开发人员说,单纯依靠捐款是不可持续的,许多人每个月赚的钱只够买一杯咖啡。
“我已经尝试过现有的所有平台,”巴布里茨说。虽然这些网站的“成功之处就在于让你的劳动不再是完全免费”,但他说,自己每个月从GitHub Sponsors那里只能得到大约5美元。尽管巴布里茨几乎全职从事开源工作,但他的主要收入来自过去两年的咨询工作。
虽然开源项目资金匮乏,但最富有的大科技公司反而是这些项目的最大受益者。对于一些开发人员来说,很难将二者统一起来。许多人认为,是这些大科技公司没有给予开源项目足够的回报。
例如,亚马逊常常会重新打包开源软件,并在AWS云平台上销售和运行。但开发人员和较小的公司说,尽管亚马逊从中获利颇丰,但实际上并没有为开源项目贡献多少行代码。微软和Google自称对开源项目很友好,但微软只是通过旗下的自由和开源软件基金资助过少数几个开源项目,Google则声称自己拥有员工在业余时间编写的开源代码。
“问题是公司和个人都没有意识到他们实际上是一个生态系统的组成部分,”开源开发者阿迈勒·侯赛因(Amal Hussein)说。“重要的是,志愿者要贡献自己的时间或金钱。”
志愿者精疲力尽
随着疫情蔓延、网络攻击增加、软件日趋复杂、责任加重以及志愿者工作带来的财务不稳定,开源项目开发人员已经精疲力尽。在Tidelift的调查中,超过40%的开源项目维护人员表示,作为一个维护人员,他们不喜欢个人压力和感觉被低估。Tidelift首席执行官兼联合创始人唐纳德·费舍尔(Donald Fischer)表示,很多压力来自于收到很多用户的投诉。
开发者马泰奥·科里纳(Matteo Collina)把这些苛刻的人称为“吸血鬼”。科里纳说:“目前的现状是已经无法维持下去,因为更多的项目长期维护人员正在耗尽精力,但吸血鬼还在那里。”
娜塔莉亚·泰普鲁希娜(Natalia Tepluhina)是Vue开源项目的核心成员,这一项目被Google、苹果和任天堂使用。她表示,用户常常会问这样的问题,“为什么你们在两周内不修复这个问题?”或“为什么你们这么慢?”
“这就像,该死,我在为你免费工作,”特普卢希纳说。“你为什么这么说?”
另一方面,小伊菲克·奥东(Ifiok Otung Jr.)的开源项目Remirror虽然获得了赞助,但他说这只会带来更多审查。去年,他一气之下放手了6个月时间。
奥东说:“我在这条路上走的时间越长,就越觉得不愉快。”“它成了我生活中的一种负担。”
许多开发人员已经退出所维护的项目,甚至完全消失。在Tidelift的调查中,大约有59%的维护人员曾一度退出或考虑过退出他们的项目。
例如,瑞恩·比格(Ryan Bigg)曾是电子商务开源项目Spree唯一一位全职维护人员。虽然GoDaddy和Blue Apron等公司都在使用这个项目,但最终比格感觉自己“无法克服”这项工作带来的压力。他每天醒来都会收到超过250条有关新需求或修复漏洞的信息。2014年,比格不再全职维护Spree,选择前往一家科技公司工作。
“最终,它影响了我的健康和幸福,”比格说。
Material for MkDocs是微软和亚马逊等公司都在使用的开源软件。创始人马丁·多纳特(Martin Donath)表示,随着需求的不断增长,他最近在决定是否要继续开发开源软件方面处于“两难”境地。但资金方面的支持最终让他选择坚持下去。
“项目之所以被放弃无外乎是缺乏时间和兴趣,从某种意义上说时间就是金钱,”多纳特说。
项目资金耗尽
即便开源开发者获得足够多的报酬,可以全身心投入到软件开发中,开源项目也常常面临着资金耗尽的风险。Facebook、Airbnb和Netflix都在使用的开源项目Babel给三名核心开发人员支付工资,但在2021年面临资金几乎耗尽的风险。当时,三名核心开发人员之一的尼科洛·利博多(Nicolò Ribaudo)一度考虑停止在Babel的工作,转而去一家公司应聘全职工作。
幸运的是,Babel能够吸引到足够的注意力,最终成功筹集资金。项目核心开发者在一篇博客文章中寻求帮助,让很多依赖Babel的公司意识到这不是他们“认为理所当然的”事情。赞助源源不断而来,核心团队成员得以获得报酬,并继续维护和改进Babel。利博多透露,运维团队并没有拿到行业“高薪”,他在一家公司工作完全可以挣得更多。但他说,这样的薪水足以维持他在意大利的生活。
“我们可以为这个项目提供更高质量的工作,这对我们来说也更容易,因为我们不再需要牺牲其他空闲时间了,”利博多说。
Babel项目无疑是幸运的。诸如诞生于Google的Kubernetes、诞生于Facebook的React,以及Linux操作系统都在靠赞助而生存。但是,相比于那些能获得资金赞助的大型项目,整个行业所依赖的许多小型项目没有给过维护人员一分钱。
ESLint项目创始人尼古拉斯·扎卡斯(Nicholas Zakas)说:“他们处于整条食物链的下游,很多时候得不到认可,也得不到赞助。”Facebook、微软和Netflix都在使用ESLint项目。扎卡斯说,虽然他的项目得到了资助,但对于一个全职开发团队来说“远远不够”。
纸糊的房子
由于维护人员面临的需求堆积如山,报酬又低,已经精疲力竭,很多开源项目已经到了崩溃边缘。与此同时,大公司从这些开源软件中获利,却很少进行回报。
虽然开发人员不会为钱而投入开源项目,但免费工作带来的风险也会让互联网置于风险之中。因为当他们不能快速处理安全事件,甚至选择退出项目,这让软件变得更加脆弱。
开发人员说,公司应该用他们的预算来支持所依赖的开源项目。这不仅仅是钱的问题,如果公司也能贡献代码或修复漏洞,他们会很感激。
“开源本身与金钱无关,”开发人员加藤大士说。“当然,它也可以以某种形式维持下去。但背后的文化是相互帮助。恶意拿走一切,还不归还任何东西是不健康不道德的。”