导读
开源的本质在于开放、共享、协同。开源模式是一种依托互联网平台,大规模群体智慧通过共同参与和协作而不断累积,实现持续创新的方法。
文章来源
本文由e-works编辑部杨培原创发布。
近年来,伴随着开源的浪潮不断奔涌向前,开源运动在国内外呈蓬勃发展之势。比如,2021年6月和11月,华为先后将鸿蒙(HarmonyOS)核心基础架构和欧拉开源操作系统(openEuler)捐赠给开放原子开源基金会,以共建和繁荣国内操作系统开源生态。2021年10月,阿里平头哥宣布开源玄铁RISC-V系列处理器,并开放系列工具及系统软件,以推动RISC-V软硬件技术加速融合发展与创新落地。2022年1月31日,CentOS Linux社区正式停止更新和维护CentOS Linux 8操作系统,转而开发和维护新的CentOS Stream版本,以实现完全意义的开源模式。2022年5月,百度宣布其自主研发的产业级深度学习开源开放平台“飞桨(PaddlePaddle)”,已凝聚477万开发者、服务18万家企事业单位。2022年7月,芯华章正式宣布向openDACS捐赠高性能开源数字仿真器EpicSim,促进芯片开源技术协作创新。
开源运动最早可追溯到上世纪60年代。而如果从1991年林纳斯·托瓦兹(Linus Torvalds)创造并发布Linux操作系统内核,让开源运动逐渐步入正轨开始算起,到如今也已经走过了31个年头。在这31年间,开源运动从早期的以Linux操作系统、桌面办公软件和浏览器为主的开源项目,逐渐拓展到数据库、中间件、物联网、微服务、大数据、人工智能、边缘计算、云计算等众多方向和领域。与此同时,开源文化的影响力也开始受到诸多关注。
01
开放、共享、协同
“开源文化”的本质特征
开源(Open Source)这一概念兴起于软件行业,其基本内涵是开放源代码,也即源代码开放共享的开发模式。在开源模式下,通过许可证的方式,使用者在遵守许可限制的条件下,可自由获取源代码等,并可使用、复制、修改和再发布。
中国开源软件推进联盟发布的《2022中国开源发展蓝皮书》指出,开源的本质在于开放、共享、协同。开源模式是一种依托互联网平台,大规模群体智慧通过共同参与和协作而不断累积,实现持续创新的方法。该方法中,项目的核心开发人员与大规模的外围群体紧密合作,他们通过互联网共享资源、开展协同开发、管理代码等,由此使得项目开发的效率、应对需求变化的能力大幅提升。
表1
中国开源软件推进联盟于2016年
归纳提出的(已被国际认可)开源特征
发展至今,开源作为一种创新协作模式,其表现形式已不仅仅局限于开源软件(Open Source Software),而且也包括开源硬件(Open Source Hardware)、开源设计(Open Design)、开源文档(Open Document)、开源技术(Open source Technologies)等。
1.开源的主要表现形式
◉ 开源软件:可以理解为一种技术和立场中立的使用许可证约束的开放源代码的软件。根据开放源代码促进会(Open Source Initiative)的开源定义(The Open Source Definition),开源软件并不仅仅意味着源代码可获取,还必须满足分发自由、原作者源码完整性、不歧视个人或团体、不歧视任何领域、不限制其他软件、许可证必须是技术中立的等十项原则。Linux操作系统是最为典型的开源软件。
◉ 开源硬件:开源硬件的概念是受开源软件的启发而来,但实际上早在上世纪60年代就已经有了开源硬件。根据开源硬件协会(Open Source Hardware Association)对开源硬件的定义,开源硬件是可以通过公开渠道获得的硬件设计,任何人可以对已有的设计进行学习、修改、发布、制作和销售。目前较为知名的开源硬件包括Arduino、树莓派(Raspberry Pi)、BeagleBone、micro:bit、虚谷号等。
◉ 开源设计:开源设计是开源项目的另一表现形式。开源设计被定义为遵循开源许可的可以通过公开渠道获得的设计类项目,主要指的是非源代码类型的项目,比如icon、UI、画稿、图纸等。这些项目也需要遵守开源协议,并且享受协议规章的保护。
◉ 开源文档:开源文档被定义为遵循开源许可的可以通过公开渠道获得的文档类项目。开源文档存在于各种项目中,种类覆盖广泛,比如博客、百科、菜谱、项目说明文档等都可以作为开源文档进行分享。
◉ 开源技术:指的是从代码托管平台、开源社区、开源机构官网等渠道获取,或通过合作研发、商业采购等方式引入的开源代码、开源组件、开源软件和基于开源项目的云服务等。
2.主流开源技术盘点
伴随着开源的浪潮奔涌向前,目前围绕开源已经形成了巨大的技术生态体系,并且越是在新兴领域,开源技术的比例就越大。
(1)Docker——开源的应用容器引擎
近年来,容器技术迅速席卷全球。应用程序容器化,颠覆了应用的开发、交付和运行模式,在云计算、互联网等领域得到广泛应用。容器化是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,让它们隔离在自己的“容器”中。这样,容器内的软件或应用就可以在任何环境和任何基础架构上一致地移动和运行,不受该环境或基础架构的操作系统影响,实现“一次构建,随处运行”。
本质上,容器化技术借鉴的是货物运输的“集装箱”解决方案。集装箱解决方案通过将货物集中装入大型标准化的货箱内,从而可以适用于火车、卡车、轮船以及飞机等运输场景,进而简化装卸工作,加快货物运输。而容器化技术打包的是“应用及其依赖的包”,让应用变成一种标准化的组件,摆脱与系统之间的紧耦合关系,能在任何主流系统中开发、调试和运行,进而帮助开发者和企业更加便捷地上云和进行云上迁移,让应用在自有数据中心和云端实现动态迁移。
当前,Docker几乎已成为容器技术的代名词。然而,实际上Docker本身并不是容器,而是创建容器的工具,是开源的应用容器引擎。Docker作为一种应用虚拟化技术,由Docker(原名dotClould)公司开发,并于2013年宣布开源。Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。如今,Docker作为一项热门的开源的容器技术,正受到越来越多的开发者和面临IT转型的大型企业的青睐。
(2)Kubernetes——开源的容器编排平台
在Docker技术备受追捧的同时,问题也随之而来。人们发现,随着微服务技术的广泛应用,部署项目容器的数量越来越多,如果将Docker应用于具体的业务实现,编排、管理和调度等各个方面都存在困难,因此迫切需要一套管理系统,以对Dcoker及容器进行更简单、高效、灵活的管理。于是,Kubernetes技术应运而生。
Kubernetes源于希腊语,意为“舵手”或“领航员”,缩写为K8s,用“8”代替了“ubernete”这8个字符。Kubernetes是一个可移植、可扩展且开源的容器编排工具。容器编排是指自动执行容器的部署、管理、扩展和联网,用户可以利用该工具来管理集群化容器应用。Kubernetes的前身是谷歌(Google)的Borg系统,谷歌于2014年开源了该系统,命名为Kubernetes,并于2015年捐赠给了云原生计算基金会(CNCF)。目前,Kubernetes已拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。
(3)OpenStack——开源的云计算管理工具
OpenStack被称为当今世界部署最广泛的开源的云计算管理工具,它通过命令或者基于Web的可视化控制面板来管理IaaS云端的资源池(服务器、存储和网络)。OpenStack是由美国国家航空航天局(NASA)和Rackspace于2010年合作研发并发起,旨在为公共及私有云的建设与管理提供软件的开源项目。2012年,OpenStack基金会作为独立组织来管理和推广这项技术,成为该项目的分水岭时刻。根据OpenStack基金会官方数据,如今OpenStack为100多个公有云数据中心及上千个私有云的运行提供支持,整体部署规模超过2500万计算核心。
(4)Hadoop——开源的分布式存储计算架构
混合云时代,为了应对数据的爆发式增长、生产系统对系统连续性的要求,提升运维效率,降低运维风险和管理成本,企业纷纷构建“数据湖”,以打破数据孤岛与信息孤岛,实现对海量数据的高效存储、管理和使用。而谈及大数据、数据湖,人们往往会把它们与Hadoop联系到一起。
Hadoop是由Apache基金会开发,较早用于处理大数据集合的开源的分布式存储计算架构,主要是为了解决海量数据的存储和分析计算问题。Hadoop包括4个基本模块,分别是Hadoop基础功能库、HDFS分布式文件系统、YARN分布式资源调度系统和MapReduce分布式离线并行计算框架。此外,Hadoop生态圈还包括Ambari、Avro、Hive、Pig、Spark等组件。在工业界,Hadoop已经是公认的大数据通用存储和分析平台,许多厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务。
当下热门的开源技术还有很多,比如MySQL、openGauss、Hyperledger、RISV-C、TensFlow、PyTorch、ROS(Robot Operating System)、EdgeX Foundry、EdgeGallery等,涉及数据库、区块链、芯片设计与开发、人工智能与深度学习、机器人以及边缘计算等众多领域。
02
开源推动敏捷开发
持续交付与云计算创新
对于开源的优势,开源运动的灵魂人物埃里克·雷蒙德(Eric S.Raymond)曾经做过非常生动形象的比喻。在他的著作《大教堂与集市(The Cathedral & the Bazaar)》中,他把等级森严的闭源世界比作大教堂,而把开源的软件开发世界比作集市;相比庄严肃穆的大教堂,集市更有生机和活力,也更适合人与人之间的交流。
事实上,开源也正是如此。开源作为一种扁平化、自洽管理的协作形式,能够汇聚众智,高效调动开发资源,更好地实现优势互补,促进多方协同和技术迭代演进。而且,开源共享也是当前数字技术深入发展的鲜明特征,以开源开放的形式来集聚力量,实现“技术共建”,往往要比各自为战的效果更好。当前,开源在助力敏捷开发、DevOps与持续交付,以及云计算创新等方面发挥着重要作用。
1.开源推动敏捷开发
近年来,在科学技术飞速进步、市场竞争加剧、消费者需求多样化和个性化以及不确定风险增加等多重因素的叠加之下,产品更新换代的速度越来越快,产品生命周期也正在变得越来越短,这尤其体现在高科技电子、软件和互联网等行业。“敏捷开发”(Agile Development)作为一种能应对快速变化的需求,缩短交付周期的开发模式越来越受到关注。
敏捷开发常常被拿来与瀑布模型(Waterfall Model) 作对比。瀑布模型,是一个经典的理想化的软件开发模型,也被称为传统模型(Conventional Model),于1970年被温斯顿·罗伊斯(Winston Royce)提出。瀑布模型的核心思想是,按照工序将问题化繁为简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开;它将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,自上而下逐级下落,完成一个阶段后再继续下一个阶段。
瀑布模型非常符合软件工程学的分层设计思路,适用于大型软件的开发,因此成为软件开发企业使用最多的开发模型。瀑布模型的优点是,它借鉴了建筑工程领域的思想,使得软件开发如同盖房子一样简单易行;而且,它也让软件开发过程有序可控,能实现项目经理、产品经理、架构师、软件工程师、测试工程师、运维工程师良好的分工协作,同时也能保障所开发出的软件产品的质量。
然而,瀑布模型的缺点在于,一是难以及时响应需求变更。需求具有不确定性,而且并不是一次性或者一段时间内,就能完全定义清楚的;在瀑布模式里,当需求发生变更时,越到后期代价越大。二是工作量分布不均衡。比如前期开发、测试人员无法参与,而后期开发、测试人员又会特别忙碌,如果上个阶段进度受阻,则会一直压缩后续阶段的时间,导致延期或影响质量;三是价值交付周期长。在瀑布模型里,一个产品从立项到交付给用户,一般需要几个月、一年甚至几年的时间。四是开发出的软件产品可能并非用户所需。在瀑布模型下,用户通常只有在最后阶段才能看到可运行的软件产品,最终开发出的产品可能并不是用户真正所需要的。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目被切分为多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行的特征。简单来说,敏捷开发并不追求在前期就实现完美设计、完美编码,而是力求在很短的时间内开发出产品的核心功能,尽早发布出可用的版本,然后在后续的生产周期内,按照新需求不断迭代升级,完善产品,做到“小步快跑、快速迭代”。
敏捷开发本质上是一种思维,并没有固定的流程和方法论。目前敏捷开发的实现方式,主要包括SCRUM(迭代式增量开发)、XP(全称“Extreme Programming”,极限编程)、Crystal Methods(水晶方法)、FDD(特性驱动开发)等。其中,SCRUM和XP最为流行。与瀑布模型相比,敏捷开发的优点是能更加灵活地应对需求变更,缩短功能开发时间,并可尽早得到市场反馈,从而快速响应市场变化,提高规避风险的能力。
实际上,要实现敏捷开发,拥抱开源是比较可行的方法。这是因为,在目前敏捷开发、快速迭代的需求下,对大多数企业而言,试图独立完成所有工作可能并非是最好的方法。当一个企业已经完成了一个软件项目并准备推出时,它的竞争对手很有可能已经领先了好几圈,而借助开源可以形成后发者优势。有了开源,许多软件开发的基本构件已经就位,因此项目可以更快地完成,并且可以将更多的注意力集中在那些对业务最有价值的领域。
在当今的敏捷开发实践中,开源技术已被大量使用,并已从软件开发扩展到更广泛的领域,成为增强敏捷性的关键。比如,在芯片设计与开发领域,伴随着摩尔定律几近失效,传统的追求通用性能的芯片开发策略难以持续,但芯片领域过高的门槛和商业限制又阻碍了进一步创新和对市场的响应速度,在此背景下,开放指令集(如RISC-V)、开源硬件构造语言(如Chisel)以及开源EDA等的出现及崛起,使得开源技术成为降低芯片开发门槛、助力芯片敏捷开发的关键因素。
而且,中国信通院于2021年发布的《开源生态白皮书》数据显示,物联网行业89%的代码库中包含开源代码;生产制造和网络安全领域开源代码占比均为84%;移动应用软件、教育技术、医药健康以及营销技术行业开源代码占比均为 82%,开源正深刻地影响着千行百业信息技术的革新与演进。
2.开源推动DevOps与持续交付
现代化软件不仅追求开发阶段的敏捷性,也需要填补开发端和运维端之间的信息鸿沟,促进开发、测试、运维之间的高效协同,从而以持续交付来实现修复,并更快地解决问题。这是因为,敏捷开发虽然极大地提高了软件开发速度,但是它仅注重开发阶段,并未兼顾到运维阶段。在开发人员、测试人员与运维人员进行交接的时候,并没有体现敏捷的价值和原则,因此开发、测试和运维之间仍缺少必要的协作效率。在此背景之下,DevOps应运而生。
DevOps是Development(开发)和Operations(运维)的缩写。各大厂商对DevOps的定义虽然焦点不一,但本质上基本一致,即开发和运维的一体化。参考主流厂商的定义,DevOps可以理解为一种文化理念、流程和工具的组合。它可以在保证产品卓越质量的同时,提高组织交付软件的能力,以便更好地为客户提供服务,并在市场上抢占竞争优势。DevOps的宗旨在于消除开发团队和运维团队这两个传统上孤立的团队之间的壁垒,将开发人员、测试工程师、运维工程师以及其它相关人员集成到一个高度自动化的工作流程中,共同关注快速交付高质量的软件,满足所有用户要求,同时保持整个系统的完整性和稳定性。
表2
各主流厂商对DevOps的定义及描述
(来源:各厂商官网)
DevOps在敏捷开发和精益原则的基础上发展而来,支持企业最大限度地提高产品或服务的交付速度,覆盖从初步创意、生产发布、客户反馈到基于反馈实施改进的各个环节。在DevOps的具体实践中,需要各种工具以支持异步协作,无缝集成DevOps工作流程,以及尽可能自动执行整个DevOps。DevOps工具的类别,一般包括项目管理工具、协作式代码存储库、持续集成/持续部署(CI/CD)管道、测试自动化框架、配置管理(基础架构即代码)工具、监控工具和持续反馈工具等。
如今,在开发、测试、部署、交付、维护以及监控分析工作中,有越来越多的开源DevOps工具可以使用。比如,版本控制系统Git、代码评审工具Gerrit、项目管理平台Taiga、自动化测试工具selenium、应用容器引擎Docker、容器编排工具Kubernetes、持续集成和持续交付工具Jenkins、配置管理工具Chef、自动化运维工具Ansible、监控工具Nagios等都是开源的。
3.开源推动云计算创新
当前,新一轮科技革命和产业变革不断深入,数字经济蓬勃发展,计算能力已成为产业核心竞争力之一。作为主流的先进计算模式,云计算既为大数据、人工智能、5G等新技术提供了基础支撑,也为产业转型和数字经济发展带来新动能。
开源与云计算密不可分、相互促进。一方面,开源日渐成为云计算技术的主流。开源生态为云计算行业的产品创新提供了持续的动力,在云计算兴起过程中发挥了至关重要的作用,在云原生等新兴领域也将持续产生深刻影响。
近些年来,在开源技术的支持和推动下,云原生的理念不断丰富和落地,并迅速从以容器技术、容器编排技术为核心的生态,扩展至涵盖微服务、自动化运维、服务监测分析等领域。这具体表现在:Docker技术热度不减;Kubernetes已成为被企业选用最多的容器编排技术;Redis作为在微服务和容器开发者中最受欢迎的高性能开源键值存储数据库,目前已被9亿个容器使用;云原生应用开发框架SpringCloud已经成为分布式微服务框架中的领导者之一;开源分布式存储系统Ceph,凭借其高可靠、高性能、易扩容三大特性,抢占了大部分云平台存储市场;发展至今,OpenStack几乎成为云计算开源技术的事实标准等。
而且,多家国际巨头也通过收购开源公司,以开拓更为广阔的市场,整体提升在云计算领域的市场竞争力。比如,Salesforce收购开源应用集成服务发行商MuleSoft,以继续巩固其在云服务中的领先地位;微软收购开源云计算平台jClarity,以此来增强微软Azure云计算平台;IBM收购红帽RedHat,使自身成为全球领先的混合云供应商。
另一方面,云计算也促进了开源的发展。云计算与云平台所提供的按需使用、随需弹性、轻运维等关键特征,为各类开源软件提供了最佳的运行时环境和重要的市场分发渠道。开放核心(OpenCore)和云原生,为开源的商业化提供了新的模式,并成为当前开源商业公司采用的主要模式。云平台与开源社区的有效合作,赋予了用户灵活的选择权,不用担心被厂商锁定。
不过,值得注意的是,由于开源许可证一般都规定只有在“分发”时才需要遵守相关许可证的要求对外公开源代码,目前大部分主流的开源许可证并没有将以SaaS形式提供服务视为“分发”场景,因此,云服务提供商在使用开源软件提供云服务时,一般不必提供相应的源代码。而随着多个著名开源软件厂商纷纷修改原软件所使用的开源许可证,旨在对云服务商使用开源软件提供SaaS服务而不回馈社区的行为进行约束,会在一定程度上限制云服务商向云用户提供开源软件产品和服务的能力。
03
开源≠免费
开源的五大商业模式
开源软件的定义起源于自由软件(Free Software)。所谓自由软件,是指那些尊重用户和社区自由的软件。粗略地说,自由软件赋予用户运行、复制、分发、学习、修改并改进软件的自由(Liberty),而并不意味着它就可以免费(Free)获得和使用。为了减少意识形态上的沟壑,以及避免“自由(Free)”一词造成免费软件的误解,成立于1998年的开放源代码促进会(OSI),决定使用“Open Source Software”(开源软件)作为共通名称,并被越来越多的人接受。如今开源软件一词的使用频率也远远高于自由软件。由此可以看出,开源软件脱胎于自由软件,它并不等于免费软件;开源和免费之间也不能划上等号。
实际上,虽然开源项目在早期大多都是项目创造者“用爱发电”,但是为了让开源项目能够可持续发展,同时吸引更多开发者参与,共同改进缺陷和丰富功能,开源项目并不排斥商业化。而且,一个成功的开源项目通常离不开市场的推动和商业公司的支持。开源与商业化之间的互补,有力促进了开源技术的革新。如今,围绕着开源项目,已经形成了五大商业模式。
1.订阅式产品化和技术支持模式
受到一些严格的开源协议的限制,开源软件在授权转让的时候不允许收取费用,于是一个新词汇“Subscription(订阅)”被用来指代这一收费过程。在开源软件免费的前提下,用户可通过付费订阅,获得每一版本产品一定时间内的技术服务支持,诸如产品升级、电话支持等;而如果用户不想付费订阅,除了能获得开源产品及其源代码,其它的诸如代码质量、产品稳定性等都无法保证。采用这种商业模式的典型代表就是红帽(RedHat)公司。于2022年7月卸任红帽公司总裁的Paul Cormier,是开源商业化“订阅”模式的提出者。虽然这一模式提出之后引起了巨大争议,但也促使红帽公司逐步发展成为全球最大的开源软件公司,Paul Cormier也因此成为红帽公司转型的关键人物。
2.双授权(Dual License)模式
所谓双授权模式,指的是代码具有两套许可证,一套是传统的开源许可证(如GPL、AGPL等),另一套是商业许可证。如果一个开源软件完全由一个厂商独立完成,也即该厂商拥有该软件的代码所有权,那么它就有可能采用双授权模式。如此一来,一方面厂商可以对商业用户收取授权费用;另一方面,产品也仍能够融入开源社区生态系统,获得改进信息,得到开发者支持,赢得口碑,增加用户基数,进而占领市场。关系型数据库管理系统MySQL就是双授权模式的典型。
3.开放核心(OpenCore)模式
顾名思义,开放核心指的是核心代码开源,而专有的工具或功能包闭源。简单来说,开放核心模式,就是在开源版本基础上添加一些付费特性,打造成商业化版本进行售卖,并不断迭代。我们经常见到很多“社区版”的软件可能是开源的,而与之对应的“企业版”就有可能提供了很多额外功能并收费。采用这类模式,典型的有Kafka、Cassandra、GitLab等。而且,谷歌对于Android操作系统所采取的市场策略,在某种意义上也是开放核心模式。
如今,各大手机厂商可以免费获得的是作为操作系统框架的AOSP(Android Open Source Project),在此基础上,各手机厂商可以进行进一步定制开发。比如,小米的MIUI、OPPO的ColorOS等,都是基于AOSP深度定制研发。在AOSP之外,谷歌还提供收费的GMS服务(Google Mobile Service)。只有获得授权许可的Android手机,才能使用GMS服务;而在国际市场,GMS服务是不可或缺的。
4.软件即服务(SaaS)模式
近年来,伴随着云服务技术的成熟,云基础设施的完善,SaaS模式逐渐兴起。SaaS是一种基于互联网提供软件服务的软件应用模式,具有投入低、收益高、易于实施和管理等特点。在SaaS模式下,用户不需要部署自己的服务器,软件开发商不需要投入大量的线下运维人员,SaaS模式拥有高可用性、应用高可配置性、功能服务的高扩展性,用户完全可以根据自己的需要进行灵活配置,使用效率高。
虽然SaaS模式并不是开源软件专有的商业模式,但如今越来越成为开源软件的主流商业模式。比如,大数据领域的独角兽厂商Databricks就是通过开源SaaS模式来服务企业客户,这种业务模式也成为其发展过程中的关键优势。
5.捆绑销售模式
这种模式主要针对硬件制造商。市场竞争压力迫使硬件公司开发并维护软件,但是软件本身却并不是利润中心,因而采用开源软件。这种模式为大型公司广泛采纳。比如IBM 、惠普等服务器供应商巨头,通过捆绑免费的Linux操作系统销售硬件服务器。另外,也存在将免费的开源软件与可赢利商业软件捆绑销售,以开源软件带动商业软件销售的情况。
当然,开源项目的商业模式还有很多,还包括销售品牌周边产品,比如Mozilla基金会、维基百科基金会等会销售一些T恤、咖啡杯等周边产品,这实际上也可以视为一种开源商业化的模式;广告模式,比如火狐浏览器Mozilla Firefox作为开源的网页浏览器,通过与谷歌公司达成合作,将谷歌搜索作为默认搜索引擎,从而从谷歌公司获得大量收入;培训(或咨询)模式,即基于开源项目提供培训、认证或咨询服务;以及利用开源软件来搭建应用系统,壮大开源生态,通过开源生态上的产品分成等模式。
04
促进开源生态发展
四类开源组织发挥重要作用
开源软件及开源硬件等的发展,离不开背后强大的开源组织的管理和推动。通常来说,国内外的开源组织主要可以分为以下几类:
开源解决方案供应商,主要包括开源软件、开源硬件、开源技术等的提供商。比如,红帽(RedHat)作为全球领先的企业级开源解决方案供应商,依托社区力量为客户提供Linux、OpenShift、容器和Kubernetes等技术。Arduino公司作为开源硬件的先驱,其研发的开源硬件Arduino深受电子爱好者、硬件极客等的欢迎,成为最主流的开源硬件平台之一,也推动了开源硬件的发展。此外,国际厂商如微软、IBM、谷歌、甲骨文、英特尔等,国内厂商如华为、百度、阿里巴巴、腾讯等科技企业,如今也都积极拥抱开源发展战略,参与开源技术生态建设。
开源联盟组织又可分为综合性开源联盟组织、专业性开源联盟组织等。比如,综合性开源联盟组织包括开放源代码促进会(Open Source Initiative)、开源硬件协会(OSHWA)、中国开源软件推进联盟、“科创中国”开源创新联合体等。专业性的开源联盟组织包括开放设计联盟(Open Design Alliance)、国际ITC组织(The IntelliCAD Technology Consortium)、开源GitOps产业联盟、OpenStack中国联盟、中国人工智能开源软件发展联盟等。
开源基金会是开源生态中的重要组成部分。一般而言,开源基金会是具备公益性、非营利性以及非政府性的社会公益组织,目的是帮助开源项目的成长。开源基金会通过非营利方式如捐赠、会员费等渠道筹集资金,接受企业捐赠和申请将满足基金会要求的开源项目纳入基金会名下,并以提供软硬件基础设施、雇佣专业人员购买服务、组织市场宣传活动等方式将资金投入于项目发展。与投资基金不同,开源基金会不会以股权投资形式将资金投入企业和项目。
对于非营利性且处于中立位置的开源基金会而言,它们拥有开源项目的知识产权,而且没有任何商业利益,这为贡献者、开发者以及用户提供了良好的协作平台;基金会也会通过技术服务和项目孵化来帮助开发者和开源企业,如软件仓库、问题跟踪、技术指导、法律支持、项目投资、公共关系维护等;基金会还会提供项目日常的运营和治理,以满足在项目生命周期不同阶段对于管理项目的需求。开源基金会在国外(尤其在美国)较为流行,全球著名的开源基金会包括Apache软件基金会、Linux基金会、Eclipse基金会等。我国的开源基金会还处于发展初期。2020年设立的开放原子开源基金会(OpenAtom Foundation),是我国首个开源基金会,具有里程碑意义。
代码托管平台在开源生态中也具有突出价值。一是为开源软件开发提供协作环境,集聚广大开发者智慧,快速实现软件迭代更新。二是作为代码托管基础设施,汇聚大量重要开源项目,成为开源代码数据储备资源池。三是托管开源项目、孵化项目社区,促进开源软件的推广应用。四是设立活跃度、受欢迎程度等指标,折射开源技术热点及创新发展趋势。工信部印发的《“十四五”软件和信息技术服务业发展规划》明确提出“加快建设开源代码托管平台等基础设施”。
目前,全球主流的代码托管平台包括GitHub、GitLab和Gitee(码云)等。2018年10月26日,微软斥资75亿美元收购了GitHub。我国许多开发者和企业使用GitHub,用户数仅次于美国,位居全球第二。2021年3月18日,GitLab Inc.与红杉宽带、高成资本共同成立了中国合资公司极狐信息技术(湖北)有限公司,致力于为中国用户提供一站式覆盖软件开发生命周期的开放一体化DevOps平台。Gitee是开源中国社区于2013年推出的基于Git的代码托管服务,目前已经成为国内最大的代码托管平台,致力于为国内开发者提供优质稳定的托管服务。
此外,我国的代码托管平台还包括百度效率云、华为云CodeHub、阿里云云效代码管理Codeup、腾讯旗下腾云扣叮(CODING)以及CSDN旗下 GitCode等。
- 参考资料
1.中国开源软件推进联盟.《2022中国开源发展蓝皮书》.
2.艾瑞咨询.2022年中国开源软件产业研究报告
.https://mp.weixin.qq.com/s/71C_gElix5stCQyn9IYnLA3.开放源代码促进会(OSI).The Open Source Definition (Annotated)
.https://opensource.org/docs/definition.php4.Gitee.一篇文章带你了解「开源」和它的前世今生
.https://my.oschina.net/gitosc/blog/50169325.谷业凯.在开源开放中推动国产基础软件发展
.http://cpc.people.com.cn/n1/2021/1227/c64387-32317470.html6.微软.什么是 DevOps?
.https://azure.microsoft.com/zh-cn/resources/cloud-computing-dictionary/what-is-devops7.IBM.什么是DevOps?
.https://www.ibm.com/cn-zh/cloud/learn/devops-a-complete-guide.8.亚马逊云科技.什么是DevOps?
.https://aws.amazon.com/cn/devops/what-is-devops9.“相爱相杀”的开源与云计算
.https://baijiahao.baidu.com/s?id=165142266939362107010.雪哥视野.开源的商业模式与创新
.https://www.36kr.com/p/80199098090675711.纸飞机.自由/开源软件/硬件的商业模式
.https://zhuanlan.zhihu.com/p/36089382012. Driss.Vin.开源代码托管平台调研(附行业人士访谈)
.https://mp.weixin.qq.com/s/DS3H0gnTwdfUDmRYn2s0oA