第 7 小节:企业视角看待开源
# 第 7 小节:企业视角看待开源
本节主要探讨从企业角度出发,如何看待开源软件、开源文化、开源治理等,并分析企业参与开源的动机、优势和风险。
# 概述
开源本身是很好的,非常利于行业的进步和发展的,纵观历史,只有拥抱开源,解放思想,乐于分享,才能够有更加长足的进步和发展。
举个很简单且大家都知道的例子:
假设:我手里只有一个苹果,你手里只有一个梨,我舍不得给你吃,你也舍不得给我吃,那么我就不知道梨的味道,你也不知道苹果的味道。
反之:则我分一半给你,你分一半给我,咱俩就都可以尝到苹果和梨的味道。
开源亦是如此。
看待开源不能只从一个方面看,只看到它的好,看不到风险,那么给你今后可能会带来不小的麻烦;如果只看到它的不好,看不到他的好,那么自己只会成为井底之蛙,故步自封。
下面从两个大方面来阐述。
# 视角
- 开源的好处及优势
- 开源的风险及劣势
# 开源的好处及优势
开源软件的好处真的是数不胜数,一个很有代表性的例子就是,比如你要做一个项目,现在没有现成的框架。如果自己要去开发一套框架,那势必要有足够的时间,精力去写它,如果写的成熟点少则数天,多则数月,那么项目急着要做,总不能等你把框架开发完了再去写吧。
那么开源的好处来了,开源框架开箱即用,还有非常完善的文档,交流群,各种采坑经验分享,可以从搜索引擎中搜索到一大把。
既然是开源,那么肯定有很多开源框架供你选择,好处又来了,你可以选择一个与你技术能力匹配的框架,或者你可以去挑选一个界面美观优化的框架,你也可以选择一个大家评价比较高的开源框架。
往往搭建开源框架不需要花费多长时间,快的可能几分钟就搭起来了,慢的一个小时也搭起来了,快捷方便自然不用说。
有些开源框架还有技术交流群,交流论坛等等,让你能够在遇到问题的时候,跟大家讨论,共同来解决你遇到的问题。
总结一下:
- 开箱即用
- 选择性多
- 方便快捷
- 技术解决方案交流
# 开源的风险及劣势
开源软件不能被简单地认为只涉及产品研发过程中的选型和开发。从企业视角看,开源软件还涉及产品外销时的知识产权法务风险、企业的研发效率、产品架构、软件生态系统、开放标准构建手段、人才竞备、商业利益角逐等。
对于大多数企业来说,开源软件的法务风险可能是最大的问题,尤其是涉及海外业务的产品。因此,企业需要重视开源软件的选型、安全审查,才能做到合规化,避免法务风险。
# 企业用多个视角看待开源
- 把开源看作是一个外购件或技术获取方式,看到的问题是:如何开源选型获取新技术?如何在软件生命周期过程有效迭代管理?
- 把开源看作外部协作的一种方式,看到的问题是:获取外部人才的一种方式。与社区的技术人员、以及其他公司协作。
- 把开源当做发展手段:看到的问题是如何在新技术领域产生影响力;在新的技术和业务领域,如何通过开源,站在行业发展前沿等问题。
高德纳公司(Gartner)及 Linux 基金会的调查报告显示,企业平均有 29% 的软件代码来自开源,在互联网背景下,开源软件比例高达 80%。产品中大规模嵌入开源代码,会产生一系列研发管理问题:
- 版权许可证(License)选择不慎会潜伏知识产权法务风险,成为企业拓展海外市场的绊脚石。
- 不同团队选择多种同类开源软件会带来巨大的管理成本。
- 产品研发初期,如何在众多类似的开源组件中选择合适的代码?方向选择错误会导致陷入产品生态与业界不兼容的困境,面临放弃重写还是继续往下走的两难抉择。
- 产品开发时难免会对代码进行修改,修改后的商用代码是闭源还是开源?随着时间的推移,社区版本更新迭代,继续闭源,意味着会重复投入资源,进行不增值的代码合入;而开源则意味丧失产品竞争力。
- 主动开源并不意味着社区就能接纳,需要长期有大量的回馈代码才能建立信誉及影响力,公司内的社区管理人员才能得到锻炼和培养。但是,社区管理人员个人知名度的提升会增加被猎头公司挖走的风险。
- 软件在开发过程中或完成之后,如果出现同类开源软件,该如何处理?
# 企业参与开源的动机
总的来说,企业参与开源项目的动机主要有以下几个:
- 参与制定行业标准(比如云计算厂商参与 CNCF 项目,大数据厂商参与 Hadoop 项目)
- 增强公司的技术品牌和技术输出
- 为公司招聘人才提供标杆和增加吸引力
- 寻找商业化的机会(大公司的开源团队都有很多的商业化 KPI 压力)
# 企业为什么会主动贡献开源
- 吸引人才:当贵司依赖开源软件,那么寻找人才最好的地方莫过于熟悉项目内部本身,而且还是项目社区成员。通过在社区的公开的工作,贵司可以吸引到一些既是做自己喜欢的工作,还能获得一定报酬的人。尤其重要的一点,贵司现有的项目参与的员工,每天都会和他们在一起打交道,自然是非常熟悉的,找到他们也很容易。
- 降低维护成本:如果一个企业开始在本地的分支做缺陷修复、增加新的功能,然而却没有将这些代码提交到上游的开源项目中,那么很快维护本地的分支,将成为该公司的一个成本噩梦。将上游作为优先的提交缺陷修复和增加新功能是最为明智的做法,因为这样的维护成本最低。
- 项目影响力:在一个开源的项目中,新的特性或功能来自社区的贡献,那么这些贡献就会影响到项目的走向,如果你认为为项目所贡献的新功能对于贵司非常的重要,那么你应该去安排积极的贡献者对这些功能进行开发和实现。通过贵司的贡献,自然而然就可以影响到项目的走向。
- 有利可图:商本逐利,无可厚非。一方面,对现有开源项目的贡献可以让企业在降低维护成本的同时促进相关业务的发展,获取利润;另一方面,开源本公司的个别项目吸引全球各地的开发者共同维护,借助开源的优势扩大该项目在本行业的影响力,扩大市场占有率,在保持项目开源继续发展的前提下,通过附加其他手段来获取丰厚的利润回报。
# 本部分内容贡献者
欧建深 (opens new window)、麦健翔 (opens new window)、MartyZane (opens new window)、ORH (opens new window)、阿基米东 (opens new window)、BaiYunIT (opens new window)、WhitePaper (opens new window)、taotieren (opens new window)、ttyhtg (opens new window)
发现内容中的错误?还是想要补充更多符合主题的内容?《开源指北》欢迎你进行贡献,点击贡献指南了解贡献的具体步骤。