商业洞察:开源已经成为软件开发的代名词

2021年3月15日 单位
商业洞察:开源已经成为软件开发的代名词
上海开源信息技术协会

开源软件改变了软件的开发方式。这是价值330亿美元产业的发展方向。


虽然IBM和Oracle等专有软件供应商曾主宰过技术领域,但开源已经改变了软件构建和实现的方式。


一提到软件开发,人们自然就会想到开源,软件开发和“开源”几乎成了同义词!


作为软件开发中最具协作性的方法,经过20年的发展,已经成为主流的方式。事实上,根据CB Insights的市场规模分析工具,开源服务行业在2019年将超过170亿美元,预计到2022年将达到330亿美元。


开源软件具有如下特性:可公开访问、允许开发者以透明和协作的方式交换代码和创意。开源软件还为企业解决更多广泛问题提供了灵活性。


如今,超过3000万名开发者通过GitHub等社区平台做贡献。2018年以来,发生了一系列规模巨大的开源收购活动,如红帽(被IBM以340亿美元收购)和GitHub(被微软以75亿美元收购),以及MongoDB(79亿美元)和Elastic(73亿美元)等。预计整个开源产业市值已达数千亿美元。


本文将讨论开源的主要特征,什么是开源软件?开源的主要参与者是谁?开源的主要受益者(云提供商),以及未来展望。



什么是开源软件?

软件开发协同最早可追溯到20世纪40年代,当时还处在二进制、可编程计算机时代,只对少数享有特权的人开放。直到20世纪60年代,通过修改和重新分发源代码,建立人类可读的代码库等开源模式才成为一种社会实践。


随着捆绑软件(与专有硬件打包的专有软件)的兴起,用户可以自己排除故障并修改源代码,许多制造商甚至鼓励这种做法,这样就减少了客户对供应商频繁的现场服务的需求。


大学是最早使用计算机软件和硬件的机构,他们开始与其他大学分享错误信息、错误修复方法,甚至软件改进的方法。此后不久,大学开始与公众分享免费使用的软件(称为公共领域软件)。在整个1970年代和80年代,阿帕网和CSNET都支持这一行动,促进了学术机构之间的电子通信。

20世纪90年代中期,互联网开始普及,无论是学术机构还是青少年,每个人都可以通过电子方式交流和获取信息。这为软件开发人员创造了新的合作机会,他们可以通过互联网分享他们的工作。


当时,微软、IBM、甲骨文(当时的软件开发实验室)、SAP、SAS(统计分析系统)和施乐等公司开发的商业软件在软件领域占据着主导地位,但这些专业软件的开源替代方案已经开始涌现。



开源工作原理

开源软件(OSS)是开发者可以检查、复制、修改和重新发布的任何类型的程序或应用程序。这种类型的软件也被称为自由开源软件(FOSS)。


开源程序的源代码(构成应用程序的设计、功能和定义属性的底层代码)必须是可以公开可访问的。那些可以访问源代码的人可以学习、复制、修改源代码,并与他人共享修改后的版本。


例如,任何企业都可以使用协作软件来改进自己的软件。


  • 首先,开发人员研究开源项目(应用程序或技术解决方案)。

  • 然后,研究项目的源代码,以确保兼容性、安全性和合规性。

  • 之后,复制,修改源代码以满足个性化需求。

  • 最后,开发人员将把修改后的源代码应用到企业的专有软件中。


他们可以选择与公众共享修改后的源代码,或将其保留自用。这取决于企业如何使用源代码,以及开源项目的许可协议。


开源软件项目的规模和范围有大有小,这取决于项目的目的和开发人员的数量。成千上万的开发人员可能会为一个为全球企业设计的大型数据库项目做出贡献,而只有少数开发人员可能会为一个较小的项目做出贡献,比如为智能家居爱好者设计的DIY智能家居自动化。


互联网泡沫之后,涌现出的著名开源项目有:2002年Mozilla公司的Firefox(网景公司开发的一种开源互联网浏览器)和2005年Git(由Linus Torvalds创建的源代码版本控制系统)。


最近,出现的开源项目有:类似Redis的开源数据库,类似OpenStack的开源基础设施即服务,类似TensorFlow的开源机器学习库等。



开源协议(及其重要性)

随着开源软件的发展,如何规范开源软件的使用就显得十分重要,开源协议应运而生。


每种协议都定义了修改和重新发布源代码的不同策略。有些协议限制很严格,如要求开发人员必须共享他们的更改;而有些协议则相对自由,开发人员不必重新分发他们的修改。


选择什么样的开源协议是建立项目基础工作。虽然开源协议之间的差异不大,但开源协议的选择对项目及其社区有着长期的影响。


软件项目可以根据自己选择的协议自由发布。然而,使用开源倡议(OSI)已经批准并在社区内流行的协议来发布要常见得多。

Source: Wikiwand

开源软件许可证主要有两种类型:自由授权许可证(Permissive License)和版权许可证(Copyleft License)。自由授权许可证更自由,开发者不需要共享他们修改过的代码;而版权许可证限制更严格,开发者必须开放在原始项目的所有更新。


最流行的许可证是MIT协议和Apache 2.0协议。


麻省理工协议很容易理解,许多开发人员通常会选择使用该协议的项目(其他条件都相同),但Apache 2.0协议中的条款比MIT协议中所列出的条款更详细。因此,Apache 2.0协议在大型开源项目中很受欢迎,这些项目有数百(或数千)贡献者,通常为企业级部署而设计。


遵循Apache 2.0协议的项目有Docker、Kubernetes、Swift和TensorFlow。


与之相对的是GNU通用公共许可证(GNU GPL),它是最流行的copyleft许可证之一。尽管某些组织由于copyleft的要求而避免使用GNU GPL软件,但它被认为是最公平的许可之一,因为用户被要求开源他们所有的更新。


然而,近年来GNU GPL的使用已经减少,因为许可许可已经成为了规范。今天最流行的数据库之一MongoDB在2018年10月从GNU GPL切换到专有许可证。

Source: Wikiwand

还有几十种其他的开源软件许可,但开发人员只接受了少数几种。这有助于一致性、便于理解和社区建设。例如,如果有经验的开发人员遇到一个使用Apache 2.0许可的项目,他们就会对该软件如何使用以及哪些受到限制就有一个大致的了解。因此,他们可能更倾向于使用它。


然而,重要的是还要考虑开源软件许可如何促进或抑制未来的盈利机会。虽然采纳率的增长是早期的一个关键指标,但盈利对于支持项目和用户需求是必要的。



开源软件盈利模式

大多数开源软件项目一开始都不是以盈利为目标。


相反,他们只是针对某一问题寻求一种解决方案。有些问题很小,只有少数开发人员参与。有些问题则很大,参与的人就很多。


一个好的开源项目,随着其需求日益增长,规模就会越来越大,人们自然会试图建立一个产生收入的业务模式,以支持项目可持续发展。


通常情况下,这些产生收入的业务由项目的创始人发起,为采用该软件的大型组织提供服务和支持。


虽然开源软件的代码是免费的,但使用开源代码的企业还是愿意为相关服务和支持付费。


企业希望得到保证:开源软件的安全缺陷要得到及时修复,希望有人能为之提供专业的帮助,以增强软件的寿命。他们不愿意使用那些一直有漏洞,配置操作比较复杂或可能过时的开源软件。


有了稳定的收入,贡献者就可以为开源软件安全运行提供保证。这种“商业支持”模式是目前最成熟的盈利方法之一。当然,开源软件还有其它盈利模式。


开源软件盈利模式因公司而异,并随着组织的成熟而改变。

Source: Gravitational

还有一种日渐流行的模式,也被称为“开放核心”模式,将开源与专有软件相结合。核心平台仍然是免费和开源的,尽管功能有限。然后,用户可以选择为附加的服务付费,或者解锁一个功能丰富的专有平台。


所以,一些传统上意义上的专业软件可能会采用开放核心模式来建立自己的开源生态,而一些开源软件可能会采用开放核心模式来获取盈利机会。“开放核心”公司的例子有Docker、Elastic、GitLab、MongoDB和Redis。


值得注意的是,“开放核心”模式也存在不同的“开放性”变体。开放核心组织可以根据其公司战略和商业利益,选择开放程度的高低。如何在私有和开源之间取得平衡是开放核心模式的最大挑战。

Source: Joseph Jacks

近年来出现了企业赞助形式的开源盈利模式,这些公司所拥有的开源软件项目被当作商业开发资源,而不是直接盈利的手段。


所以,开源软件并不是该公司的主要产品。相反,像开放核心模式一样,他们赞助开源软件项目是为了向人们表明其有为该开源软件提供专有产品和服务的能力,从而获得商业利益。


例如,谷歌赞助Kubernetes的模式,并拥有大量开发人员,除了自己使用外,还可以提供相关专业服务。Kubernetes是一个开源软件平台,可以自动部署、扩展和管理容器化应用程序。

Source: Ruben Orduz

容器化的应用程序由许多存储单个微服务的容器组成。它们提供独立运行微服务所需的一切(库、配置文件等),但它们是轻量级的,这使得它们不需要那么多资源,而且更具成本效益。


微服务作为更小的、单独的服务(代码片段)运行,它们连接在一起形成一个全面的应用程序。例如,零售商的电子商务应用程序可能有多种微服务(一种用于登录认证,另一种用于商店定位服务等等)。


作为一个容器编排工具,Kubernetes能够管理数百(甚至数千)个容器的部署和操作。根据New Relic的数据,亚马逊的工程师11.7秒就能完成代码部署,而Netflix的工程师每天要部署数千次代码,这都要归功于通过容器部署的微服务(以及持续部署实践)。


虽然谷歌并没有直接利用Kubernetes赚钱,但该服务的广泛采用已经为公司的云服务谷歌云平台(GCP)带来了知名度。


在竞争日益激烈的云服务市场中,通过开源项目建立开发者的信任可以提供有价值的差异化。



开源软件开发者

尽管不少大的开源软件项目(数十亿美元的业务)是由单个开发人员白手起家建立起来的,但许多最新、最成功的项目都是世界上最大的科技公司的产品。


尽管每年有数百万独立开发者向GitHub托管平台上的项目贡献代码,但来自企业员工的贡献也在不断增加。


公司员工既参与独立项目,也参与各自组织内部孵化的项目。


微软、谷歌、英特尔和Facebook,它们都不是开源公司,但都在GitHub上积极参与各种项目。2018年,微软员工是GitHub最多产的贡献者,大约有7700名独立贡献者(2017年总计有4550名贡献者)。


GitHub于2018年6月被微软以75亿美元收购。当时,这是历史上最大的企业软件收购案(2018年10月,谷歌340亿美元收购红帽,译者注)。

Number of unique contributions made by employees. Source: GitHub

谷歌员工在GitHub上也很活跃,2018年共做出5500次集体贡献。这些贡献中有许多帮助改进了较小的、独立的项目,尽管大多数是在支持谷歌自己的开源软件项目,如Kubernetes、Istio和Knative。


近年来,谷歌最成功的另一个开源项目是机器学习(ML)库TensorFlow,这是目前最流行的机器学习库。它的广泛使用推动了庞大的、活跃的社区的形成,许多独立开发人员为此做出了贡献。


随着企业赞助的项目越来越受欢迎,独立开发者也会继续做出贡献。


例如,微软的Visual Studio代码项目总共有超过19,000个贡献者,它是GitHub上最受欢迎的项目。2018年,微软员工对该项目的贡献总计7700份,占少数。


在GitHub上,许多非常受欢迎的开源项目都是如此。在10个最受欢迎的GitHub项目中,有8个是大型科技公司的产品,如微软、Facebook、谷歌和IBM(Ansible)。然而,只有一小部分贡献来自他们公司内部的员工。


Source: GitHub

虽然这些项目对公众免费,没有直接货币化,但对赞助公司来说,它们是非常有价值的资产。


有成千上万的开发者参与其中,这些科技巨头吸引了无数开发者参与(贡献代码却不用付费),并从用户的反馈中获益。这种模式使得科技巨头可以更快地构建更好的软件。


2017年4月,GitHub统计有近2000万用户和5700万个存储库,这些存储库存储源代码、对源代码的更改以及这些更改的历史。在微软收购GitHub时,GitHub拥有2800万用户和8500万个存储库。截至2018年底,GitHub拥有3100多万用户和9600多万个存储库。


随着贡献者的数量和存储库总量的增长,这些技术巨头能够更好地识别未来的企业客户。


例如,亚马逊、微软或谷歌可能会把他们各自开源项目的贡献者作为未来云计算收入的来源——今天参与的开源贡献者可能会成为明天的云计算客户。



开源领域的新挑战

云计算巨头们从GitHub上托管的热门项目中获益颇多。因此,独立的开源软件提供商变得越来越谨慎,因为云计算提供商从他们的贡献中获益。


近年来,云计算提供商复制了流行项目的源代码,只对软件进行了很小的更改(如果有的话),重新命名软件,就将其作为专有服务提供给客户。


使用许可证的开源软件服务,如MIT和Apache 2.0许可,尤其容易受到攻击。


为了应对这些威胁,许多受欢迎的服务都采用了新的许可证,以限制商业服务提供商的滥用,但允许持续的病毒式传播。


2018年8月,数据库管理系统公司Redis Labs在其许可许可Apache 2.0中添加了共用条款(Commons Clause)。Redis本身仍然是开源的,但该公司的某些方面仍将禁止那些没有做出贡献却将其服务货币化的人使用。


共用条款是一个130字的附加条款,用于限制其他商业服务提供商自行销售软件。然而,它确实允许组织使用和构建授权软件。


Source: The Commons Clause

使用共用条款的软件被称为“可获得源代码”。虽然不像许可协议那样自由,但可以提供比自由开放源代码许可证(如GPL和AGPL)更多的商业自由。


然而,在2019年2月,Redis放弃了共用条款,用一个新的可获得源代码许可替换,创造性地命名为Redis可获得源代码许可(RSAL)。该公司认为,定制许可证最适合公司及其未来的福祉。


开源公司MongoDB(一个流行的NoSQL数据库平台)和Confluent(一个为处理数据流而设计的服务)也转向了自己的定制许可。

Source: Scale Venture Partners

然而,对于社区和商业服务提供商来说,这些变化仍然存在争议。如:一个软件项目可能采用多个开源项目,而这些开源项目采用不同的许可证。


在某些情况下,软件的某些方面可能保持完全开源,而另一些可能成为专有的。此外,这些开源和专有方面可以混合在同一个代码库中。


独立开发者和公司开发者对于哪些服务可以修改,哪些服务不能修改感到困惑。开发人员不想违反许可条款,因为它缺乏明确性。


例如,一个流行的开发人员搜索引擎Elastic有三层许可:免费开源、免费专有和付费专有。然而,免费的开源和免费的专有层的源代码经常纠缠在一起。


结果,AWS在客户继续遭遇挫折后,宣布推出Elasticsearch((Elastic的主要产品)的新发行版本。Elastic的首席执行官迅速回击,解释说公司并没有被这一举措所影响,原来的Elasticsearch将会战胜AWS新发行的版本。


即便如此,据估计,AWS在2018年仅从其亚马逊Elasticsearch服务的前100名客户中就创造了超过1亿美元的收入。


很难说Elastic下一步会做什么,变更开源许可证也不是不可能。尽管该公司承诺开源,但也存在一个底线,其容忍度也是有限的。



开源前景展望

无论结果如何,开源领域正在发生变化。


尤其是云服务提供商,他们在日益激烈的竞争中脱颖而出,而开源软件为其提供了免费的代码。


如果第三方开源软件服务在云服务提供商的客户群中很流行,那么云服务提供商复制该服务是明智的。有意思的是,云服务提供商可以从第三方服务中复制每一行源代码,给它一个有创意的名字,并使其专有。


这正是今天正在发生的事情。大规模的软件服务将继续面临一个艰难的抉择:继续忠于开源社区还是限制云服务提供商的滥用?


目前还没有明确的答案,但最近的行动指向后者。


开源软件服务将继续尝试新的许可类型,在开放和封闭之间找到正确的平衡,试图在不限制未来盈利机会的情况下满足用户。



参考资料:

https://www.cbinsights.com/research/report/future-open-source/