企业拥抱开源之前,必须了解的7件事

文章选自《云栖战略参考》0第1期,作者:阿里云新金融互联网事业部首席架构师——韩鸿源。

新的时代,开源的发展越来越蓬勃,开源和云的关系越来越复杂,耦合度越来越高,云是开源软件允许的最佳环境之一,也为开源软件插上安全高效的腾飞引擎。

本文试图从企业软件的历史,结合开源软件发展规律,介绍软件开发和交付方式的演进过程,分析常见的开源软件开发和使用误区,讨论开源软件的业务模式和生态,以及在云时代下,开源软件和云的结合与相互促进。

年5月埃里克·雷蒙德(EricS.Raymond)发表了被誉为“开源圣经”的《大教堂与集市》,开源运动从此有了自己的独立宣言。

开源发展至今,从LinusTorvalds、KennethLaneThompson、RichardMatthewStallman、EricStevenRaymond等个人英雄的出现,到越来越多的企业组织意识到开源的价值,并加入到开源中,开放、平等、协作、共享的开源模式逐渐成为新一代软件开发模式。

开源已成为全球软件技术和产业创新的主导力量之一,尤其到了云时代,开源覆盖了软件开发的全域场景。

一、为什么开源难以回避

特征一:开源基础软件的应用广度与深度提升

基础软件是计算产业的“魂”。过去几十年来,随着开源的蓬勃发展,早期开源软件集中在应用侧,但是重要的基础软件,如操作系统、数据库等,依旧采用封闭专有的开发模式和商业模式。

今天,基础软件也逐渐演变成开源、开放方式。97%的软件开发者和99%的企业使用开源软件,基础软件、工业软件、新兴平台软件采用开源成为弯道超车的重要动力。信通院《开源生态白皮书(00年)》指出,近年来国内企业逐渐侧重基础软件领域开源项目布局,在操作系统、数据库、中间件等领域涌现多个开源项目,其中不乏国际基金会的顶级开源项目。

特征二:开源软件创造的价值凸显

开源已成为全球数字科技创新的动力,成长为一种强大的技术创新模式,并从最初的软件行业走向了硬件、芯片、视频、IoT、AI等多个领域,开源的商业模式也在逐渐成熟。如今,新产品在开源,新架构在开源,新平台也在开源,连顶尖的研究成果也都以开源形式发布。开源逐渐成为全球科技进步至关重要的创新方向。

特征三:国家对开源软件前所未有的重视

01年,《中华人民共和国国民经济和社会发展第十四个五年规划和年远景目标纲要》明确指出要“支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务”。毫无疑问,开源被提到国家战略层面进行支持,将走上跨越式发展的快车道。

人民银行办公厅、中央网信办秘书局、工业和信息化部办公厅、银保监会办公厅、证监会办公厅联合发布《关于规范金融业开源技术应用与发展的意见》(以下简称《意见》)。近年来,开源技术在金融业各领域得到广泛应用,在推动金融机构科技创新和数字化转型方面发挥着积极作用,但也面临安全可控等诸多挑战。《意见》的出台,有助于规范金融机构合理应用开源技术,提高应用水平和自主可控能力,促进开源技术健康可持续发展。

二、软件的发展与开源的历史

在计算机行业的早期,软件是作为帮助硬件发挥功能的辅助角色存在。在0世纪70年代Unix诞生之前,业界并没有使用高级语言开发操作系统的先例。由于软件不具备通用性,而且软件本身并不作为独立销售实体存在,只是软件开发项目,交付项目的同时交付源代码也是常规做法。客户需要持续维护系统的运行,开发方也不愿意承担软件全生命周期的维护责任。

随着Unix的诞生并且主要以C语言实现,开放的通用操作系统成为可能,软件的开发与授权售卖也随着硬件和软件对兼容性和通用性的追求成为可能。在Unix发展的早期,由于其拥有者ATT回避进入软件行业的特殊态度(原因是主营电信业务正在严厉的反垄断高压之下,不愿意添加额外的麻烦),在授权给用户使用时,以源代码形式提供并且不提供后续技术支持,允许用户在自己的环境中修正问题和移植到新的硬件平台。这一阶段得到授权的高校、政府和一些商业机构为后续Unix的发展打下了基础,也为后来的Unix纷争和分裂埋下了种子。

进入0世纪80年代,随着计算机的通用性增强与逐渐普及,可以在大量计算机上运行的通用软件逐渐催生了商业软件行业并且持续蓬勃发展。大批软件公司涌现并且时至今日很多仍然是行业巨头,如Microsoft、SAP、Oracle、Adobe等。这个时代的一个特点是随着计算机的使用者从专业人员扩大到普通用户,软件的交付形态逐渐变成了只提供运行态程序而不再提供源代码,销售给用户的也是厂商定义的使用授权,厂商除了销售软件之外,还提供收费的技术支持服务:为客户升级软件、修正问题,为新的设备提供运行环境。消费者作为使用者不再拥有修改运行软件的权限,软件的授权使用与技术支持服务形成了商业软件行业的重要商业模式。

在个人电脑领域,时至今日,客户使用软件的方式没有本质变化。由于绝大部分用户不是软件开发专业人士,不存在自行修改系统或应用软件的需求,这种模式很好适应了用户需求并得以持续。

在服务器领域,Unix阵营发源于ATT分发的早期代码,SUN、HP、DEC、IBM等基于不同的硬件架构发展了各自的Unix系统,形成了所谓的开放系统的生态格局。通用与兼容的需求催生了后续的POSIX等统一标准,但是Unix的授权与法律条文的模糊性以及后续持有者的态度和野心等导致了大量问题,各种源自Unix的系统分别改成了各家自己品牌分别发展,与Unix主干间也缺乏统一的协调,这种分裂给了WindowsNT巨大的商业机会,发展成了今天的WindowsServer系列操作系统,这些商业操作系统仍然是只提供运行时的使用许可给最终用户,并且提供商业性的技术支持服务。

0世纪80年代,软件行业的另外一个重要事件是自由软件基金会(FreeSoftwareFoundation,简称FSF)的成立,在学术与科研机构中,“黑客精神”始终是很多人的追求,对软件极致自由追求的基础是拥有对源代码的修改权。这里不得不说,理查德·斯托曼(RichardStallman)(对他的各种毁誉不影响GNU和FSF的意义和价值)发起的GNU(GNUisNotUnix)行动重新开发实现了Unix的大部分工具系统,并且以GPL的许可发行这些软件,GPL对衍生软件强制要求持续提供源代码,GNU实现了绝大部分的Unix常见工具体系,但是仍然无法摆脱对Unix操作系统核心的依赖,直到年林纳斯·托瓦兹(LinusTorvalds)开始的Linux核心的开发工作填补了这个空白,同样采用GPL许可的Linux核心和外围工具体系一起形成了Linux的生态系统,大批积累了丰富Unix使用与开发经验的高校、科研机构与商业机构的积极参与促成了Linux的快速成长和成熟。

0世纪90年代中期以后,互联网开始蓬勃发展,各种Unix衍生品与WindowsNT在起步阶段也支撑了这个发展过程。

随着用户规模爆炸式增长,成本成为一个不可忽视的因素,尤其很多新创互联网企业并不愿意把宝贵的资金消耗在昂贵的硬件设备和僵化的软件授权上。在这个阶段,Intel也从PC的CPU提供者,逐渐进入了服务器CPU的提供者行列,规模优势也使其CPU能力逐渐可以比肩服务器的RISCCPU,这些CPU为运行开放系统的各种Unix服务器提供核心能力,Linux因其不强制收费和开放后续源代码修改的优势,被很多新兴互联网企业选为后台服务运行平台。广泛应用和大规模的部署也帮助Linux持续快速发展,演进成了支持关键业务的服务器操作系统,与此同时,操作系统之上的各种开源系统也得到了广泛的运用与持续发展,逐渐形成了今天互联网巨头们基于开源软件和自研业务软件的普遍现状。

进入1世纪,随着开源软件在互联网领域的广泛使用,同时结合CPU领域Intel的统治地位的逐渐确立和各种封闭式的开放系统的持续衰落,很多商业企业也开始接受开源操作系统和开源技术平台软件,应用场景的丰富进一步促进了各种开源软件的发展,形成了今天仍然激烈竞争的格局。

三、开源软件的定义与许可体系的发展

从字面上看,开源是指开放软件的源代码给使用者,但是单纯提供源代码并不是目前“开源软件”的标准定义,“开源软件”是指,软件向使用者提供源代码并且授予修改和持续演进的自由,因此对修改后的软件再分发在规定上的差异,形成了不同的开源软件许可体系。

目前开源软件的许可体系主要分为两大类:一类强制要求再开源,代表性的有GPL许可体系;另一类不强制要求衍生开源,为宽松开源许可证,代表性的有BSD、MIT、Apache等许可体系。GPL许可体系强制要求下游“发行”时提供源代码,不得改变GPL的兼容性,限制从开源软件转变成非开源软件(但“发行”的定义,存在可被利用的空间)。强制继续开源,又衍生出对服务提供者,尤其是云服务提供者的不同变种许可,如AGPL等。由于限制过多、过于复杂,所以AGPL的接受程度有限。宽松开源许可,要求声明来源并保留原始软件的许可证部分,但不要求衍生部分强制开源。

开源软件判断的具体标准可以参见


转载请注明:http://www.aierlanlan.com/grrz/5322.html