2019 年的开源

走过 21 年,开源领域的格局发生了很大变化。但是,“开源”足够了吗?根据 OSI 附属成员 OpenStack 基金会的工程副总裁 Thierry Carrez 的说法,开源是必要的,但还不够充分。在这篇文章中,他将详细说明原因。

为什么今天开源是必要的

什么是开源

自由软件始于 80 年代,它定义了一些自由。自由软件的作者必须授予用户(以及软件未来的贡献者)这些自由。总而言之,这些自由使您可以自由地研究、改进软件,并将您的改进分发给公众,以便最终每个人都受益。这是对先前将软件视为公共物品的世界中“专有”软件的出现做出的反应。

当开源在 1998 年被定义时,它更侧重于一个更具体的角度:软件用户获得的权利,例如访问源代码或对使用方式的约束较少。这种直接关注用户权利(以及不太容易混淆的命名)使其更容易被企业理解,并且是当今开源行业取得成功的关键。

尽管开源更商业友好,但它从来都不是一种“商业模式”。开源,就像之前的自由软件一样,只是一组附加在软件上的自由和权利。这些通过软件许可证传达,并使用版权法作为其执行机制。以 F/OSS 许可证发布软件可能是商业模式的一个组成部分,但如果这是唯一的一个,那么您就遇到了问题。

自由

与自由和开源软件相关的自由和权利为用户带来了许多关键好处。

第一个,也是最常被提及的好处是成本。访问源代码基本上是免费的,就像免费啤酒一样。由于英语,这在大众市场中造成了有趣的困惑,即“自由软件”中的“自由”实际上意味着什么。您可以完全出售“自由软件”——这通常是通过添加超出 F/OSS 本身要求的自由或捆绑服务来完成的(而不是像最近有些人希望您认为的那样,通过删除自由)。

如果成本优势被证明随着开源的发展而变得更加重要,那不是因为用户越来越不愿意为软件或计算付费。而是因为计算的性质越来越普及。正如软件正在吞噬世界,传统的按席位付费的软件模式越来越不适应用户的工作方式,并且在每个人都在争夺速度的世界中,它们会产生额外的摩擦。

作为一名工程师,我认为今天,成本是一个替罪羊式的好处。对用户来说更重要的是可用性。使用开源软件,尝试软件的所有功能没有任何障碍。您无需征求任何人的许可(或建立任何合同关系)来评估软件以供将来使用、进行实验或只是为了玩得开心。一旦您准备好加入,从实验到生产的过渡没有任何摩擦。

作为一名高管,我认为可持续性是一个更重要的好处。当一个组织选择部署软件时,它不希望在没有维护的情况下被抛弃,仅仅是因为供应商决定停止支持您运行的软件,或者仅仅是因为供应商破产了。源代码可供任何人修改意味着您不会依赖单一供应商进行长期维护。

拥有多供应商空间也是避免供应商锁定的好方法。当您的业务对软件产生依赖时,切换到另一个解决方案的成本可能会非常高。您会发现自己处于维护协议的脆弱一方。能够依靠提供维护和服务的供应商市场是一种更可持续的软件消费方式。

在企业环境中采用开源的另一个关键好处是,开源使识别和吸引人才变得更容易。企业可以根据潜在员工对其感兴趣技术的公开贡献记录轻松识别他们。相反,候选人可以轻松认同组织正在使用的开源技术。他们可以加入一家公司,确信他们能够利用他们在那里积累的软件经验。

技术方面的一个关键好处是透明度。访问源代码意味着用户能够深入了解软件的工作原理,或者它为什么以这种方式运行。透明度还允许您有效地审核软件的安全漏洞。除此之外,获取和修改源代码的能力意味着您有自助服务的可能性:自己查找和修复问题,甚至无需依赖供应商。在这两种情况下,都可以提高您对意外行为或故障的反应速度。

最后但并非最不重要的一点:通过开源,您可以参与开发软件的社区,并通过直接贡献来影响其发展方向。这不是关于“回馈”(尽管这很好)。参与开源社区的组织效率更高,可以预测变化,或者可以对会对其产生不利影响的决策提出担忧。他们可以确保软件适应未来的需求,从而发展他们未来需要的功能。

生态系统的更大益处

除了那些用户利益(直接源于与 F/OSS 相关的自由和权利)之外,开源软件对更广泛的生态系统也具有积极影响。

垄断对用户不利。单一文化是脆弱的环境。开源软件允许挑战者集结力量并协作构建垄断玩家的替代方案。它不需要击败或消除专有解决方案——成功足以创造平衡并带来更健康的生态系统。

从大局来看,我们生活在一个自然资源有限的星球上,减少浪费和优化生产力变得至关重要。随着软件变得普及并且越来越多的人生产软件,开源生产模式减少了重复劳动以及在多个并行专有 silo 中开发相同解决方案的能源浪费。

最后,我个人认为当今大部分社会问题是人为地将我们的社会划分为生产者和消费者的结果。太多人正在失去构建事物所需的技能,而只是被给予订阅、黑匣子和内容,以便在运转良好的消费机器中吸收。自由和开源软件通过消除障碍并使每个消费者都成为潜在的生产者,模糊了生产者和消费者之间的界限。它是解决方案的一部分,而不是问题的一部分。

所有这些好处解释了为什么开源软件在今天如此成功。这些独特的好处最终造就了卓越的产品,这是一个对用户来说明智的选择。它也是一种平衡力量,可以为更广泛的生态系统带来良好的卫生,这就是为什么我敢说它在当今世界是必要的。

 

开源是不够的

开源的相对胜利

今天开源无处不在。它已成为构建和发布软件的默认方式。您可以在每台服务器上找到开源,您可以在每部手机上找到开源…… 甚至基本上发明了专有软件的微软公司,今天也在大力采用开源,并取得了巨大成功。从各方面来看,开源都赢了。

但是…… 真的赢了吗?

服务器,以及扩展的计算、网络和存储基础设施,无疑由开源主导。但是,为此基础设施软件运行操作的代码的份额越来越大,几乎总是保密的。用于向用户提供对此基础设施访问权限的粘合代码(通常被称为“云计算”)通常是商业秘密。如果您看向另一方面,桌面(或通常意义上的用户端应用程序)仍然主要由专有软件驱动。

即使考虑到通常被认为是开源成功案例的案例,胜利也可能留下苦涩的味道。例如,看看过去 10 年的两项关键技术成功案例,亚马逊网络服务和 Android,它们都严重依赖开源软件。可以说,它们是我刚刚描绘的开源成功图景的一部分。但是,如果您回顾我列出的所有用户利益,AWS 和 Android 的用户并没有真正享受到所有这些利益。作为 AWS 用户,您不具有透明度:您无法真正深入了解 AWS 的运行方式,或者服务为何以这种方式运行。作为 Android 用户,您无法真正参与 Android 上游,为软件的创建做出贡献并确保它在未来更好地满足您的需求。

因此,开源赢了并且无处不在…… 但是在大多数情况下,用户被剥夺了一些开源的关键好处。看看今天所谓的“开源”,人们可以发现许多扭曲的生产模式。我所说的“扭曲”是指一些开源的好处消失的模式,例如有效参与社区的能力。

例如,您会发现单供应商开源,其中软件由一家公司控制,在闭门造车的情况下进行开发。您会发现开放核心开源,其中高级功能保留给专有版本,而开源软件用作试用版。您会发现开源代码发布,其中组织只是定期转储其代码以使用开源标签对其进行开放清洗。您会发现一次性开源,人们只是在 GitHub 上发布一次,而无意维护代码。我们是如何走到这一步的?

控制还是社区

开源之所以如此吸引软件行业,是因为社区的承诺。一个积极参与的社区将帮助他们编写软件,建立超越经典供应商联系的更直接的关系,并帮助您推广软件。问题是,这些公司仍然非常希望保持控制:对软件、设计、产品路线图和收入的控制。因此,为了应对开源的成功,软件行业发展出一种生产开源软件的方式,使他们能够保留控制权。

但事实是…… 您无法真正同时拥有控制权社区。特定方对代码的独家控制权正在阻止其他贡献者参与。外部社区被视为免费劳动力,与内部贡献者相比,他们没有处于公平的竞争环境中,内部贡献者真正决定了软件的方向。这势必会造成挫败感。这不会形成可持续的社区,最终也不会产生可持续的软件。

一些公司遵循的开放核心模式造成了额外的社区紧张关系。乍一看,为软件的专有版本保留一组高级功能听起来像是一个明智的商业模式。但是,当贡献者提出可以使“社区版”更好的代码时会发生什么?或者当有人开始质疑为什么一个政党正在利用“社区”的工作时会发生什么?在最好的情况下,这会导致社区的消亡,在最坏的情况下,这会导致分支…… 这使得这种模式特别脆弱。

到 2019 年,我认为每个人都更加清楚,他们必须在保持控制权和发展健康的社区之间做出选择。然而,大多数公司选择保留控制权,并放弃真正社区贡献的想法。他们的目标是继续收获称其软件为开源的营销收益,假装拥有与开源标签相关的所有好处,同时应用一种控制配方,该配方比与自由软件和开源相关的原始自由和权利更接近专有软件。

开源的构建方式影响用户获得的好处

因此,像单供应商或开放核心这样的扭曲生产模式的问题在于,您会错过一些好处,例如可用性、可持续性、自助服务或参与并影响软件方向的能力。软件行业适应了开源的成功:它采用了开源许可证,但仅此而已,剥夺了与开源相关的用户利益,同时遵循了开源法律的字面意思。

这怎么可能?

问题在于,自由软件和开源都只解决了用户通过软件许可证获得的最终产品的自由和权利的角度。他们没有规定软件应该如何构建。他们没有说真正控制软件的创建。以及开源的构建方式实际上对用户从软件中获得的好处产生了重大影响。

可悲的现实是,在本世纪,大多数开源项目实际上都以某种方式封闭:他们的核心开发可能是在闭门造车的情况下完成的,或者他们的治理可能被锁定以确保主要赞助商的永久控制。每个人都在生产开源软件,但由真正开放的社区开发的项目已经变得罕见。

然而,通过真正开放的社区,我们拥有一个开源生产模式,可以保证自由和开源软件的所有好处。它有许多不同的名称。我称之为开放协作:一种模式,其中平等的社区在公平的竞争环境中为公共利益做出贡献,通常在开放治理下,有时通过中立的非营利组织的资产锁定。没有预留席位,没有精英开发人员在闭门造车的情况下进行设计。贡献是唯一有效的货币。

开放协作曾经是自由和开源软件生产的规范。虽然今天它更罕见,但最近像 OpenStackKubernetes 这样的开放基础设施社区的成功证明,这种模式在今天仍然可以在非常大的规模上可行,并且可以对业务友好。这种模式保证了我上面列出的所有开源好处,特别是可持续性(不依赖单一供应商),以及任何人参与、影响软件方向并确保其满足其未来需求的能力。

尽管我可能对此感到遗憾,但软件行业可以自由地以开源许可证发布其密切开发的软件。只要他们遵守 OSI 批准的许可证的条款,他们完全有权称其软件为“开源”。因此,如果我们想推广良好的、包含所有好处的开源,以对抗扭曲的、保留部分好处的开源,F/OSS 倡导者将需要重新集结、共同努力、重申开源定义,并在其基础上构建额外的标准,超越“开源”。

 

我们应该对此做些什么

因此,虽然开源是必要的,但今天还不够。我们这些开源爱好者和倡导者应该对此做些什么呢?首先,让我澄清一下我们不应该做什么。

这不是呼吁改变开源

自从 1998 年提出开源以来,软件公司已经发展出在生产开源软件的同时保留控制权的方法,并且在这个过程中剥夺了用户与 F/OSS 相关的一些传统好处。但是这些公司仍然遵守开源许可证的条款,为用户提供了明确的基本自由和权利集。

在过去一年中,许多公司决定他们想要更多的控制权,特别是与开源软件相关的任何收入的控制权。他们提出了新的许可证,取消了已建立的自由和权利,以便能够声称这种程度的控制权。开源定义 定义了任何开源软件都应具备的最低限度的自由和权利,因此开源促进会 (OSI) 作为该定义的坚定捍卫者,理所当然地抵制了这些尝试。

这些公司很快转而攻击 OSI 的合法性,将“开源”更多地定义为一个广泛的类别,而不是一组明确的自由和权利。他们创建了新的许可证,并带有欺骗性的名称(“社区”、“公共”、“公共”……),试图模糊界限,并为其现在的专有软件保留一些开源定义的氛围。

解决方案不是重新定义开源,或声称它不再相关。开源不是一种商业模式,也不是一种不断发展的软件生产方式。它是软件发布时所依据的许可证中表达的基本用户自由和权利集。像所有标准一样,它的价值在于其持久性。

是的,我确实认为,今天“开源”是不够的。是的,我们需要超越开源。但是,为了做到这一点,我们需要将额外的层次建立在坚实的基础之上:开源定义

这使得 OSI 的工作比以往任何时候都更加重要。开源过去受到来自外部的攻击,专有软件公司声称开源软件是劣质或危险的。这些都是明确的攻击,相对容易抵抗:这主要是教育和宣传,最终开源软件的质量可以用来证明我们的观点。现在它受到来自内部的攻击,传统上生产开源软件的公司声称它应该改变以更好地适应他们的商业模式。我们需要回到基本面,解释为什么这些权利和自由很重要,以及为什么模糊界限最终会削弱每个人。我们需要一个强大的 OSI 来领导这场新的战斗,因为这场战斗远未结束。

开源生产模式的分类

正如我在前面部分论证的那样,开源的构建方式最终会影响用户获得的好处。我们很多人都知道这一点,我们都提出了自己的词汇来描述当今开源的各种生产方式。

即使在给定的模型(例如,在公平的竞争环境中,平等者之间的开放协作)中,我们也使用不同的原则集:OpenStack 基金会拥有 4 个开放(开源、开放开发、开放设计、开放社区),Eclipse 基金会拥有开源参与规则(开放、透明、精英管理),Apache 基金会拥有 Apache Way…… 我们都提倡我们自己的变体,关注差异而不是我们共同拥有的东西:这些变体都启用的关键好处。

这种略有不同的词汇的丰富性使得团结起来并有效地沟通变得困难。如果我们没有明确的方法来区分良好的、包含所有好处的开源和扭曲的、保留部分好处的开源,那么混乱(所有开源都被认为是平等的)将使扭曲的生产模式受益。我认为现在是我们重新集结,围绕清晰、通用的开源生产模式分类达成一致的时候了。

我们需要根据这些模式向软件用户保证的好处对这些模型进行分类。开放核心不能保证可用性,单供应商不能提供可持续性,也不能有效地参与和影响软件的方向,而开放协作可以为您提供所有三者。

一旦我们有了这个分类,我们将需要围绕它进行大量沟通,并发出统一的声音。只要我们使用略有不同的术语(或在使用常用术语时意味着略有不同的含义),我们就会保持混乱,而这种混乱最终会使最严格的模式受益。

聚在一起

除此之外,我认为我们需要更多地交谈。开源会议过去都是关于教育和宣传:什么是这种奇怪的软件生产方式,以及为什么您可能应该对此感兴趣。一旦开源变得无处不在,这些水平的开源会议变得不那么相关,很快就被围绕特定堆栈或特定用例的更垂直的会议所取代。

这是一个很好的发展:这就是胜利的样子。问题是:开源的未来不再被讨论。我们躺在功劳簿上,而世界不断发展和适应。一些开源会议岛屿可能仍然存在,高级主题演讲仍在提出问题,但这些通常是单向对话。

为了完成统一词汇和定义开源生产方式的通用标准的这项重要工作,Twitter 是不够的。为了启动这项工作,我们需要会面,围坐在一张桌子旁,花时间一起讨论具体问题。理想情况下,这将围绕其他一些活动完成,以避免额外的旅行。

我们需要尽快做到这一点。这项工作变得紧迫。“开源”作为一种标准,由于与自由和开源软件传统相关的所有用户好处而具有很大的价值。这创造了一种光环,所有开源软件至今仍在从中受益。但是,由于扭曲的生产模式,这种光环正在随着时间的推移而减弱。在我们能够容忍多少单供应商开源,直到“开源”不再意味着您可以与社区互动并影响软件的方向?

所以这是我的行动号召……

在 2019 年,开源比以往任何时候都更加重要。开源并没有“获胜”,这是一项持续的努力,而我们今天正处于一个关键的十字路口。我认为开源倡导者和爱好者需要团结起来,定义关于开源软件构建方式的清晰、标准化的术语,并开始发出统一的声音围绕它进行大量沟通。除此之外,我们需要创建论坛来讨论关于开源未来的问题。因为无论您今天赢得多少场战斗,世界都不会停止发展和适应。

显然我没有所有的答案。并且有很多有趣的问题。现在只是我们有一个地方来提出这些问题并讨论答案的时候了。如果您有兴趣并想参与其中,请随时与我联系。


关于作者: Thierry Carrez 是 OSI 附属成员 OpenStack 基金会 的工程副总裁,也是 OpenStack 技术委员会的当选成员。“2019 年的开源”,第 1/3 部分、第 2/3 部分和第 3/3 部分,© Thierry Carrez,2019 年,通过 ttx:reloaded。经许可在此处重新发布,根据 知识共享署名-相同方式共享 4.0 国际许可协议

图片来源:OpenSourceIN2019_0.png”,由开源促进会,2019 年,CC0 1.0 通用 (CC0 1.0) 公共领域贡献,是“大棱镜温泉蒸汽中的木板路上的徒步旅行者”的衍生作品(裁剪和拉长),这是 美国国家公园管理局 的照片,由 Jacob W. Frank (2016) 拍摄,根据公共领域提供,通过 美国国家公园管理局