为什么微软、Google 等都在纷纷拥抱开源?

作者 | 黄峰达

图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

开始之前,让我们再说说开源软件到底代表的是什么?

开源软件是源代码可以任意获取的计算机软件,任何人都能查看、修改和分发他们认为合适的代码。开源软件依托同行评审和社区生产,皆以分散、协作的方式开发。

由于,这篇文章所针对的是企业,所以这里的侧重点是:开源会为企业带来什么?按照这个模式,分享的内容分为了四个部分:

  • 开源发展现状

  • 开源发展案例分析

  • 企业开源能力模型

  • 企业开源模式

考虑到『开源发展案例分析』是各种业内案例,不适合用文章描述,这里就只介绍剩下的三个维度。

开源发展现状

按照时间线,我把开源划分了四个时代:

  • 弱版权时代。哪来的闭源。Unix 在 AT&T 诞生,它以低廉甚至免费的许可分发源码。

  • 自由软件时代。开源就是自由。理查德·斯托曼(RMS)发起了 GNU 计划,发起了『自由软件运动』。

  • 开源运动时代。开源为了对抗。Mozilla 开创的开源运动重塑了整个技术界。

  • 云原生开源时代。开源可以赚更多的钱。云厂商为了扩大市场份额,开始运用开源战略。

简单来说,云原生开源时代的存在,就是因为企业发现开源变得有利可图。

企业正在拥抱开源

除此,根据『红帽® 2020 年度企业开源现状报告』,企业对于开源的拥抱程度逐渐增强:

  • 越来越多的企业意识到开源的重要性。有 95% 的 IT 领导者认为,企业开源对于他们的企业基础架构软件战略至关重要。

  • 专有软件的使用正在快速减少。昂贵且不灵活的专有软件许可,导致高昂的资本支出(CapEx)和供应商锁定。

因为对于企业来说,企业使用开源可以:

  • 提高软件质量

  • 降低总拥有成本

  • 改善安全防护

  • 为云技术云原生设计

  • 能安全利用开源技术

  • 获得最前沿创新技术

企业开源的收益

而对于一些企业来说,他们已经不再仅仅只是使用开源了,他们还开源了一系列软件。其主要的直接盈利方式有三种:

  • 付费版本。如开源的 Nginx,以及更多功能的 Nginx Plus。双重许可、商业使用收费、部分组件收费等。

  • 咨询/服务。如 JBoss、Spring 通过提供技术支持、培训、二次开发支持等技术服务而获得收入。

  • 托管模式。通过免费开源的 MongoDB 吸引用户。推出 MongoDB 数据库托管服务等,增加创收渠道。

而如我的同事刘尚奇所说,一些企业(尤其是国内)主要是通过间接获利:

  • 建立内部协作。增强组织内技术氛围,共享团队间的技术资源。

  • 打造雇主品牌。在技术社区建立品牌形象,和杰出贡献者保持良好的关系,有助公司技术招聘。

  • 构建合作生态。与上下游供应链建立合作,建立在该领域的权威定位。

  • 参与标准制定。借助于社区力量,一起促进行业建立标准。

  • 推广技术理念。将新的技术理念融入开源项目中,促进整个行业往前发展。

企业开源能力支柱

按与开源的习惯,我将企业开源分为了四种模式,或者说是步骤:

  • 使用开源

  • 参与开源

  • 走向开源

  • 构建生态

它们有各自的准入条件、收益和盈利方式。

对于企业拥抱开源来说,我和我的同事们觉得它们需要五大能力支柱:

  • 组织支持。开源是一种开放创新型的组织模式,需要自上而下的支持。

  • 工程能力。开源项目的工程能力是对外展示工程能力的渠道

  • 开源文化。开源世界有独特的文化基因:开放、协作、透明等。

  • 产品思维。每个开源项目都是一个产品,都需要像产品一样对待。

  • 社区与生态。活跃社区,构建生态,是一个开源项目强大的必由之路。

每个能力支柱对应了五个关键实现模式,一共 25 个。限于篇幅所限,我只列出几个核心的要求。

  • 组织支持。制定开源投资战略、建立开源项目部门。

  • 工程能力。充分测试、文档体验设计。

  • 开源文化。开放式管理、公开透明开源软件流程。

  • 产品思维。和产品策略一致、制作营销策略。

  • 社区与生态。培养关键意见领袖、反馈驱动开发。

对应的我们也总结出了适用于不同阶段的能力支柱。

企业开源模式

在那之前,不得不提及 Mozilla 的一篇关于开源实践的文章:

  • 馈赠。无附加条件的提供有价值的产品/服务。

  • 共创。分享实现预定目标的任务和成本。

  • 征求意见。利用社区产生想法和解决方案。

  • 从用中学。收集和分析活动以改善产品和服务。

  • 加强价值交换。通过技术或服务增加价值或简化交流。

  • 网罗共同利益。协调以确保个人活动能够实现更多目标,以实现共同的使命。

主要是因为基于此,有六个对应的下游实践:

  • 使用开放技术构建应用

  • 帮助完善开源项目

  • 向开源项目提出需求、想法

  • 反馈 bug 和使用问题

  • 为开源项目创造价值

  • 加入开源项目社区

对应的我把它们划分到了使用开源 + 参与开源之中。

使用开源

对于使用开源来说,它的优点显而易见:

  • 更容易招到适合的人才

  • 开放技术降低研发成本

  • 社区己有拥有丰富的资料

  • 关注于高优先级的部分

  • 无需担心『供应商-锁定』

也不需要我展开详细的说明,对应的实践可以参见上面的开源能力支柱。

参与开源

当需要一些新的技术基础设施时,我们得考虑是否造轮子或者是使用开源软件。

  • 减少低性价比的轮子。当实现复杂、很容易出错,且要花费大量的时间,而且有成熟工的开源项目,就不要自己实现轮子。

  • 基于开源二次封装。即内部的轮子是基于开源进行二次封装,适配内部的业务或者产品。

  • 走向二次开源。自己的库基于开源软件,并重新对内或者对外发布,减少重复劳动。

于是乎,我们就这么走向了开源。

走向开源

总结了走向开源的三条路径:

  • 提炼内部沉淀

  • 创建新的开源方案

  • 衍生解决方案

对应的实践也可以参见上面的开源能力支柱。

构建生态

事实上,对于企业来说,走向开源一定要得到某种程度的回报。其中的一个就是通过构建生态来盈利。对于企业来说,它有这么一些优点:

  • 成为价值生态系统中心的企业。将技术嵌入到他们的产品中去,以便更好地扩大自己的领域。

  • 在生态中融入自己的产品和服务。如 Google 借助于 Android 系统建立在移动广告、移动搜索的地位。

  • 借用开源力量进行市场扩张。如 Google 的 Chromium、Android(顺便卖广告),微软的 Visual Studio Code

  • ……

这也是现在的云厂商开源的一个主要原因。

虽然我在分享中提及了好几个例子:

但是只说 Google 云的案例。

Google 案例

在某些领域,Google 领先行业内其他所有公司 5 年或者 5 年以上。(如 MapReduce) —— Brain Larson

在过去的几年里 Google 围绕着云开源了一系列的软件,如 Kubernetes、Tensorflow、Beam、Istio 等等。其中有几个软件已经成为了行业的标准。

那么为什么 Google 会开源?

  • 支持 xxx 开源项目越多, Google 云平台作为一个平台的吸引力就越大;

  • 使用 xxx 项目的用户越多,想在 Google 云平台上运行 xxx 项目的用户也就越多;

  • 开发 xxx 项目过程中吸引到的伙伴越多,那对这样的数据处理模型的推广就越有利。

总结

企业开源,从本质上来说是一种双赢。

作者简介:黄峰达(Phodal)DevOps 知识平台 Ledge 创始人、ThoughtWorks 高级咨询师。开源狂热粉,在 GitHub 著有大量开源软件项目及库 Mooa、Growth、Ledge、ADR、Coca、Chapi 等,GitHub 排名(stars、followers、commits)国内 top 10,全球 top 100。出版有《前端架构:从入门到微前端》、《全栈应用开发:精益实践》、《自己动手设计物联网》。

【END】

更多精彩推荐
☞MATLAB 被禁点燃导火索,国产软件路在何方?
☞JS、Java、C 依然强势,Go、Kotlin、Python 成为潜力股,2020 开发者生态系统报告揭晓!
☞前字节跳动程序员 28 岁提前退休引热议,网友:我也想!
☞用 Python 训练自己的语音识别系统,这波操作稳了!
☞大数据 Spark :利用电影观看记录数据,进行电影推荐 | 原力计划
☞区块链如何解决食品安全问题?
你点的每个“在看”,我都认真当成了喜欢

猜你喜欢

转载自blog.csdn.net/csdnnews/article/details/106880314