在开源软件社区中,众多经验丰富的专家对于如何维持这一关键生态系统提出了他们的见解。全球数百万熟练的软件开发人员,尤其是自由开源软件(FOSS)项目的维护者,正为世界提供着不可或缺的服务,但他们往往没有得到应有的回报。尽管许多开源维护者满怀激情,自愿为事业贡献力量,但也有人感到被忽视或利用。
GitHub开源融资高级总监Kevin Crosby指出:“我们在开源领域持续遭遇维护者的不平等问题。”为了改善这一现状,他认为我们需要更多的技术支持、更好的培训、公司资金用于分配时间以支持开源贡献,以及持续的社区投资。
开源软件目前正处于一个关键的十字路口。Percona首席执行官Ann Schlemmer强调:“当前系统的不可持续性正受到越来越多的关注,这是理所当然的。如果一个人不为自己所依赖的项目做出贡献,那么在保护个人基础设施方面显然做得不够。”
研究表明,90%的企业依赖于开源软件,其中一半的大公司采用了开源战略,即管理开源软件使用的正式方法。值得称赞的是,许多企业正在雇佣或赞助开源维护者。云原生计算基金会(CNCF)执行董事Priyanka Sharma表示:“Linux基金会最大项目的大多数关键维护者都是大公司的全职员工。”CNCF是Linux基金会的一个部门,托管着近200个开源项目。
然而,尽管开源软件看似正在蓬勃发展,但许多个人维护者仍在努力为他们的项目筹集资金。公司往往期望志愿者免费修复漏洞或更新功能,这导致了FOSS中的不平等问题。为了解决这一问题,有人建议采用类似SaaS的支付模式、政府援助或增加公司或主要开源基金会的支持。
Apache软件基金会执行副总裁Ruth Suehle指出:“开源生态系统已成为软件开发不可或缺的一部分,但它也因自身的成功而受到影响。问题在于我们如何维持这个不可或缺的生态系统,不仅为了其自身的成功,而且为了依赖它的一切。”
开源股权困境
核心问题在于开源贡献者的报酬不公平。根据2023年开源维护者状况报告,60%的开源维护者是无偿志愿者,仅有13%的人以专业项目维护者为生。
Python软件基金会驻地安全开发人员、许多开源项目的维护者Seth Michael Larson表示:“我认为开源项目和贡献者的标准越来越高。”特别是对于关键的中间堆栈项目来说,这些项目没有为新来者提供“容易”的问题,导致贡献者和首席维护者数量减少、出现倦怠。
HeroDevs的主要开源架构师、数百个JavaScript项目的维护者Jordan Harband指出,全球对时间和资源的获取不平衡进一步加剧了这种不平等。
Tidelift的联合创始人兼首席执行官Donald Fischer表示:“2024年的开源维护者发现自己处于不公平的交易中。创建一个高价值和广泛使用的项目所获得的奖励,正被错误报告、功能请求和需要评估的扫描仪误报所掩盖。”Fermyon Technologies的创始人兼首席执行官Matt Butcher补充说,市场饱和带来了挑战,只有具备所有商业产品装饰的“一流”项目才有希望脱颖而出。
维持开源的途径
1. 直接货币化
为了弥补资金差距,一种建议的方法是围绕核心项目建立收入流。Kevin Crosby认为,资助和支持开源项目的最可持续方法是通过某种形式的商业支持,如高级咨询支持、使用功能和软件生产项目或企业级资金。然而,虽然一些维护者试图将他们的项目货币化,但并非所有尝试都是可持续的。在某些情况下,这些尝试甚至遭到了开发人员社区的反对。
2. 企业支持
虽然货币化可以提供帮助,但另一种选择是直接的公司融资,它可以提供持续的支持,而无需更改项目许可证或收取访问费用。GitHub赞助商或GitHub加速器等机会有助于为维护者创造持续的现金流入。其他融资平台,如Patreon和Open Collective,也已被积极用于为维护者提供预算。Schlemmer指出:“为项目提供直接的财政贡献将使项目开发人员能够专注于代码,并消除财务不安全的压力。”
在企业赞助方面,我们已经看到了积极的成果。例如,GitHub Sponsors已经向开源维护者提供了4000万美元,包括AWS、American Express、Shopify和Mercedes Benz在内的4200个组织已经投资了他们的开源依赖项。另一个由公司主导的倡议是开源承诺,参与公司承诺每年向开源开发人员提供资金支持。
关键在于,开源收入流必须是连续的,而不是一次性付款。Fischer强调:“确保开源项目保持健康和安全的最好方法是向维护者支付稳定的收入,以换取确保他们的项目得到妥善维护并遵循安全的软件开发实践。”
尽管如此,云提供商在不与维护者分享利润的情况下,仍将开源项目用于创收活动。因此,有人建议今后应建立收入分享安排。
3. 代码贡献
另一种形式的援助是在特定工作角色中巩固开源贡献。这可能等同于赞助“驻地开发人员”角色,雇用全职开源维护者,或为在职开源开发分配批准的时间。大多数CNCF贡献者和维护者(约95%)都隶属于组织,其中大多数人是因其开源敏锐性而被雇用的。
许多公司已经向员工支付为开源项目做出贡献的报酬,并将其作为首要战略优先事项。例如,自2015年以来,Adobe为CNCF托管的46项技术提供了开源代码。Tidelift的一份报告发现,近一半的组织都有管理员工对开源贡献的政策,其中大多数允许对组织使用的项目做出贡献。
项目用户应该承诺持续做出贡献,无论是财政贡献还是实物贡献。企业需要为那些符合其目标的项目制定赞助预算,以确保项目保持质量、安全性和创新。
4. 中介公司
具有深厚知识的开源维护者可能是更新的最佳人选,但他们通常没有时间或资源来实施修复。因此,也有理由认为第三方会帮助提供必要的手段。中介公司可以充当代理,通过弥合企业需求和开源工作之间的差距来帮助维护者。
例如,Tidelift支付开源维护人员的费用,以实施行业标准的安全开发实践,确保他们的客户能够更自信地使用这些软件包。该模型成功消除了jackson-databind中的远程代码执行(RCE)漏洞,改进了流行的Python HTTP客户端urllib3的安全实践,并为流行的JavaScript软件包minimist启用了双因素身份验证(2FA)。
开源维护者、流行的Python图像处理软件包Pillow的创建者Alex Clark认为:“为开源提供资金的最佳方式不是慈善事业。”他认为市场需要像Tidelift这样的公司,坐在需求和开发商之间,用他们销售的服务收入来支付维护者。
5. 开源基础
Linux基金会、CNCF、Apache软件基金会和Eclipse基金会等非营利基金会提供资源和奖学金,以帮助维持开源项目。对于许多项目来说,基金会模式作为支持和资助的手段效果很好。
基金会还可以以更间接的方式提供帮助,如指导、认可和社区支持,并通过提供指标来帮助企业主量化项目和直接投资的影响。对于红帽来说,支持自由和开源软件生态系统中的许多不同基金会是其确保尽可能多的项目能够保持健康和活力的方法之一。
然而,由于各种原因,许多关键的开源项目不希望被安置在基金会中。我们也需要找到支持他们的方法。
6. 公共援助
另一个选择,也许是最具有前瞻性的选择,是认识到开源软件是一种公共利益,并通过公共资金而不是个人或公司支持来为生态系统提供资金。维护者Jordan Harband表示:“现在需要的是深入涉及世界主要政府的适当利益相关者的深入法规。”
德国主权科技基金已经朝着这个方向发展,每年积累约1000万欧元来投资大约30个项目。其他例子包括美国政府的开放技术基金和英国政府关于建立一个类似基金的提议。
据专门从事开源软件的独立研究人员和开发人员Serkan Holat称,公共财产的悲剧和免费服务者问题等经济问题目前限制了公司的贡献。他建议将封闭源订阅的专用销售税转用于资助关键的公共开源项目。
许多其他人同意开源基础设施应该由公共资助,尽管他们可能在具体方面存在分歧。欧洲公共数字基础设施基金白皮书甚至表示,公共支持可以成为展示公共价值能力的服务和工具的“唯一可行的商业模式”。
为世界所依赖的软件提供资金
据估计,如果开源代码不是免费提供的,从头开始组装将花费8.8万亿美元。然而,大多数开发人员并不期望他们的贡献得到直接的财政支持。相反,“学习更好的编码”是为公司或供应商拥有的开源软件项目做出贡献的最常见动机。
鉴于世界对开源的依赖,这一观点可能需要重新评估。开源软件支撑着从安卓手机到超级计算机再到各种在线服务的一切。但大多数人对此并不了解,因此公司往往不承担责任。缺乏意识和支持不仅会导致不平等,而且会威胁到这一关键生命线的维持。
我们已经看到关键项目从视野中消失。除了道德困境外,倦怠还可能导致未解决的漏洞或社会工程风险。因此,如何支持开源是我们这个时代的问题。虽然有些人认为公司实体的赞助是答案,但其他人则期待不同形式的生计。在确定哪些项目是实际需要的方面,必须做出更好的努力。
考虑到开源的普遍性,通过公共资金来监管其支持似乎是最强大的长期愿景。然而,这种政府主导的举措还处于早期阶段。在公共倡议成熟之前,生态系统将需要企业赞助、基础管理和提高公众意识相结合,以确保其生存。