我们如何资助开源?

一些在开源软件社区拥有丰富经验的专家分享了关于如何维持这一关键生态系统的看法。

世界已经开始依赖数百万熟练的软件开发人员-- FOSS 项目的维护者--的免费工作。但是,世界却没有给他们一点小费。诚然,许多开源软件维护者充满热情,无偿地为这项事业做出贡献,但也有一些人感到被压抑或被利用。

GitHub 开源基金高级总监 Kevin Crosby 表示:“在开源领域,我们继续经历着维护者不平等的问题”。为了改善现状,我们需要更多地获取技术、更好的培训、提供时间为开源做贡献的企业资金以及持续的社区投资。

开源已经处于十字路口一段时间了。但压在骆驼背上的是,公司往往不会回馈他们使用的软件包。“当前系统的不可持续性受到了更多的关注,这是理所当然的,”Percona 首席执行官 Ann Schlemmer 说。“有一种合理的论点是,如果一个人不为自己依赖的项目做出贡献,那么他就没有做足够的努力来保护自己的基础设施。”

一段时间以来,开源一直处于十字路口。但压在骆驼背上的是,企业往往不会回馈他们使用的软件包。Percona 首席执行官 Ann Schlemmer 称:“当前系统的不可持续性受到了更多的关注,这也是理所当然的。有一种合理的观点认为,如果一个人没有为自己所依赖的项目做出贡献,那么他在保护自己的基础设施方面所做的就不够。”

研究表明,90% 的企业依赖开源,半数的大公司制定了开源战略,即采用正式方法来管理其对开源软件的使用。值得称赞的是,许多企业都在雇用或赞助开源维护者。CNCF 执行董事 Priyanka Sharma 指出,“Linux 基金会最大项目的大多数关键维护者都是大公司的全职员工。”

然而,尽管开源软件似乎正在蓬勃发展,但许多个人维护者却在为他们的持续努力挣扎。人们对开源软件的期望很高,公司经常要求志愿者免费修复错误或更新功能。为了解决自由和开源软件的不公平问题,一些人建议采用类似 SaaS 的付费方式、政府援助或增加企业或主要开源基金会的支持。

“开源生态系统已成为软件开发不可或缺的一部分,但它也因自身的成功而遭受损失,”Apache 软件基金会执行副总裁 Ruth Suehle 表示。“问题在于我们如何维持这个不可或缺的生态系统,不仅为了自身的利益而维持它的成功,也为了所有依赖于它的事物。”

开源公平困境

核心问题是开源贡献者没有得到公平的报酬。根据 2023 年开源维护者状况报告,60% 的开源维护者是无偿志愿者,只有 13% 的人以专业项目维护者为生。

Python 软件基金会开发人员、许多开源项目(尤其是 Python 的 HTTP 和网络领域)的维护者和贡献者 Seth Michael Larson 表示,“我发现开源项目和贡献者的门槛越来越高”。对于关键的 middle-stack 项目来说尤其如此,它们没有为新手提供“简单”的问题来磨练,导致贡献者减少并导致维护者倦怠。

HeroDevs 首席开源架构师、数百个 JavaScript 项目的维护者 Jordan Harband 表示,全球范围内时间和资源获取不均衡进一步加剧了这种不平等。

Tidelift 联合创始人兼首席执行官 Donald Fischer 表示:“2024 年,开源维护者会发现自己处于不公平交易的输家地位。创建一个高价值且广泛使用的项目的回报被错误报告、功能请求和需要评估的扫描仪误报所淹没”。

Fermyon Technologies 公司创始人兼首席执行官 Matt Butcher 补充道,市场饱和会带来挑战,只有具备商业产品所有特征的 “一流 ”项目才有望脱颖而出。

维持开源的途径

直接盈利

那么,我们如何弥补这一差距?建议的一种方法就是围绕核心项目建立收入来源。GitHub 的 Kevin Crosby 说:“资助和支持开源项目的最可持续的方法是通过某种形式的商业支持”。对他来说,“收入来源”可以采取高级咨询支持、将项目与功能和软件产品化或企业级融资的形式。

话虽如此,尽管一些维护者试图将他们的项目货币化,但结果并非都是可持续的,在某些情况下还导致了开发者社区的反弹。Multiplayer 联合创始人兼首席技术官 Thomas Johnson 表示,“维护者无法轻易从他们的项目中获利。这种情况只会越来越糟,并迫使维护者考虑替代开源许可证以进行反击。”

企业支持

虽然货币化可以有所帮助,但另一种选择是直接企业资助,它可以提供持续的支持,而无需更改项目许可证或收取访问费用。GitHub Sponsors 或 GitHub Accelerator 等机会可以帮助为维护者创造持续的现金流入。其他筹资平台,如 Patreon 和 Open Collective,也已被积极用于为维护者提供预算。 Percona 的 Schlemmer 说:“直接向项目提供资金将使项目开发人员能够专注于代码并消除财务不安全的压力。”

在企业赞助方面,目前已经有了些积极的成果。例如,GitHub 赞助商已经向开源维护者投入了 4000 万美元 —— GitHub 的 Crosby 表示,包括 AWS、美国运通、Shopify 和梅赛德斯奔驰在内的 4200 家组织已经投资了他们的开源依赖项。另一项由企业主导的倡议是“Open Source Pledge”,参与的公司承诺每年向开源开发者每人提供 2000 美元。

一个关键点是,开源收入流必须是持续的,而不是一次性支付。Tidelift 的 Fischer 称,“确保开源项目保持健康和安全的最佳方式是向维护者支付稳定的收入,以确保他们的项目得到妥善维护并遵循安全的软件开发实践”。

不过众所周知,云厂商会利用开源项目来创造收入,但不会与维护者分享利润。因此,有人建议今后实行收入共享安排。Multiplayer 的 Johnson 说:“从开源项目中创造收入的公司应该与项目维护者分享。”

代码贡献

另一种援助形式是将开源贡献巩固在特定工作岗位中。这可以等同于赞助“developer in residence”职位、雇用全职开源维护者或分配批准的时间用于在职开源开发。CNCF 的 Priyanka Sharma 表示,“大多数 CNCF 贡献者和维护者(约 95%)都隶属于组织,大多数人都是因为他们对开源的敏锐度而被聘用的”。

许多公司已经为员工在职期间对开源做出的贡献支付报酬,有些公司将此作为首要战略重点,譬如 Adobe。Sharma 说:“自 2015 年以来,Adobe 已为 CNCF 托管的 46 项技术贡献了开源代码”。Tidelift 的一份报告发现,近一半的组织都有管理员工对开源贡献的政策。在这些组织中,大多数组织都允许员工为组织使用的项目做出贡献。

这正是开源项目成功所需的支持。Percona 的 Schlemmer 表示,项目用户应承诺持续做出贡献,无论是资金还是实物捐助。企业需要为符合其目标的项目预算赞助。这种企业稳定性将确保项目保持质量、安全性和创新性。

单是开源安全风险的众多性就足以鼓励企业加倍努力,为对其运营至关重要的项目做出贡献并加以保护。“就像审查供应商的商业可行性一样,参与开源项目的公司也需要了解其可持续性”。

中介公司

知识渊博的开源维护者可能最有资格进行更新,但他们通常没有时间或资源来实施修复。因此,也有理由要求第三方帮助提供必要的手段。中介公司可以充当代理,通过弥合企业需求和开源工作之间的差距来帮助维护者。

例如,Tidelift 向开源维护者付费,以实施行业标准的安全开发实践,确保他们的客户可以更放心地使用这些软件包。这种模式已成功消除了 jackson-databind 中的远程代码执行 (RCE) 漏洞,改进了 urllib3 的安全实践,并为流行的 JavaScript 软件包 minimist 启用了双因素身份验证 (2FA) 。

开源维护者、Python 流行图像处理软件包 Pillow 的创建者 Alex Clark 说道,“资助开源的最佳方式绝对不是慈善”。相反,Clark 认为市场需要像 Tidelift 这样的公司,它们介于需求和开发者之间,用他们销售的服务收入支付维护者的费用。

开源基金会

Linux 基金会、CNCF、Apache 软件基金会和 Eclipse 基金会等非营利基金会提供资源和奖学金,帮助维持开源项目。Apache 软件基金会的 Suehle 表示,“对于许多项目来说,基金会模式作为一种支持和资助手段效果很好”。

基金会还可以通过更间接的方式提供帮助,例如指导、认可和社区支持,以及提供指标来帮助企业主量化项目和直接投资的影响。Red Hat 开源计划办公室社区拓展高级经理 Brian Proffitt 表示,“除了直接资助之外,基金会还承担了项目支持的很大一部分。对于 Red Hat 来说,支持自由和开源软件生态系统中的众多不同基金会是我们确保尽可能多的项目能够保持健康和活力的方法之一”。

正如开源维护者 Seth Michael Larson 所认为的那样,支持开源的最佳方法是“向非营利基金会支付全职员工,让他们以广泛的范围在生态系统的各个领域工作”。从而可以帮助填补安全、流程、文档、发布和治理方面的空白,同时又不会剥夺人们继续利用业余时间做出贡献的动力。

然而 Suehle 也指出,出于各种原因,许多重要的开源项目不希望被归入基金会,但我们也需要找到支持它们的方法。

公共援助

另一个选择,也许是最具前瞻性的选择,是承认开源软件是一种公共产品,并通过公共资金而不是个人或企业支持来资助生态系统。维护者 Jordan Harband 称:“现在需要的是经过深思熟虑的法规,让世界主要政府的适当利益相关者参与其中。”

德国主权科技基金(Sovereign Tech Fund)已经朝着这个方向发展,每年筹集约1000 万欧元(1090 万美元),投资约 30 个项目。其他例子包括美国政府的开放技术基金和英国政府提议设立类似的基金。

“我认为德国主权科技基金是将公共资金或多或少直接提供给开源维护者以实现更广泛社会目标的最好例子。这就是政府的全部目的——为那些企业没有足够的前瞻性来证明其值得资助的事情提供资金。”

专门从事开源软件研究的独立研究员兼开发者 Serkan Holat 表示,公地悲剧和搭便车问题等经济问题目前限制了公司的贡献。如果存在共享资源,他们永远不知道该贡献多少。他建议对封闭源代码订阅征收专门的销售税,并将其用于资助重要的公共开源项目。

还有许多人同意开源基础设施应由公共财政资助,尽管他们在具体细节上可能存在分歧。Matrix.org 基金会的 Matthew Hodgson 写道,“FOSS 维护应该由政府代表纳税人资助” 。欧洲公共数字基础设施基金白皮书甚至指出,对于能够提供公共价值的服务和工具来说,公共支持可能是“唯一可行的商业模式”。

为世界所依赖的软件提供资金

据估计,如果开源代码不是免费提供的,从头开始编写它预计将耗资 8.8 万亿美元。然而,也许令人惊讶的是,大多数开发者并不指望他们的贡献能得到直接的资金支持。相反,SlashData 的 2024 Q1 Developer Nation 研究发现,“学习更好地编写代码”是为企业或供应商拥有的开源软件项目做出贡献的最常见动机。

鉴于世界对开源的依赖,这种观点可能需要重新评估。CNCF 的 Sharma 表示:“开源软件支撑着从 Android 手机到超级计算机再到 Netflix 的一切。但大多数人并不知道这一点,因此公司无需承担责任”。缺乏认识和支持不仅会导致不公平,还会威胁到这一重要生命线的维持。

我们已经看到一些关键项目遭遇失败。Tidelift 的 Fischer 表示:“维护人员表示,这项工作压力大、孤独,而且经济上没有回报”。除了道德困境之外,倦怠还可能导致未解决的漏洞或社会工程风险,就像 XZ 后门事件一样。

因此,我们如何支持开源是我们这个时代的问题。虽然有些人认为企业实体的赞助是答案,但其他人则寻求不同的支持形式。Red Hat 的 Proffitt 表示,“这里没有一刀切的解决方案,这就是为什么必须更好地识别哪些项目有实际需要。”

考虑到开源的普遍性,通过公共资金来规范其支持似乎是最有力的长期愿景。然而,这种由政府主导的举措尚处于早期阶段。在公共举措成熟之前,生态系统将需要企业赞助、基金会管理和提高公众意识的结合,以确保其生存。

来源:InfoWorld