根据曼努埃尔·霍夫曼、弗兰克·内格尔和周然若在《开源软件的价值》论文中所述:
我们估计广泛使用的开源软件(OSS)的供给侧价值为4.15亿美元,但需求侧的价值要大得多,为8.8万亿美元。我们发现,如果没有开源软件,企业需要在软件上花费比现在多3.5倍的资金。在我们的样本中,排名前六的编程语言占据了需求侧价值的84%。此外,需求侧的96%的价值是由仅占5%的开源软件开发者创造的。
这些数字本身就应引起我们注意,开源软件的重要性和紧迫性。但不知何故,尽管它具有巨大的价值,开源生态系统仍在面临重大的可持续性挑战,这将影响它的未来以及我们每一个人。
除了数字之外,开源促进创新,促进全球合作,并为世界各地的企业、政府和个人提供关键的数字基础设施支持。如 [Linux 内核]、[Python]、[Kubernetes]、[Node.js] 等众多项目,构成了从云计算和人工智能到移动应用和物联网设备等技术的基础。
尽管我们通过开源取得了进展,但我们仍然面临着持续性的危机。正如娜迪亚·艾格哈尔在《为公众工作》中所述,开源软件往往陷入公共资源悲剧的困境:虽然每个人都能从开源软件中受益,但维护它的负担却主要落在了一群通常无偿或报酬不足的贡献者身上。
了解公共资源悲剧公地悲剧源于经济学和生态学领域。它描述了一种情况,即个人用户根据自己的利益独立行动,耗尽或使用共享资源,尽管这对没有人是长期有利的。这里的“公地”指的是可供社会所有成员使用的资源,比如空气和水,或者就比如开源软件。
申请开源软件在开源中,“公共资源池”是指所有可以自由使用、修改和分发的软件。这种模式不仅鼓励创新,还降低了进入门槛,但也带来了一些挑战:
- 不平等的利益分配比例:许多组织和个人在其产品和服务中使用开源软件,从而在节省成本和更快地开发方面获得显著的好处。然而,维护和更新这些项目的责任往往落在一小部分维护者身上,他们可能无法获得适当的补偿和认可。
- 维护负担:随着软件项目的流行度增加,对维护者的要求也随之增加。他们必须处理错误报告或漏洞、安全漏洞、功能请求和支持查询,如果没有足够的资源,这些工作可能会变得无法承受。
- 可持续性挑战:如果没有适当的资金或支持,维护者可能会经历精力耗尽的情况,导致项目被忽视。这可能导致安全风险,软件质量下降,最终导致软件对所有用户来说变得没有那么有用。
了解更多关于维护者离开项目时的情况,请参阅默默危机(当维护者离开时)。
经济影响因素
使用开源软件的人和维护开源软件的人之间的差异也引发了经济上的问题和担忧。
- 搭便车者:公司经常广泛使用开源软件而没有回馈社区,无论是通过代码贡献、资金或其他支持。
- 缺乏激励机制:传统的市场机制在开源项目中对改进和维护产品的激励作用较弱,因为软件是免费提供的。
开源软件中的“公地悲剧”反映了广泛使用与集中维护责任之间的不平衡。虽然每个人都能从这些项目的合作和开放中获益,但如果不对维护者给予积极的支持,开源软件的可持续性将受到威胁。
换个角度看这个问题。如果所有的消防队都是由志愿者组成的。他们花无数时间训练,随时待命保护社区不受火灾及其他紧急情况威胁,却分文未取。
但我们也需要认识到,公司建造的高楼大厦、工厂和综合体也同样受到这些未领取报酬的消防员的保护。在这种情况下,这些公司也可能省去安装消防系统和购买保险,同时仍然享受这些未领取报酬的消防员带来的好处。
消防员可能需要找到方法来赚取额外的收入以支付自己的账单,因此他们可能会因为做两份工作而精疲力尽——其中一个工作非常耗费体力。结果是精疲力尽的消防员,他们可能会犯错,反应慢,或者因为过度劳累而辞职。
很明显,这样的情况并不安全,但我们还是在开源界这么接受了它。我们所做的是给自己埋下失败的伏笔。
资金筹集和认可的难题开源维护的可持续性问题部分源于资金危机。[2024 Tidelift 开源维护者报告(可通过此链接查看:[链接])]显示,60%的维护者仍然无偿工作。考虑到维护者在支撑我们数字世界的基础设施中所起的重要作用,这种缺乏财务支持的情况至少是令人担忧的。
Tidelift 报告还显示,维护者们更偏好稳定且可预测的、定期收入而非一次性付款,以便更好地处理他们的日常工作。因此,即便有资金可用,也不一定是以最能支持那些最需要帮助的维护者的方式提供。
在《公众中的工作:开源软件的创建与维护》一书中,Eghbal 指出开源维护者常常被低估并面临精力耗尽的问题。她指出,保持一个健康的生态系统需要为定期贡献的人提供财政支持和社区认可。这些项目背后的默默无闻的劳动使它们保持运行和安全,但常常被忽视。
OSS 誓言:Sentry 的直接影响力模式
Sentry 的开源承诺 为公司如何采取具体措施支持开源的可持续性提供了一个典范。该承诺呼吁公司每年至少支付2000美元给每位等效全职开发者,直接支付给他们选择的开源维护者。这种方法旨在在科技行业中形成一种新的社会规范,即公司直接向开源维护者支付费用,从而解决维护者疲惫及相关安全问题的根本原因之一。
虽然其他形式的支持,如雇佣开发人员参与开源项目或提供实物支持是有价值的,但该承诺强调直接现金支付的重要性。这种重点确保了那些收入微薄且工作繁重的关键开源项目维护者能够支付账单,从而促进一个更健康、更公平、更稳定和更安全的开源生态。
开放源代码与可持续的发展开源不仅因其经济和技术影响而重要;开源还有潜力在应对这些问题时发挥重要作用。《Linux 基金会开源与可持续发展报告》 探讨了开源项目如何可以显著促进联合国可持续发展目标(SDGs)。
比如说,像AgStack这样的项目帮助农民做出基于数据的决策以提高产量,有助于实现消除饥饿和可持续消费的目标。这些开放资源(开放标准、开放AI模型和开放数据)促进了更多合作,减少了浪费,并提高了各行各业的透明度。
然而,要想实现这一潜力,我们必须优先考虑项目的可持续性和维护者的可持续性。根据Eghbal的说法,为了保证开源开发的持续性,这些项目需要持续的支持和帮助,否则可能会陷入停滞甚至被遗弃。
安全的重要性开源领域的可持续危机不仅仅关乎资金问题,还涉及安全问题。Tidelift 的报告显示,获得报酬的维护者更有可能采取关键的安全措施。随着安全威胁越来越复杂,这一点越来越重要。(_了解更多关于 NASA 网络安全的新法规。)
Log4j漏洞增加了人们的担忧,许多维护者对贡献者不再那么信任。我们需要既安全又维护良好的项目。专职维护者通常可以投入更多时间进行安全改进和维护。
埃格巴尔指出,许多关键的开源项目由个人或小型团队维护,这些团队资源有限。这种脆弱的支持系统可能使被广泛使用的软件更容易受到安全漏洞的攻击,因为维护人员可能没有足够的时间和精力来应对每一个漏洞或请求。为了减少这些风险,应该优先考虑提供资金和结构上的支持。
解决方法所以,那我们能做些什么呢?首先,我们需要转变我们对开源工作的思维方式并提供更多支持。那些从开源中受益的公司需要增加它们的财务支持。Linux 基金会在为开源项目建立资金机制和治理模式方面迈出了正确的一步,但我们需要更广泛的采用这些模式和结构。
因此,政府也有责任考虑对开源的长期影响。承认开源是关键的国家信息基础设施并提供资金和扶持,有助于确保其长期生存能力。
对于个人开发者和使用开源软件的用户来说,考虑回馈一下——无论是通过代码、文档还是资金支持。如果你有权影响公司的政策,可以倡导支持开源项目,通过持续的赞助或为员工腾出时间来贡献代码。
花点时间仔细查看并理解你的依赖项。创建一个SBOM 工作区并查看依赖项的安全评分。识别项目的不确定性因素。如果你发现它们的不确定性因素较高,那么这些项目可能就需要优先支持。
开源模式创造了一个令人惊叹的技术创新和协作的历史。就像任何其他公共资源一样,它需要管理和支持才能繁荣。开源的可持续性不仅是一个技术问题,也是一个社会使命。通过大家的共同努力——公司、政府、开发者和用户——我们需要确保开源生态系统继续向前发展。
认识到“开源背后的隐形劳动”是确保这些项目背后的人们能够继续工作而不至于过度劳累的第一步。让我们提高维护者的地位,并给予他们应有的认可和支持。