Blog

Blog

PHODAL

开源游戏:开源会为企业带来什么

上周在公司内部又做了一次关于开源的分享,与三月份那次稍有不同的是,这次的关注点主要是:企业与开源软件。

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

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

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

  • 开源发展现状
  • 开源发展案例分析
  • 企业开源能力模型
  • 企业开源模式

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

开源发展现状

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

  • 弱版权时代。哪来的闭源。Unix 在 AT&T 诞生,它以低廉甚至免费的许可分发源码。
  • 自由软件时代。开源就是自由。理查德·斯托曼(RMS)发起了 GNU 计划,发起了『自由软件运动』。
  • 开源运动时代。开源为了对抗。Mozilla 开创的开源运动重塑了整个技术界。
  • 云原生开源时代。开源可以赚更多的钱。云厂商为了扩大市场份额,开始运用开源战略。

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

企业正在拥抱开源

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

  • 越来越多的企业意识到开源的重要性。有 95% 的 IT 领导者认为,企业开源对于他们的企业基础架构软件战略至关重要
  • 专有软件的使用正在快速减少。昂贵且不灵活的专有软件许可,导致高昂的资本支出(CapEx)和供应商锁定

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

  • 提高软件质量
  • 降低总拥有成本
  • 改善安全防护
  • 为云技术云原生设计
  • 能安全利用开源技术
  • 获得最前沿创新技术

企业开源的收益

而对于一些企业来说,他们已经不再仅仅只是使用开源了,他们还开源了一系列软件。

主要的直接盈利方式有三种:

付费版本。如开源的 Nginx,以及更多功能的 Nginx Plus。双重许可、商业使用收费、部分组件收费等。 咨询/服务。如 JBoss、Spring 通过提供技术支持、培训、二次开发支持等技术服务而获得收入。 托管模式。通过免费开源的 MongoDB 吸引用户。推出 MongoDB 数据库托管服务等,增加创收渠道。

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

  • 建立内部协作。增强组织内技术氛围,共享团队间的技术资源。
  • 打造雇主品牌。在技术社区建立品牌形象,和杰出贡献者保持良好的关系,有助公司技术招聘。
  • 构建合作生态。与上下游供应链建立合作,建立在该领域的权威定位。
  • 参与标准制定。借助于社区力量,一起促进行业建立标准。
  • 推广技术理念。将新的技术理念融入开源项目中,促进整个行业往前发展。

企业开源能力支柱

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

  • 使用开源
  • 参与开源
  • 走向开源
  • 构建生态

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

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

  • 组织支持。开源是一种开放创新型的组织模式,需要自上而下的支持。
  • 工程能力。开源项目的工程能力是对外展示工程能力的渠道
  • 开源文化。开源世界有独特的文化基因:开放、协作、透明等。
  • 产品思维。每个开源项目都是一个产品,都需要像产品一样对待。
  • 社区与生态。活跃社区,构建生态,是一个开源项目强大的必由之路。

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

  • 组织支持。制定开源投资战略、建立开源项目部门。
  • 工程能力。充分测试、文档体验设计。
  • 开源文化。开放式管理、公开透明开源软件流程。
  • 产品思维。和产品策略一致、制作营销策略。
  • 社区与生态。培养关键意见领袖、反馈驱动开发。

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

企业开源模式

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

馈赠。无附加条件的提供有价值的产品/服务。 共创。分享实现预定目标的任务和成本。 征求意见。利用社区产生想法和解决方案。 从用中学。收集和分析活动以改善产品和服务。 加强价值交换。通过技术或服务增加价值或简化交流。 网罗共同利益。协调以确保个人活动能够实现更多目标,以实现共同的使命。

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

  • 使用开放技术构建应用
  • 帮助完善开源项目
  • 向开源项目提出需求、想法
  • 反馈 bug 和使用问题
  • 为开源项目创造价值
  • 加入开源项目社区

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

使用开源

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

  • 更容易招到适合的人才
  • 开放技术降低研发成本
  • 社区己有拥有丰富的资料
  • 关注于高优先级的部分
  • 无需担心『供应商-锁定』

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

参与开源

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

  • 减少低性价比的轮子。当实现复杂、很容易出错,且要花费大量的时间,而且有成熟工的开源项目,就不要自己实现轮子。
  • 基于开源二次封装。即内部的轮子是基于开源进行二次封装,适配内部的业务或者产品。
  • 走向二次开源。自己的库基于开源软件,并重新对内或者对外发布,减少重复劳动。

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

走向开源

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

  1. 提炼内部沉淀
  2. 创建新的开源方案
  3. 衍生解决方案

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

构建生态

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

  1. 成为价值生态系统中心的企业。将技术嵌入到他们的产品中去,以便更好地扩大自己的领域。
  2. 在生态中融入自己的产品和服务。如 Google 借助于 Android 系统建立在移动广告、移动搜索的地位。
  3. 借用开源力量进行市场扩张。如 Google 的 Chromium、Android(顺便卖广告),微软的 Visual Studio Code
  4. ……

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

虽然我在分享中提及了好几个例子,但是只说 Google 云的案例。

Google 案例

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

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

那么为什么 Google 会开源?

  • 支持 xxx 开源项目越多, Google 云平台作为一个平台的吸引力就越大;
  • 使用 xxx 项目的用户越多,想在 Google 云平台上运行xxx 项目的用户也就越多;
  • 开发 xxx 项目过程中吸引到的伙伴越多,那对这样的数据处理模型的推广就越有利;

总结

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

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签