2018年开源治理行业研究报告.pdf
开源治理 白皮书 ( 2018年 ) 中国信息通信研究院 China Academy of Information and Communications Technology ,CAICT 2018年 3月 II 版权声明 本白皮书版权属于 中国信息通信研究院 ,并受法律保护。转载、摘编或利用其它方式使用本调查报告文字或者观点的,应注明来源。违反上述声明者,将追究其相关法律责任。 编写说明 牵头 单位: 中国信息通信研究院 参与单位: 腾讯控股有限公司、中兴通讯股份有限公司、 ZStack(上海云轴信息科技有限公司)、华为技术有限公司、阿里云计算有限公司、国际商业机器(中国)公司、红帽软件(北京)有限公司、 EasyStack(北京易捷思达科技发展有限公司 )、中国移动通信研究院、烽火通信科技股份有限公司、 甲骨文 (中国 )软件系统有限公司 、 上海思华科技股份有限公司 、 中联润通信息技术有限公司、 Mesosphere, Inc 编写人 : 栗蔚、郭雪、孔松、王柏鈞、张亚军、孙辰星、李响、梅磊、蒋迪、刘艳华、李静 远、田忠、赵文斌、刘宏亮、马轶慧、贾玄、涂文杰、齐鸣、张霖、冯文强、王建宏、曹治 政 III 目录 一、开源概述 . 5 1.1 开源定义和相关概念 . 5 1.2 开源的市场应用 . 10 1.3 开源的价值和意义 . 12 二、全球开源发展现状 . 15 2.1 开源发展历程 . 15 2.2 企业参与开源的模式 . 16 2.3 开源基金会 . 18 三、中国开源发展现状 . 23 3.1 开源发展 历程 . 23 3.2 企业参与开源的形式 . 24 3.3 中国开源 组织 . 25 四、自主 开源 的 关键 环节 . 27 4.1 事前准备和评估 . 27 4.2 开启 开源项目 . 33 4.3 构建和维护开源社区 . 36 4.4 开源社区治理 . 37 4.5 开源项目评价 . 38 五开源商业模式 . 41 六、开源技术的使用 . 44 6.1 使用开源技术的风险 . 45 6.2 如何选择开源技术 . 45 6.3 如何使用开源技术 . 47 七、开源面临的问题和挑战 . 50 7.1 开源风险 . 50 7.2 违约风险 . 51 7.3 知识产权风险 . 52 7.4 开源许可证兼容性风险 . 57 7.5 安全风险 . 57 八、总结 . 59 附录:开源相关企业概述 . 60 一、腾讯控股有限公司 . 60 二、华为技术有限公司 . 63 三、阿里云计算有限公司 . 66 四、中兴通讯股份有限公司 . 68 五、 ZStack(上海云轴信息科技有限公司 ) . 70 六 . EasyStack(北京易捷思达科技发展有限公司 ) . 71 七、红帽软件(北京)有限公司 . 72 八 、烽火通信科技股份有限公司 . 73 IV 前言 近几年开源技术快速发展, 在云计算、移动互联网、大数据等领域逐渐形成技术主流。开源一方面可以突破技术壁垒,推动技术创新,另一方面,不可避免的带来知识产权、信息安全等一系列问题。我国 企业在参与 国际开源项目 ,跟随主流开源技术 的同时,更多的影响和主导开源项目 ,逐步探索引领开源的可能 。 企业如何开源 、 项目开源流程 、 开源商业模式 、如何使用开源 等问题成为产业界关注的焦点。 开源 治理白皮书 首先 介绍了开源的发展历程以及国内外主要的开源基金会及开源项目,针对 如何 开源 、 开源的商业模式、 用户使用开源 应注意的问题进行详细阐述,最后对企业开源面临的问题和挑战进行了概述。 5 一、 开源概述 1.1 开源定义和相关概念 开源 。 即开放 一类技术或一种产品的 源代码 ,源数据,源资产,可以是各行业的技术或产品,其范畴涵盖文化、产业、法律、技术等多个社会维度。如果开放的是软件代码,一般被称作开源软件。 开源的实质是资产或资源(技术)共享,扩大社会价值,提升经济 效率,减少交易壁垒和社会鸿沟。开源与开放标准、开放平台密切相关。 开源软件 。 一种版权持有人为任何人和任何目的提供学习、修改和分发权利,并公布源代码的计算机软件。通常具备以下 10 个特点 1: -免费 重新发行。当软件是来自不同来源的程序集成后的软件发行版本中的其中一个组件时,许可证不能限制任何团体销售和分发该软件,并且不能向这样的销售或分发收取许可费和其它费用。 -源代码 。程序包含源代码,并且必须允许以代码或已编译的形式发布。 -衍生 产品。许可证必须允许修改原产品和衍生产品,并且必须允许在与原始软件相同的 许 可 情况下发布修改过的产品。 -源代码完整 性。许可证可以禁止他人以修改过的形式发布源代码,只在该许可证基于修改程度的目的时,才允许随源代码发布“补1 opensource/docs/definition.html 6 丁文件”。许可证必须明确允许发布根据修改过的源代码构建的软件。许可证要求衍生产品必须附加不同于原始软件的名称或版本号。 -不得歧视任何人和团体。许可证不得歧视任何人和任何团体。 -不得歧视 任何特定用途 。许可证不得禁止任何人在特定领域内使用某一程序。 -许可证发布。附加在程序上的权利必须应用于那些重新发布程序的人,无需通过其它人额外加以 许可 使用。 -许可证 不得专属于特定产品。附属于程序的权利不得仅限于作为特定软件发行版一部分的程序。 -许可证不得对其它软件加以限制。许可证不得对与已许可软件一起分配的其它软件附加任何限制。 -许可证必须技术中立。任何许可证都不可以基于单独的某项技术或界面风格。 自由软件 。 一种 用户可以自由地运行、拷贝 、分发、学习、修改并改进 的 软件。 2自由软件需要具备以下四个特点:无论用户处于何种目的,必须可以按照用 户意愿 ,自由地运行该软件;用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算,作为前提,用户必须可以访问到该软件 的源代码;用户可以自由地分发该软件的拷贝 , 用户可以自由地分发该软件修改后的拷贝,用户可以把改2 gnu/philosophy/free-sw.html 7 进后的软件分享给整个社区 而 令他人收益,作为前提,用户必须可以访问到该软件的源代码。 免费软件 。 一种开发者拥有版权,保留控制发行、修改和销售权利的免费计算机软件,通常不发布源代码,以防用户修改源码。 3 开源软件和自由软件 。 广义上认为,自由软件是开源软件的一个子集,自由软件的定义比开源软件更严格。 图 1 开源软件、自有软件和免费软件的关系 开源软件和免费 开源 。开源软件是要求软件发行时附上源代码,并不一定免费;同样免 费软件 只是 软件免费提供给用户使用,并不一定开源。 开源许可证。 一种允许源代码、蓝图或设计在定义的条款和条件下被使用、修改和 /或共享的计算机软件和其他产品的许可证。 目前经过 OSI 认证的开源许可证共有 74 种, 而最重要的仅有 6-10 种(最最主要的 2 种: GPL、 Apache)。在开源商业化的浪潮下,适度宽松的 Apache 等许可证更受欢迎。 3 linfo/freeware.html 8 这些许可证大致可以分为 三 类, 一类是 传染型开源 许可 证( Copyleft) , 传染型开源 许可 证 明确修改版本须以同一许可 证 发布,如果一个软件包含该协议下部分代码,完全发布时必须作为整体适用该协议, GNU General Public License Version 2 或 Version 3 (下称“ GPL V2”或“ GPL V3” )作为传染型开源 许可 证 给予任何人自由复制、修改和发布 GPL 代码的权利,但是作为回报,所有以 GPL 协议发布的源代码的衍生,也必须按照 GPL 发布。 第二类 是 弱 传染 型 开源许可证 (Weak-Copyleft),如果一个软件包含该协议 下部分代码,完全发布时某些部分必须适用该许可 证 ,其它部分可在其它协议下发布 ,如 LGPL、 MPL 等。 第三类是获准型许可证 ,对已修改代码的许可方式没有任何要求,如 BSD 要求许可证附上许可证的原文以及所有开发者的版权资料,它允许原作品及修改版发行不公开源代码或以其它许可证发行。 广泛使用的开源许可证 包括 Apache-2.0, BSD-3-Clause, BSD-2-Clause, GPL,LGPL,MIT,MPL-2.0, CDDL-1.0, Eclipse 2.0.4 -GPL(GNU General Public License, GNU 通用公共许可证 ):一种广泛使用的自由软件许可证,保证用户可以自由的运行、学习、分享和修改软件。许可证最初由自由软件基金会( FSF) Richard Stallman 为 GNU 项目所撰写。 GPL 是一个非盈利版权许可证,要求衍生作品只能在相同的许可条款下发布。 GPL 的出发点是代码的开源使4 opensource/licenses/category 9 用和引用代码开源使用,不允许修改后和衍生的代码作为闭源的商业软件发布和销售。 -LGPL(GNU Lesser General Public License, GNU 宽通用公共许可证 ):一种由 FSF 颁布 的自由软件许可证,允许开发者或公司在私有软件中使用,不要求使用 LGPL许可 代码的软件以 LGPL方式发布。与 GPL 的强制性开源方式不同, LGPL 允许商业软件通过类库引用的方式使用 LGPL 类库而不需要开源商业软件的代码。 -BSD (Berkeley Software Distribution):允许使用者修改和重新发布代码,也允许使用或在 BSD 代码上开发商业软件并发布和销售。 -MIT License:允许开发者任意处置该软件,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中 必须包含许可提示。 -Apache License:一种由 Apache 软件基金会发布的自由软件许可证, 相对比较友好,被授权者可以发布商业化软件 。 -MPL (Mozilla Public License 1.1): MPL 协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。 -CDDL(Common Development and Distribution License):CDDL开源 许可证 ,是 MPL 的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可。 10 -EPL (Eclipse Public License 1.0 ):EPL 允许 Recipients任意使用、复制、分发、传播、展示、修改以及改 后闭源的二次商业发布。 开源许可证的共同点是保留版权,差别是商业兼 容性或共享权限不同。 图 1 不同开源许可证的特点 1.2 开源的市场 应用 开源 软件 市场应用广泛 。 据 Gartner 调查显示, 99%的组织在其 IT系统中使用了开源软件 ,同时开源软件在服务器操作系统、云计算领域、 Web 领域都有 比较广泛的应用 。 开源软件市场规模 稳居 服务器操作系统 首位。 根据 Linux 内核开发报告 2017显示,自从进入 Git 时代( 2005 年 2.6.11 发布之后),共有 15637 名开发者为 Linux 内核的开发做出了贡献,这些开发者来自 1513 家公司。 全球公有云上运行的负载有 90% 是 Linux 操作系统,在嵌入式市场的占有率是 62%,而在超算的市场占有率更是达到了 99%,还有,它运行在世界上超过 82% 的智能手机中,也是所有公有云厂商的主要支撑服务器( 90%) 。 11 开源 软件 在云计算领域 使用广泛。 云计算 领域 开源目前主要以IaaS 以及 PaaS 两个层面为主, IaaS 有 OpenStack、 CloudStack、oVirt、 ZStack 等, PaaS 层面有 OpenShift、 Rancher、 Cloud Foundry以及调度平台 Kubernetes、 Mesos 等。 2017 OpenStack User Survey显示: 2017 年, OpenStack 全球部署将近 1000 次,比 2016 年增加95%;亚洲超越北美成为 OpenStack 用户分布 Top1 区域。 除 IT 以往,OpenStack 在其他行业也得到了广泛使用, Top4 用户行业为电信、研究、金融和政府。与 2016 年相比, IT 行业用户从 65%下降到 55%。虽然 OpenStack 在 IT 业仍是最大行业应用领域,但电信、学术研究、零售和制造业都有所增长,尤其是金融和政府领域的增长最为显著。2013 年 Docker 发布之后 , 技术日渐崛起。截至 2014 年底,容器镜像下载量高达 1 亿;到 2017 年初,这一数量超过 80 亿。 开源软件在 Web 领域占据主要市场份额。 根据 Netcraft Web Server Survey显示, 调查发现, Nginx 市场份额增加到 21.4%,较上一年增长 3.84%, 成为了面向 Web 的 计算机市场上第三大服务器厂商。 Apache 的市场份额下跌了 0.35 个百分点 ,它在面向 Web 的计算机市场的份额达到 42.8%。 目前,至少有 7200 万个网站宣称在他们的服 务器头部正在使用 Apache 2.2。 Apache 已经成为互联网站点最为流行的 Web 服务平台。 12 开源软件在移动终端 主导发展方向 。 Android 占据全球手机交货量主要市场份额。 2015 年第三季度,市场份额高达 84.7%,主导移动应用软件发展。 开源软件在 大数据方面的开源集中在可视化、基础分析工具、算法模型工具等方面。 可视化一般以开源库为主,比如 d3.js、百度ECharts 等;基础分析平台则有 Hadoop、 Spark、 Kylin 等;算法模型工具则有 TensorFlow、 Weka、 R 以及 Python 对应工具库等。 网络功能虚拟化( NFV)方面较为典型的 开源 项目有 OPNFV,它以OpenStack 为支撑模板,现在也使用了 Kubernetes 容器化部分网络功能。 开源软件在 人工智能 领域的应用逐步推广起来 。 谷歌将TensorFlow 开源,机器人操作系统 ROS 也大多采用开源技术。 1.3 开源的价值和意义 1.3.1 开源 生态 促进 国家信息 技术创新 ,带动经济发展 开源 有效 促进技术 创新。 开源模式可以有效实现信息互通, 获得关键技术最新源代码,利用全球技术资源快速推动技术发展迭代,打破技术壁垒 ,推动新 技术普及 。 开源可以实现 软件 自主可控 。 开源更加透 明 和公开, 建立我国开源软件产业, 可以有效 保障信息安全 , 实现 自主可控 ,同时可以保证 13 信息安全 更易 治理 , 产品和服务一般不存在恶意后门并可以不断改进或修补漏洞。 开源 促进教育 和 科研 事业发展 。 开源为高校师生提供了更多自主学习的资源,学生能够直接、迅速的加入到开源项目中,技术水平不断提高,经验不断丰富。 开源促进行业信息化发展。开源模式可以有效降低应用成本和技术门槛, 加快企业的 信息化 发展, 从而带动 促进我国 经济 的蓬勃发展。 1.3.2 软件厂商 依托开源技术提升研发能力 降低 研发成本。软件厂商借助开源技术降低研发成本,通过开源社区参与技术交流,熟悉开源技术使用方法, 便 于跟踪开源技术版本更新,根据业务需求进行适配。 知名开源项目均有业界高水平研发人员的参与,其源码 在 编码风格、算法思路等方面有许多供技术人员借鉴的地方。软件厂商研发人员在使用开源项目或基于开源项目进行二次开发的过程中,可以通过阅读源码等方式学习 解决问题的创新方法。 软件厂商将项目开源后,项目的用户范围更广,应用场景更复杂,研发人员在开发时不能只考虑本公司的业务需求和人员使用情况,需更加注重代码兼容性、规范性等问题。 1.3.3 用户 使用 开源 技术 改变信息化 路线 企业用户可在 开源技术 基础上进行定制化开发 。 终端用户信息系统需要实现的功 能各有不同,相比闭源软件,开源软件更灵活,定制 14 化程度更高 , 终端用户企业可在开源代码的基础上做二次开发, 实现特定场景和特定功能的需求 , 避免绑定风险 。 使用开源技术, 让企业专注于创新 。 随着更多的业务资源摆脱了开发软件 的束缚,焦点转向创新。创造力在中小型企业中蓬勃发展,因为他们更能够创造竞争力的替代技术和专有软件。从而使 自己获得比竞争对手更具有独特性和前瞻性的思维。 1.3.4 企业 自主 开源 引领技术发展路径 企业 自主 开源能够 有效 提升研发效率 , 提高代码质量。 项目开源过程中可以吸引优秀的开发者和用户参与到代码 贡献 中, 注入更多新鲜血液,让项目不断发展 。 与此同时,开源项目部署在不同的应用场景, 可以暴露出项目更多的问题,节省测试成本。 企业自主开源能够引领技术发展, 建立 以开源企业为核心的 生态圈 。 开源项目运营过程中,可以吸引潜在用户使用开源软件, 让业内更多的企业、开发者了解开源项目所属企业的技术发展情况,通过 开源技术建立提供商和用户的上下游生态圈,及时了解用户需求,抢占商业版图,带动企业良性发展。 15 二、全球开源发展现状 2.1 开源发展历程 图 2 开源发展历程 开源项目形成。 1969 年, AT&T 贝尔实验室研发出 Unix,在 AT&T将其商业化之前, Unix 的代码被 Unix 社区共享, Unix 诞生为开源奠定了重要的基础 ; 1984 年, MIT 人工智能实验室资深工程师 Richard Stallman发起 GNU项目,目标是使用自有共享的代码来构建一个 Unix克隆的操作系统,绝大多数 GNU 项目,均是 Stallman 在 1984 年开始构建的,今天仍处于自 由 和开源软件生态系统的中心位置 ; 1985 年,Stallman 创建自有软件基金会 ; 1991 年,加利福尼亚大学伯克利分校发布 Net/2 BSD 操作系统,自由的类 Unix 操作系统,发布后由于法律问题,没有得到大规模推广 ; 1991 年, Linux 内核 出现 。 Linux 始于 Linus Torvalds 开发的类 Unix 操作系统内核,采用 GPL 许可。2000 年,为赞助 Linus Torvalds 的工作,成立 Linux 基金会。 Linux 基金会的成立,为世界各地的开发者合作建立平台,有力推动 了 Linux 发展。 16 开源社区形成 ,企业逐渐参与到开源社区做贡献 。 1995 年, Apache诞生。上世纪 90 年代, Web 软件还处于封闭专有的状态, 1995 年一组由系统管理员组成的开发团队开始协作构建叫做 Apache HTTP服务器的软 件, 它 是基 于国家超算应用中心的一款 Web 服务平台。 1996年, Apache 已经占据了 Web 服务器大部分的市场份额, 1999 年成立Apache 基金 会。 企业和社区驱动开源。 2000 以后开源体系开始向移动和云领域延伸 , Google 等企业开始 在移动互联网和云计算领域驱动 开源 ,影响技术发展路线和市场格局 。 开源代码托管。 Linux 开发过程中协作最开始是通过邮件,后续迁移到源代码管理平台, Linux 使用的商业的 BitKeeper 的源代码管理平台 2005 年不再为 Linux 提供免费的使用权, Torvalds 写了 Git的工具代替 BitKeeper。 2008 年开始出现一些以 Web 形式托管的 Git代码仓库如 Github, Git 将开源编码的开放度带到了更高的高度,让每个人都可以 快速推出一个开源项目。 2.2 企业参与开源的模式 随着开源生态的不断建立,企业参与开源生态的热情度不断提升,参与开源的形式可以分为四类,一是企业可以将内部开源项目开源出来,作为开源发起者;二是企业可以 贡献 代码, 反馈社区 ;三是企业 17 可以通过培训、组织活动等形式作为开源项目的推动者;四是企业使用开源技术,降低研发投入。 发起开源 项目 有 两 种模式,一种 公共开源模式 ,可以是 个人发起开源项目,形成开源社区,开放生产,比如 Linux, 也可以 是个人 或商业公司捐献给开源基金会,开放生产,比如 OpenStack;另一种是商业开源模式 , 由 企业发起开源,封闭生产,比如 Android。 表 1 两 种开源模式对比 表 2 常见开源项目的开源模式 Linux OpenStack Android Hadoop MySQL 发起方 个人 用户企业 企业 开源基金会 企业 开源协议 GPL Apache Apache Apache GPL 开源形式 公共开源模式 公共开源模式 商业开源模式 公共开源模式 商业开源模式 贡献者。 项目 开源之后, 其它 企业可以反馈社区,贡献代码。 典型的案例是 OpenStack, 是一个非常庞大的项目,它由 NASA 的运维人员发起,现在全球也有数百企业参与开发并提交自己的代码, 红帽 18 等企业积极参与代码贡献和社区贡献,带动开源项目良性发展,影响开源项目发展路径。 推动者。由于开源项目本身的特点,很多企业在项目中乐意采用并传播开源。 厂商在市场活动上也会对社区进行帮助,比如为其捐献、创办参与用户组、组织交流会等。 使用者。参与开源社区是为了软件的应用。例如 AT&T 加入OpenStack社区是为了使用 OpenStack软件, AT&T作为通信商业组织,希望使用 OpenStack 软件从传统的网络服务模式转移到基于云环境的 SDN/NFV 网络, AT&T 并没有直接通过 OpenStack 盈利也没有相应的业务,所以 AT&T 对 OpenStack 的控制管理需求较低,同时资源投入较少。 2.3 开源基金会 开源基金会作为管理和推广开源项目的非盈利机构,为开源项目提供法律、商业、技术等服务 。目前国际上影响力比较大的基金会有Apache 基金会、 Linux 基金会 等 、 OpenStack 基金会 。 开源基金会在微观上表现为开放性、创新 性较强的集市生产方式,在宏观上表现为OpenStack 是为搭建公 共及私有云建设与管理提供软件的开源项目,由 NASA和 Rackspace 合作开发,经 Apache2.0 许可,以 Python 语言为基础,由多个组件组成的开源项目。 NASA 由于战略调整,转向亚马逊云服务,由 OpenStack的开发者转变为云平台的用户,于是将 OpenStack 开源,带动更多的技术人员参与 OpenStack。 19 公益性、合作性较强的多类产业合作组织的繁荣,其特点是以牺牲封闭方式下的组织效率换来以分布式、自组织为特征的开放性创新。 图 3 Linux、 Apache 和 OpenStack 基金会对比 Apache 基金会 Apache 基金会成立于 1999 年,目前已成为世界上最为著名和成功的托管开源项目的基金会之一,目前管理超过 350 个开源项目。apache 站点每周访问量是 3 千 5 百万,每个月有接近 300 位新的代码贡献者。现 共有 182 个顶级项目, 59 个正在孵化中。 Apache旗下的所有项目都使用 Apache 许可证,也是目前最受欢迎的许可证之一。 图 4 Apache 基金会 项目概览 20 精英制 组织机构 。 Apache 基金会由个人组成, 理事会管理与监督整个 Apache 软件基金会的商务与日常事务,并让它们能 在 符合章程的规定下正常地运作 ,为项目运行提供组织、法律、财务等支持,不会对项目发展施加影响。 项目管理委员会,主要负责保证一个或者多个开源社区的活动都能运转良好 。 Apache 项目管理采用“精英”治理模式,项目开发人员分为用户、开发者、 提交者、项目管理委员会等成员。 图 5 Apache 基金会 组织架构 Apache 项目孵化 帮助开源项目成长 。 无论是外部组织捐赠,还是Apache 内部所创建的项目,都需要经过孵化才能够成为成熟项目,项目孵化过程将帮助新的项目解决所需的基础设施,指导社区精英模式的建立。 Linux 基金会 Linux 基金会成立于 2007 年,由原开源开发实验室( OSDL)和自由 标准协会( FSG)合并而成,旨在保护和激励自由的概念,通过 Lin