开源创新驱动:法律创新、流程创新、工具创新和商业模式创新
5 三月, 2021

Dirk Riehle是德国埃尔朗根-纽伦堡大学计算机教授,长期从事开源创新研究。本文是其于2019年4月在IEEE Computer发表的文章。



开源为我们带来的不只是软件开发模式的创新,还包括法律创新、流程创新、工具创新和商业模式创新。当然,最重要的创新是开源许可证。本文概述了这些创新的定义,并说明了开源对软件行业及其他方面的影响。




1 开源软件定义

凡是按照开源许可证提供给用户的软件就是开源软件。要使一个软件许可证成为一个开源许可证,它必须满足开源促进组织( Open Source Initiative)提出的十项要求,开源促进组织是开源的保护者和仲裁者。最重要的是,许可证必须允许:

  • 免费使用

  • 允许访问和修改源代码

  • 公开源代码和二进制副本

在开源软件出现之前曾有自由软件之说,这是自由软件之父Richard Stallman所给的定义。Stallman定义了自由软件赋予软件使用者四种自由:


使用自由,不管你出于何种目的;学习自由,快速提高学习者编程能力;拷贝自由,这样你就可以帮助别人;发布自由,你可以发布修改过的版本。”


开源软件和自由软件之间有不同观点的争论,但二者所产生的社会效果是一样的,且丝毫不会影响用户的使用。与用户有关系的重要事情是:使用开源代码时应遵循软件开源所遵循的开源许可协议




2 法律创新

许可协议可分为授权(授予用户的权利)、义务(接受授权所需要的)和禁止(不得做的事情)。例如,声称使用软件获得了创建者的背书。

两项法律创新是:

  • 前面所声称的所有权利

  • 反版权“copyleft”的特殊义务

授权促进了开源的传播并取得成功。研究表明,这是利用了人类在共同感兴趣项目上有相互帮助和合作的心理欲望。


最著名的许可义务或许是copyleft条款。该条款由Stallman发明,并在1991年通过GNU公共许可证第二版而流行开来。简而言之,它规定如果您使用了遵循copyleft许可的代码(例如作为您所销售产品的一部分),您也必须传递自己的源代码(如果它修改了遵循copyleft许可的代码)。许多公司担心,如果他们的源代码与受版权保护的代码混在一起,他们将失去他们的知识产权,从而在市场上失去竞争优势。


过去,许多公司正是根据这一条款,抹黑开源软件为“病毒”或“癌症”、“共产主义”或“嬉皮士事业”。实际上,没有人强迫您使用开源软件。


一些最著名公司15年前还在与开源做拼死斗争,现在却成为开源的最大支持者,这真是一个惊人的转变。




3 流程创新

开源带来的另一个创新是流程创新。关于开源软件开发,开源促进会所给的定义是:


“开源是基于分布式同行评审及过程透明的一种软件开发方法。开源承诺更好的质量、更高的可靠性、更大的灵活性、更低的成本,同时避免被供应商锁定。”


这是开源的另一个定义,其关注点不是许可协议和知识产权,而是协作开发。并不存在标准统一的开源软件工程流程,每个开源社区都有自己的定义。


流程创新最早是Linus Torvalds在Linux内核开发中所运用的方法。当时还没有一个专门的名字,后来与其绰号仁慈独裁者(BDFL)相一致,暗示着一个层级结构。开放协作的最大好处是“Linus定律”所表述的:“如果有足够多的眼睛,所有的bug都将无所遁形。”意思是,应用越广泛的软件就越成熟,因为可以及时发现问题并给与解决。


今天,比较流行的方法是对等协作组,这与前面一种方法有类似之处但略有不同。这是由Apache web服务器(httpd)原始团队摸索出来的,也被称为Apache范式(开源软件开发方式)。


Apache范式是一种“基于共识、社区驱动治理”的方法,用于开源项目中的协作。Apache软件基金会的网站对此做了详细的解释。其中,一个重要的方面是贡献者(提交工作以纳入开源项目)和提交者(审查和集成工作)之间的区别。在Linux上下文中,提交者被称为维护者,他们通常也是开发人员,而不仅仅是审查人员。



运用这种贡献者-提交者相互制约的方法,几乎所有的开放源码项目都进行预提交代码审查,以确保软件开发的质量。


开源软件开放协作的三个原则是:在开放合作过程中,所有参与者都是平等的(任何人都不得被偏见地排除在外);精英参与决策(决策是基于在项目中的共献,而不是在企业层次结构中的地位和级别);自组织(人们完全是自驱动、主动选择参与,而不是将项目、流程或任务分配给他们)。


开源项目应实行开放交流。开放交流应是公开的(每个人都可以看到)、书面的(可供未出席会议者学习)、完整的(记录下来才能证明有人说过)和存档(以便人们可以在以后查看、回顾和讨论)交流。


这种开放协作过程不受任何人或组织支配,产出是社区开源软件:共同拥有、管理和开发。这种开放生产协作过程并不局限于软件,还可以扩大到其它相关领域。软件开发方法已经成为其它行业的事实标准。


开源软件开发的方法同样适用于企业内部,称之为内源(内部开源)。




4 工具创新

开源软件开发所使用的大多数工具也同样适用于闭源软件。开源过程需求管理推动了以下两个工具创新,它们已成为企业软件开发的重要组成部分:

  • 软件锻造(Software forges)

  • 分布式版本控制

软件锻造是一个允许创建新项目的网站,并为开发人员提供软件开发所需的所有工具:主页、问题跟踪器、版本控制等。


软件锻造的特别之处在于,它为软件组件需求者与软件组件提供者之间的匹配提供了便利。软件锻造为企业提供的是软件产品类别,因为即使在一家公司中,也希望有一个地方可以找到正在开发的所有软件。


分布式版本控制指复制原始代码库并使用副本的版本控制。因此,您不需要提交权限,也不需要请求权限来开始工作。Git和Mercurial是这类软件最著名的两个例子。有些人可能会说,分布式版本控制不专属开源创新,因为一些专有软件也有版本控制。然而,开源社区开发并改进了自己的解决方案,这些解决方案与开源软件的开发方式很好地配合,因此推广了这个概念。


将分布式版本控制与分叉相比较是没有意义的。拥有自己的代码库可以让开发人员按照自己的风格工作,而不必对如何使用分支进行集中决策。


分布式版本控制促进了新一代软件平台(最著名的是Github和Gitlab)的成功,反过来,新一代软件平台也促进了分布式版本控制。因此,公司正在快速采用锻造和分布式版本控制。




5 商业模式创新

开源为个人和公司之间的开放合作奠定了法律基础。相对闭源方法,开源合作更有效率、生产率更高,并促进了相关工具的发明。这只是开始:开源正在改变软件产业发展方式,并颠覆了旧的商业模式。开源本身可能不是一种商业模式,但它是一种在竞争环境中使用的强有力的战略和工具。

5.1 开源盈利模式

关于开源的盈利模式,有不同的分类方法。这里将它们分为五类。其中三种是盈利模式,两种是非盈利模式。营利性的商业模式是:


1. 通过提供咨询和服务支持盈利

在这种传统的模式中,公司通过为现有的开源软件提供咨询和支持服务来赚钱。他们不出售许可证,但他们仍然为软件服务。最早的开源服务公司是Cygnus Solutions,它为GNU工具集提供服务;最新的一个例子是Cloudera和Hortonworks,它们为Hadoop服务。


2. 分销商商业模式

在这种独一无二的开源业务模式中,公司出售(订阅)部分或完全开源的软件及相关服务。这种模式只适用于复杂的软件,这些软件有数十个或数百个,有时甚至数千个可能不兼容的组件组成。

最著名的例子是像Red Hat和SUSE这样的Linux发行商,但还有许多其他较小的公司提供其他类型的发行版。供应商对于具有竞争力的知识产权部分,如测试套件、配置数据库、兼容性矩阵等,它们通常不会开源。


3. 单一供应商的开源业务模型

在这种模式中,公司通过提供其产品的开源版本进入市场,有时是删减的,有时是完整的。这家公司从不放弃对软件的完全所有权。然后,它建立了各种激励机制,促使用户从免费的开源版本转向付费的商业许可版本。最常见的激励措施是支持和更新服务,但通常也是copyleft许可,用户希望用专有许可来替代。

如果做得好,该公司及其产品将受益于非付费用户社区的帮助。该公司通常不会得到代码贡献,但它确实得到了活跃的论坛讨论、bug报告、功能创意、口碑营销等。


这种模式最著名的例子是数据库公司MySQL。最近又涌现出很多公司,如SugarCRM、MongoDB和Redis Labs。


分销商和单一供应商模式特别重要,因为它们吸引了风险资本家并为其带来了丰厚回报。风险投资成为开源软件投入的主要渠道。


5.2 开源基金会

还有另外两种模式,为开源软件开发提供资金支持。它们实际上是同一理念(开源基金会)的两个变种。


开源基金会是一个非营利组织,其任务是管理一个或多个开源项目,合法地代表它们,并确保它们的未来。在过去,开源基金会的建立是为了确保不受支持的社区开源项目的生存,但我们看到越来越多的公司联合起来建立一个基金会,以开发新的开源软件为目标。


1. 开发者基金会

这种类型的非盈利基金会是由软件供应商(开发者)运营的,他们决定联合起来确保他们所依赖的开源软件的生存和繁荣。


通过确保软件所有权的广泛共享,供应商确保没有人可以垄断这种特定类型的组件,并从依赖它的软件产品中获得全部利润。这就是为什么Microsoft Windows支持Linux、Microsoft Visual Studio支持Eclipse、Amazon Web服务支持OpenStack的原因。


2. 用户基金会

这种类型的非营利组织主要是由非软件供应商组成,由依赖于基金会所管理软件的公司运营。例如Kuali基金会为大学运行软件,GENIVI基金会为汽车信息娱乐软件,openKONSEQUENZ基金会为(德国)智能能源电网软件(最后一个是我帮助创建的)。


图1显示了用开源组件替换产品中的封闭源组件,如何在不同的组件供应商之间实现价值传递,并为集成组件和销售最终产品的供应商留下更多利润。

图1: 社区开源的经济逻辑


由于这种经济逻辑,希望有更多软件行业以外的产品供应商和服务供应商参与到这个游戏中来。他们将资助他们所需要的开源组件的开发,从这类组件的市场中取出资金,并将其转移到更容易使用的地方。因此,我们可以预期,在未来,开源软件开发的投入资金将呈数量级增长。



>>>阅读原文:https://dirkriehle.com/publications/2019-selected/the-innovations-of-open-source/