开源软件|从企业视角看开源软件:华为开源5年的实践经验

一、开源不只是研发中的选型和开发高德纳公司(Gartner)及Linux基金会的调查报告显示 , 企业平均有29%的软件代码来自开源 , 在互联网背景下 , 开源软件比例高达80% 。 产品中大规模嵌入开源代码 , 会产生一系列研发管理问题:
1. 版权许可证 (license)选择不慎会潜伏知识产权法务风险 , 成为企业拓展海外市场的绊脚石 。
2. 不同团队选择多种同类开源软件会带来巨大的管理成本 。
3. 产品研发初期 , 如何在众多类似的开源组件中选择合适的代码?方向选择错误会导致陷入产品生态与业界不兼容的困境 , 面临放弃重写还是继续往下走的两难抉择 。
4. 产品开发时难免会对代码进行修改 , 修改后的商用代码是闭源还是开源?随着时间的推移 , 社区版本更新迭代 , 继续闭源 , 意味着会重复投入资源 , 进行不增值的代码合入;而开源则意味丧失产品竞争力 。
5. 主动开源并不意味着社区就能接纳 , 需要长期有大量的回馈代码才能建立信誉及影响力 , 公司内的社区管理人员才能得到锻炼和培养 。 但是 , 社区管理人员个人知名度的提升会增加被猎头公司走”的风险 。
6. 软件在开发过程中或完成之后 , 如果出现同类开源软件 , 该如何处理?
开源软件不能被简单地认为只涉及产品研发过程中的选型和开发 。 华为开源管理经历5年时间 , 从企业视角看 , 开源软件还涉及产品外销时的知识产权法务风险、企业的研发效率、产品架构、软件生态系统、开放标准构建手段、人才竞备、商业利益角逐等 。 华为公司每月向各大开源社区回馈约1500个补丁 , 仅次于红帽(RedHat)、英特尔和IBM , 社区活跃程度大致与谷歌、三星、甲骨文、微软等公司相当 。
华为公司在这五年期间大概经历了三个阶段:
第一阶段 , 最初把开源看作是一个外购件 。
第二阶段 , 把开源看作外部协作的一种方式 ,
研究如何与社区的技术人员、社区本身以及其他公司协作 。
第三阶段 , 把开源软件当作自己的代码 。 开源作为产品的基础部件 , 华为把开源提升到战略高度来看待和管理 , 开源软件成为研发的重要来源 。 这个阶段主要研究的是开源选型以及软件生态链选择;产品通过开源手段与外部生态系统集成;如何用开源手段与社区连接;如何与社区一起探索新兴技术;如何在新技术领域产生影响力;在新的技术和业务领域 , 如何通过开源 , 站在行业发展前沿等问题 。
二、开源的行业趋势从容器技术开始 , 开源不再是商用软件的简单模仿 , 而是开始引领行业发展方向 。 开源看似在推动软件世界的发展 , 其实不然 。 从商业角度看 , 开源只是商用软件的模仿 , 例如从最早的Linux(模仿各类商用Unix)、Eclipse(模仿Ⅴisual Studio)、Apache Hadoop(模仿谷歌三篇经典论文成果) , 到这几年耳熟能详的:Xen/KVM(模仿VMWare)、OpenStack(模仿Amazon AWS)等 。 从容器技术开始 , 没有任何一家公司有最前沿的技术 , 也没有公司率先在容器技术上赚到钱 , 所有公司都在一个起跑线上 。 在容器技术兴起的2014年 , 才可以说开源技术牵引着整个行业发展方向 。
开源软件代表了一种新的技术产生方式 。 顶尖的高校研究成果很多都是以开源形式发布的 , 顶尖公司(如谷歌)的技术架构中 , 每套系统基本都有其对应的开源项目 。
1. 开源社区的运作越来越职业化 。 自由参与和自组织时代已经过去 , 近年来 , 开源逐步过渡到公司化运作模式 。 Linux基金会下的很多项目 , 比如核心基础架构联盟(Core Infrastructure Initiative , CII) , 都是各公司出钱 , 把钱放在一起经营 , 更像是一个合资公司;OpenStack等基金会有明确的章程、组织结构、晋升机制、会议制度等 。 开源社区的运作越来越职业化 。
2. 开源成为另一种标准制定方式 。 电信领域存在设备对接 , 因而有着非常严格的规范和行业标准 。 同样 , IT领域行业差异性大 , 各公司通过代码发言 , 在社区用代码的方式完成与其他厂商的对接和配合 。 从云计算OpenStack的接口定义等社区实践来看 , 开源已成为另一种标准制定方式 , 标准组织开源化已成趋势 。
3. 开源重新定义了集成和被集成的关系 。 过去 , IBM、惠普等大厂商都有各自的生态合作伙伴规程 , 策略都围绕本公司集成的 。 从云计算开始 , 这种方式发生了微妙的变化 , 开源扮演着集成的身份 , 各厂商(比如存储、网络、防火墙等厂商)都到开源平台上进行集成和对接 。
三、华为的实战经验1. 使用开源软件的风险
第一个阶段 , 华为成立开源中心 , 首先解决的是开源软件的使用安全问题 , “尊重知识产权”也是华为提出的最基本的要求 。 开源软件因产生的背景和目的不同 , 定义了上千种版权许可证 , 各种许可证对知识产权的定义是不同的 , 例如 , 阿帕奇(Apache)类属商业友好型通用公共许可证(GPL)类具有开源传染性 。 2013年软件自由法律中心(Software Law Center , SFLC)统计过GitHub中的600万个项目 , 只有28%存在正规的版权许可证 。 实际情况更为复杂 , 即使许多软件的许可证属于商业友好型 , 由于开源作者背景不同 , 也可能存在引用通用公共许可证的问题 。 2009年 , 华为在研发流程中逐步摸索 , 引进了代码扫描工具 , 在所有产品发布前都要检查代码中是否存在使用通用公共许可证以及嵌套通用公共许可证等问题 。
2. 选择回馈开源社区是划算的
【开源软件|从企业视角看开源软件:华为开源5年的实践经验】第二个阶段是社区回馈 。 企业都以追逐利益为目标 , 代码是企业的核心资产 , 很多企业不理解为什么要回馈社区服务大众?当然大家可以剥开公益的面纱 , 从利益角度算一笔账 。 最初并不认为使用开源软件有什么成本 , 但经过两三个版本的选代以后 , 成本会急剧上升 。 华为经历了多次实践后才认可这种模型 , 这是付出了惨痛代价以后才意识到的 。 如果从一开始就选择与社区合作 , 就可以与社区一起讨论产品的特性 , 然后再进行修改 。 最初的维护成本并不高 , 研发的成本会很高 , 但由于所要求的团队能力并不一样 , 维护成本会逐渐降低 。 最近 , 华为刚拿到Spark商业认证 。 华为在Spark社区开发的时候非常顺畅 , 社区下一步准备做什么、怎么做 , 华为都清楚 , 与社区有很好的互动沟通 。 虽然华为在前期投入了很大的成本 , 但最终取得了相应的成果 。
推荐阅读
- 分手后会彻底从你世界里消失的星座,从不停留,再不相见
- 知书达理,这些星座从来不出熊孩子
- 本月底,对爱情从来不会强求,即使失败,也能坦然面对的4大星座
- 淡泊名利不贪心的3属相,赚钱却不少,从容也致富,能早一日发家
- 确诊病例|浙江新增无症状感染者1例 系从西班牙输入
- 毅品文|伊拉克也能打瘫美国护卫舰?世界海战主角从军舰变成飞机加导弹
- 鱼他说|“成年人的体面,从不发朋友圈开始”
- 晓正谈历史|从右将军到丞相,让诸葛亮官复原职的,是不起眼的第三次北伐
- 娱乐全搜索|当明星变成游戏人物,罗云熙从英气变柔美,王一博最不像本人
- 科学探索|从SN5到SN9 SpaceX星际飞船原型要做这些测试
