在开源领域工作了十多年之后,经历了从初创公司到世界上最大的开源公司,并推出了我的开源项目资助平台,我终于有了一个想法。“开源”一词并不足以涵盖现代开放软件所有可感知的价值,开源需要一个更广阔的视野,以及一个支持开放治理和开放资金的基础设施。
在过去,开源的价值在于源代码,我们可以从自由软件的自由度和开源定义的发布标准中感知到这一点。但现在情况不一样了。现如今,开源产品的生产速度很快,但腐烂和过时的速度更快。除了源代码提供的价值之外,开源项目还有其他重要的特征。开源的价值在于项目被采用,有时候一个项目会成为某种技术事实上的标准(比如用于消息传递的 Apache Kafka)。开源的价值还在于参与者之间的松散协调、开放的协作和伙伴关系,以实现一个共同的目标(如 Kubernetes SIG 贡献者们)。开源的价值还在于项目的长期可持续性,可以在公司被收购或破产之后继续存在(比如 Oracle 和 Jenkins)。今天,成功的开源模式更多的是用户采用、健康的社区合作和长期可持续性的一个缩影。
首先,我要说的是开源许可。开源许可规定了源代码及其衍生物(二进制文件、服务)可以使用和不可以使用的发行方式。对于很多用户来说,这是一个不容置疑的因素。它决定了一个项目是否是开源的。但问题是,仅凭一个开源许可并不能保证一个项目将为我们带来所有潜在的价值。
其次,我要说的是项目治理。治理模型为重要的项目决策制定规则,并规定项目的“所有者”如何与社区发生交互。有一些项目的治理是通过一个可信任的软件基金会来实现的。基金会提供了中立性、稳定性和透明度,但同时,它也可能导致缺乏灵活性,让社区停滞不前。还有一些项目由单一公司负责管理,这些公司有可能对项目许可做出变更,甚至把开源项目变成专有软件。
作为一个开源项目的用户,我希望项目是开源的,这样我就可以自由地使用它。同时,我希望它能被广泛采用,这样我在遇到问题时就能够找到答案,可以找到相关的博文和最佳实践,可以找到开发人员和支持提供者,甚至把软件当作服务使用。一个开源项目就是一个伪装的营销工具。一个开源项目,如果还没有达到被广大社区所接受的程度,就不能提供全部的价值。今天,开源的价值不仅在于源代码,也在于社区。一个项目的开源许可和治理直接影响着社区的健康。
开源项目的第三个关键因素是长期可持续的财务模式。一个无法为项目贡献者提供可持续经济激励的开源项目,可能在一夜之间就失去了支持者。一个缺少贡献者的项目就是一个充满安全漏洞的项目,一个有安全漏洞的开源项目就是一个死气沉沉项目,没有人会在乎一个死气沉沉的项目。
我们已经无数次看到不具备财务稳定性的开源项目是如何被遗弃的,或者被迫变更开源许可,成为专有的项目。有时候,这类项目由一家公司负责运营,而被一家公司掌握的开源项目并不能带来开放协作的好处,它变成了与公司战略、路线图相一致的公司项目,并与公司的财务健康状况相关联。这不是一件坏事,但也不是真正的开源。
项目维护人员的长期财务健康状况经常是源代码及消费社区之间缺失的一环。糟糕的项目资助模式,或者缺乏模式,会影响治理、开源许可的选择,甚至是破坏社区。
这需要一个新的更广泛的开源愿景和基础设施。当我打开 Github 网站,我总是会关注一个开源项目有多少 star 和 fork,这些数字显示了社区的参与度。我关注的第二个东西是项目许可,它告诉我们可以用源代码做些什么。那些准备在开源项目中投入大量时间、精力和专业声誉的人,也会看一下项目的治理模型,看看项目是否属于基金会,看看项目管理委员会的成员都有谁以及他们是如何选举出来的,看看他们是如何修改现有的过程、项目特性,以及谁是看门人,等等。在某些情况下,这些规则会被写在 Wiki 页上,但对于较小的项目,它们不会出现在 Wiki 中,项目所有者可以做任何他们想做的事情,甚至是在没有社区的参与或透明度的情况下。除非项目是软件基金会的一部分,否则就不存在代表最佳实践的开源治理框架。我们无法通过添加一个文件(类似许可文件)来将治理模型应用到项目当中。即使存在治理模型,我们也没有自动化的方法来保证这些治理规则得到遵守。
我关注的最后一个东西是开源醒目的财务健康状况和可持续性指标。正如前面所说的,财务状况不健康的开源项目预示着可能会出现意外的变化和令人头疼的问题。现如今,并不存在一个单一的指标可用来衡量项目的财务健康状况。如果一个项目是软件基金会的一部分,我们可以看看这个项目从这种治理关系中得到了什么好处,但通常来说,这些是为了维护基金会而不是项目本身。如果一个项目是由一家公司负责运营的,就没有办法知道这个减肥项目对公司财务的贡献情况。如果项目维护者使用了 Github Sponsors,我们可以看到项目当前的赞助情况,或者可以看一下 Patreon 的捐款情况,或者去其他地方搜索一下类似的指标。这些开源资助平台功能都不够完善,在开源支持者当中也不是很流行。直至今天,都还没有一个被开源用户广泛采用的长期财务资助平台,也没有任何可信的财务状况指标。
想象一下,在未来的世界里,开源不仅仅是一种开发方法或营销机会。相反,它是一种开放的技术性均衡,在这种均衡中,知识和金融价值得以交换。在这样一个以开源为主导的未来,我希望能够做到:
选择好开源许可、治理模型、资助模型,然后通过点击“创建”按钮来启动一个开源项目,以一种开放的方式获得所有必需的基础设施。我希望所选择的治理模型是基于现有的最佳实践,为人们所熟知,并能够向社区提供某些保证(如开源许可)。我希望治理模型是可执行的、强制性的和可自动审计的(通过开放源码技术,如智能合约)。我希望不仅能看到项目的提交次数,也能看到累积的资金,以及未来的变现承诺。我希望不仅能看到用于克隆项目源代码的 git URL,也能看到用于验证项目资金的智能合约地址。我不仅想看到发行计划和路线图,还想看到资金的发行时间表以及打算如何使用它们。我不仅希望看到编程语言的细分情况,还希望看到资金分配的细分情况。我不仅希望看到软件基金会关注开源项目的技术发展,也希望看到基金会对开源项目的经济情况负责。我希望看到新的金融软件基金会能够专注于开源项目的培训、发展、维护、盈利和资助。我希望看到这些基金会之间相互竞争,出现新的成功的开源项目。我希望看到基金会从成功的项目中获得资金支持,而不是反过来。我希望看到项目支持者因为愿意冒险支持一个项目而得到经济上的激励。我希望看到项目从孵化中毕业不仅是因为有足够的贡献者,也因为有足够的资金可以支撑几个月或几年。我不仅希望能够看到社区的活跃指标,也希望能够看到财务的活跃指标,这些指标可以指示资金不足的项目需要激励用户筹集资金,防止维护人员转到其他项目去。我希望看到开发人员加入项目社区不仅是因为技术有趣,也因为项目有慷慨的资金模式。我希望看到公司将目标和结果导向的资金分配到特定的开源项目中,而不是仅仅出于营销的目的为基金会提供赞助。我不仅希望看到偶尔的捐款,还希望看到锁定时间的资金,用于有针对性的项目需求,如文档、测试、培训、社区发展等。我不仅希望能够在项目用户列表中看到公司的名字,也希望能够在财务支持者列表中看到他们的名字。我不仅希望看到公司的员工保留计划,也希望看到公司在开源保留计划上的投入。我希望看到能够基于社区成员为一个项目所做的工作来衡量他们的声誉。我希望看到一种对价值和资金分配的自动度量以及以此为基础的治理。我希望看到治理规则能够控制项目资金,并且只由有能力的人来执行。我希望看到公司能够安全、透明地支持开源项目,并将其作为项目指标的一部分,当我决定是否加入一个开源项目时,就可以做出更明智的决定。
我知道“开源”原本并不包含软件的治理、社区和融资。但今天,这些是开源项目的关键特征,它们会间接影响用户的自由和长期利益。一个完全开源的项目需要一个更全面的视角,不仅仅是开放源代码,不仅仅是开放开发方法,不仅仅是一个营销机会,不仅仅是一个增加销量的路线图。所有这些都应该是公开管理的,到了那个时候,它们将成为一种去中心化的带有开放治理和开放资金的开源软件。