“开源”是近几年是非常火的一个词,但目前很多企业对于开源是什么,怎么用开源,如何参与开源,企业在开源方面如何做决策,如何进行开源治理,如何利用开源强化竞争力等方面的问题,仍存在着一些难点。
其实现实是,Open Source Has Won,企业已离不开开源软件,但是企业使用开源软件有各种风险,企业可以利用开源来获得商业利益,企业可借鉴开源模式进行各种协作,这些风险和收益都是企业需要考虑的东西,所以需要一个整体、一致、长期、清晰的公司级别的策略,称之为企业开源战略。
本文重点介绍了什么是企业开源战略;企业为什么需要开源战略;企业开源战略包含的内容,以及企业开源战略制定和落地的实践经验。本文又分为两部分:第一部分为企业开源战略是什么,为什么需要,都包含哪些内容;第二部分为企业开源战略如何制定和落地。因为这些内容对大中型科技企业更适用,所以本文的标题为大中型科技企业如何制定和落地企业开源战略。
- 企业开源战略定义
企业开源战略是企业技术战略的一部分,它主要与企业所使用的开源软件和企业内外部协作相关,包括如何选择和使用、如何管理和维护、如何与外部企业和社区合作、是否创建自己的开源项目来获取利益,还包括学习开源社区的协作模式来提升内部的效率和质量等。
关键的关键是需要跟企业的商业战略对齐。
空谈开源对于企而言没有任何意义,企业是一个盈利性组织,做任何事情都要考虑ROI(投资回报率)。因此,企业开源战略一定要与企业的商业战略对齐。
1.1 企业开源战略主要解决哪些问题?
- 海量开源组件如何使用才能安全、合规、高效?
- 如何利用开源建设内部的研发文化,让内部协同更流畅,减少重复造*,加速创新?
- 每个企业都会用到大量开源项目,重点投入的项目是哪些?为什么?怎么投?如何衡量?
- 是否要对外开源自己的项目,为什么要开?怎么开?持续运营方向是什么?
1.2 为什么需要企业开源战略?
企业已经离不开开源软件,而且需要利用开源来增强企业竞争力,所以一个整体、一致、长期、清晰的公司级的策略是非常有必要的。
- 一个统一的、连贯的企业开源战略有助于明确企业内的优先级
- 企业开源战略可以指导企业内开源运营,并向员工提供清晰一致的导向
- 开源软件管理的流程和政策需要更高层的上位法
在展开阐述企业开源战略包含哪些内容以及如何做之前,我们先看看企业开源的一些基本知识和底层逻辑。
2. 开源的基础知识和底层逻辑
2.1 开源究竟是什么?
“开源”一词现在已经有很多种解释,开源软件、开源商业、开源协作、开源社区等等,开源的核心理念是以公开的方式产生知识产权。开源软件= 源码公开+OSI认证的License。而开源的商业模式则是建立在开源软件之上的商业模式。
现在认为,开源是一种开放式协作模式,协作的产出物符合开源许可证的要求。这种协作用在软件上,产出物即软件符合开源软件许可证的要求,就是开源软件。
2.2 企业使用开源软件不等于免费
企业使用开源软件不是免费的,是有各种成本的,例如引入的成本、学习的成本、维护的成本等,而在这其中,维护的成本一般是最高的。开源软件的许可证不管是哪种,都包含一个免责条款,即该开源软件的用户在使用该开源软件的过程中出现任何问题,都与原作者无关,原作者没有任何义务修复企业在生产环境中碰到的实际问题。因此,企业在使用开源软件碰到问题时,要么需要商业公司的支持,要么自行招聘工程师负责这方面的工作。而这都是需要成本的。
2.3 开源软件相关的常见开源商业模式
符合OSI定义的开源许可证的软件,本身是没有销售价值的,任何人都可以对其进行下载、修改、分发,软件本身不会收取任何费用。而关于开源的商业模式,则主要有如下2类:
(1) 羊毛出在猪身上
这是互联网从业人员非常熟悉的模式,A产品免费、B产品收费。通过开源软件产品免费提供,而从另外的产品上收费而获得营收。例如Google的安卓手机系统是免费的,但安装在上面的Google GMS是必须的,Google通过GMS上的服务来获取受益。例如Mozilla的Firefox浏览器是开源的,它通过内置的搜索引擎默认为Google从而向Google收取费用。这都是典型的盈利模式。
(2) 基于开源软件进行企业服务
这类总结起来主要有以下四个模式:
- 双License(代表:MySQL、X264)
- Open—Core(代表:Kafka,Elastic)
- Service(代表:RedHat,IBM)
- SaaS(代表:AWS、腾讯、阿里)
2.4 企业开源的底层逻辑
- 利他+利己
首先,企业将软件免费开放,将自己的知识产权暴露出去,这本身就是一种利他的行为。但企业又要从开源上获取收益,这又是利己的。因此,利己和利他必须要很好地结合,既吸取开源带来的便利,同时避免过度商业化给开源社区及企业长期利益带来损害。所以需要很好的设计商业模式,把握这个度。
- 竞争+合作
开源界有一个词是Coopetition,是Competition和Cooperation两个词的混合体,开源世界既有竞争也有合作。两个厂商有可能在开源项目A方面是竞争关系,而在开源项目B方面又是合作关系。开源不是一个零和游戏,更多是做大蛋糕,大家分享利益的过程。例如,同一个商业赛道上的两家开源软件企业,可能只有在面对同一个客户时才是刺刀见红的竞争,而在其他方面,例如面对投资者、媒体、上下游或用户时,他们其实是一荣俱荣的合作关系。
- 开放+透明+协作的价值观
开源的运作建立在“开放+透明+协作”的价值观上,这也是Apache项目所推崇的Apache开源软件基金会最基本的理念。开源中的协作是要建立信任的,社区的运作也是以信任为基础的,而信任的建立必须要遵守这种价值观。
- 驱动力3.0
对于从事软件研发的知识工作者而言,参与开源社区做贡献,更多的是源于他们的自驱力,他们希望自己的软件能够被更多人所使用并获得更好的价值。传统的“胡萝卜+大棒”的方式,做了多少事就拿多少钱的这种传统的激励方式是非常短期和低级的,对于开源相关的长期健康运作是不适合的。开源需要利用驱动力3.0的激励模型。
3.下面我们先看看企业开源战略中第一部分,如何管理企业内部的开源软件供应链?
(1)企业开源战略之一:开源软件供应链管理
开源软件的供给非常多,企业要确保开源软件供应链的可信。企业引入开源并在内部进行编译、再开发、再部署,这是一个链条的过程,在这个过程中,最重要的是要保证链条是安全的、合规的、高效的。否则会给企业带来直接的商业损失。以下是几个实际案例,因为企业不正确使用开源软件导致的商业损失。