企业开源指南|开源软件未来大有可为

张国锋 译

开源软件未来大有可为

无论是便携式设备,还是关键基础设施控制系统都在使用开源软件,开源软件已经成为现代社会的重要组成部分。组织能否实现如下六个战略目标,取决于他们如何采用开源软件?是否将开源软件纳入产品和服务?是否参与开源软件项目和开源社区?

1. 软件统领一切。正如地段在房地产价值中的地位一样,软件已经成为各个行业价值的决定性因素。软件世界正在发生变化。过去只是不起眼创业型公司使用的开源技术,如今成为财富500强公司的主流技术[1]。在各行业的垂直软件堆栈中,开源的渗透率已占整个软件使用量的20%到85%。无论是什么行业,也不管你开发什么产品,你都离不开开源软件。大量开源软件的采用,彻底改变了软件的技术格局。这就要求企业软件领导者也要转变思想,从依赖封闭的专有软件模式向开放的开源软件模式转变,从使用开源软件到引导构建、改进和优化开源软件开发者社区转变。

2. 企业依赖开源。开源软件已经成为企业开发新产品和服务的基础,对很多企业来说,基于开源的开发模式对软件开发工作流程至关重要。现在,已经很少有企业会不使用开源软件去开发一个新产品,或者会采用一个不借鉴开源软件代码库的产品。

3. 商业模式的适应性。商业模式是通过产品或服务创造价值的架构。抛开具体的开源许可要求,开源软件适应于各种商业模式,使开源软件适用于几乎所有行业的软件供应链。表1显示了一个企业使用开源软件实现不同商业模式的各种方式。

表1 开源商业模式


_
完全开源基于开源构建为开源而构建
公司开源软件提供基本的开源库和构建开源软件
客户专家服务和产品开源之上的专有软件或服务集成和服务

4. 改善产品。开源软件可以通过两种方式改善企业产品的开发(图1)。

— 直接作用。企业内部开源,并以如下方式提高企业开源开发效率,从而提高产品或服务质量:(1)内部开源以满足企业内不同研发和产品团队的要求;(2)将企业内部代码贡献给开源项目,以减少开源代码分支和企业内部分支之间的差异;(3)帮助解决合规问题和处理查询。

— 间接作用。企业的开源活动通过以下方式提高自身人才的技能并加强OSS:(1)稳定产品中使用的上游代码;(2)参与内部政策讨论和决策,确保其支持开源开发;(3)通过思想领导力和持续的代码贡献影响上游项目;(4)参与外部技术讨论,影响开源社区;(5)参与内部技术讨论,使企业的方向与特定开源项目社区的方向一致。

5. 专注于创新。正如谚语所说,”人多好办事”。在开源项目中,人手多会加快开发进度。不同组织的合作者可以更快地对他们的共享代码进行修改和修订。因此,企业开发者可以(1)在他人工作基础上开发,可以减少重复劳动;(2)相对于内部开发,在开源社区可以更快地尝试或优化新的功能,并实现技术上的突破;(3)集中精力在更高的堆栈层次上进行区分,提高他们对消费者的独特价值。在这样做的过程中,他们为一个组织的整体创新管道做出了贡献。小型初创企业可以更快地将新的想法推向市场,而更多的公司可以尝试新的想法,而没有失去对其知识产权控制的风险。

6. 开源研发有助于推动企业创新。参与开源项目使企业能够利用外部研究和开发(R&D)力量,发现新的商业机会,利用这些突破性产品和服务提高企业进入市场的速度。对开源研发的共享访问推动了这种跨业务部门的创新。它是许多创新加速器之一,如学术研究、企业风险资本、行业合作、内部研发和创业生态系统。

企业开源准备工作

2000年,IBM投资开源成为企业采用开源的起点。从那时起,成千上万的公司进入了开源生态系统(图3)。在与开源软件及其各自的社区合作方面,所有人都有很多收获;因为他们的参与,开源模式已经成为软件开发的新常态。

现在加入开源软件社区的公司如何最大限度地减少他们的企业学习曲线,并加速他们在消费和参与方面的回报?下面是我从事开源二十多年的经验和教训总结。

图3 开源驱动生态系统创新

  • 加强与学术研究的合作
  • 通过标准和联盟进行产业合作
  • 通过开源项目加强开发合作
  • 加快内部/专有软件的研发
  • 参与初创企业的生态系统
  • 通过企业风险投资进行技术投资

# 确认企业对开源软件的依赖程度

要提高组织参与开源的积极性,第一步是确定组织对开源软件的依赖程度。随着对开源软件依赖性的增加,企业有几种选择可以探索。一种选择是关注许多业务部门使用的软件。第二个选择是关注那些比其他软件具有更大合规风险的软件。例如,移动应用程序和嵌入式硬件可能比你的数据中心代码带来更大的风险。追求这些选项,你可以在多个业务部门或高风险领域展示投资回报,并为获得更多资金和支持提出理由。

另一个选择是把你的贡献集中在直接有利于你的组织的战略和产品的上游项目上,而不是在不同的有趣的项目中跳跃。如果你的企业认为开源工程是一个成本中心,那么就把重点放在支持产品开发的项目上。每年对组织的产品组合进行一次审查。确定哪些产品借鉴了哪些开源项目,然后优先考虑那些支持最多产品的项目。这种方法使有限的软件工程资源得到最大的利用。

# 确认开源所需人力资源

一旦明确了组织对开源的具体需求,你就可以确定需要哪些开源专业人力资源,哪些资源内部可以提供?哪些资源需要从外部获取?可以在开源社区招募开发者,你的组织就可以获得开源所需技能、认可和指导能力。

要找那些在开源社区获得同行高度认可并有足够影响力的人,只需2-3人就可以对一个大型项目(如Linux内核)产生明显的影响。有了他们,就可以吸引其他雇员,并指导初级开发人员。

在招聘时要考虑如下四个要点:技术专业知识、开源方法和经验、开源工作实践,以及企业利益和候选人利益的一致性。当高级开源开发者的兴趣和技能与企业在特定项目中的利益相一致时,激励他们就更容易。例如,一个Linux内存管理专家可能不喜欢在文件系统上工作。找到这样的匹配是建立长久关系的关键。

制定开源战略

开源是软件大规模生产协作最有效率的方式。在开源生态系统中,任何人都可以参与并作出贡献,其在解决复杂问题的能力是独一无二的。相对于闭源,开源显然更有影响力。但要充分发挥开源的作用,还需要制定强有力的开源战略。

在制定开源战略时,有许多问题需要考虑。企业应该在制定开源战略时尽早解决这些问题。开源战略四要素(图4)包括:

  1. 企业想参与的开源项目。
  2. 企业想参与的开源社区。
  3. 企业开源治理的有效性。
  4. 企业文化的开放性,企业文化是否认同开源工作。

# 确定企业开源战略目标

一个组织在制定开源战略时,需要考虑如下三个主要问题。

1. 企业目标

开源战略如何帮助企业实现战略目标?

首先要明确开源在企业整体战略中的位置。在许多方面,公司都可以从开源的使用和贡献中获益。有关开源战略的需求往往很具体,这些需求一旦确认,你就可以将精力聚焦于开源能给组织带来最大好处的领域。企业开源战略目标包括:

  • 制定一个长期的、高质量的产品路线图,确保其在生态系统中的领导地位。
  • 降低产品或服务构建维护的成本和复杂性。
  • 以提高利润率为目标,通过产品或服务的差异化提高竞争力。
  • 建立一个开源的替代品,使竞争产品或服务商品化。
  • 提高产品和服务的整体质量。
  • 公开参与开源相关活动,提高企业知名度和品牌认可度。
2.知识产权战略

开源战略如何帮助企业实现其知识产权(IP)战略?

无需在编码和设计方面投入大量资金,企业要为客户提供所需的产品和服务,开源软件或许就是一个有效途径。开源往往也是商业化产品的前身,企业利用开源代码开发产品或服务,并最终推向市场和销售。开源也是企业实现其知识产权战略的绝佳方式。开源许可与专有许可不同,因此企业必须考虑许可的差异如何影响他们从开源的使用和开发中获益的能力。商业目标可以包括以下任何一项。

  • 确定一种许可策略,使组织能够更多地获取外部支持,但仍然可以改进专有产品。
  • 遵守产品和服务中所使用的开源软件许可,减轻知识产权风险。
  • 改进核心的开源代码组件,使专有产品的知识产权与众不同。
  • 在开源许可下发布专有源代码。
  • 许多企业发现开源一览表和模板有助于指导在开源许可证下的代码发布。每个案例都是不同的,但发布开源代码的机制是相似的。Linux基金会已经创建了一个开源指南“启动一个开源项目”,以指导企业完成这个过程,从项目的选择、预算和法律考虑,到项目启动和维护。这是一个企业创建开源的样本清单,也是一个实例,以方便各个团队了解开源过程中涉及的内容。

开源许可与专有许可不同,企业必须考虑不同许可的差异以及对开源使用和发展中获益能力的影响。

3.开源的商业机会

开源战略如何帮助企业抓住本来无法实现的机会?

开源还提供了独特的商业机会,企业只有通过开源战略才能获得。商业机会包括:

  • 将研发投资集中在关键的开源技术,增强产品差异化能力,从而获得市场领导地位。
  • 支持关键的开源倡议和联盟,捍卫现有的市场地位。
  • 将选定的专有能力开源发布,以颠覆竞争对手或竞争市场。
  • 利用开源构建公平的技术竞争环境。
  • 充分利用现有开源资源,加快产品商品化、市场化能力,以降低销售成本和产品价格。

# 明确企业开源现状

企业开源需要经历四个阶段:应用开源、参与开源、贡献代码和主导开源。每一阶段都要求企业在前一开源战略阶段上获得成功,企业开源战略进展程度完全取决于企业自身。图5所示为企业开源战略的四个阶段。请注意,当企业开源战略从一个阶段过渡到另一个阶段时,开源战略阶段会有重叠。

软件工程师最早推动了开源应用并参与了开源活动。他们有利用各种开源组件的技术优势,加快了开发进度,但他们很少参与维护这些组件的项目。随着时间的推移,组织的高层也认识到了开源软件的价值。随着开源软件应用的深入,业务需求日益离不开开源软件,开源软件的确有助于推动企业商业战略。

一些公司应用开源实现了他们的商业目标,也有一些公司认识到参与开源可能获得战略优势。他们会设立一个开源办公室,专门负责组织的开源战略规划并监督执行。本节内容有助于认识企业开源所处阶段,想要达到的目标,以及如何实现这些目标。

开源战略的最高形式是领导力。开源领导者通过与项目成员建立信任并保持高水平的持续贡献来赢得其领导地位。领先的组织可以利用技术上的新兴趋势。

应用开源

应用开源是企业开源战略的共同起点。大量采用开源组件可提高识别开源产品和服务的能力,并降低开发产品和服务的总时间和总成本。如下是该阶段必须开展的工作:

  • 建立一个开源审查委员会(OSRB),作为所有开源活动的信息交流中心,包括许可证合规性。
  • 制定开源分类方案,指导并做出应用什么开源代码的决定。
  • 清点所有在使用的开源软件许可证,明确企业是否遵守了所有的许可证义务。
  • 部署自动工作流程软件,来评估/批准开源代码的使用。
  • 制定计划,增加工程、产品管理和法律等方面人员和基础设施投资,以管理封闭源代码和开源代码的复杂组合。
参与开源

一旦企业在产品或服务中应用开源并取得成功,企业就可以将开源战略推进到更高阶段,即加入开源社区。除非你已经雇用了有经验的开发人员,否则你可能需要更密切地参与社区活动,以提高你的知名度,并吸引你所需要的开源人才。以下该阶段必须开展的工作:

  • 关注社区交流平台,如聊天服务器、邮件列表、论坛和网站,时刻关注项目进展。
  • 积极参加相关会议和聚会,在社区内建立好人脉关系。
  • 赞助项目活动和基金会,以提高企业知名度。
  • 教育开发者如何参与开源项目并为之做出贡献。
贡献代码

一旦企业体会到定期参与开源社区的好处,就应该考虑向项目和社区贡献代码,并评估贡献代码对企业竞争力的影响。未来产品的功能的塑造靠的是代码贡献者,因此向商业目标至关重要的开源项目贡献源代码可以影响这些项目未来发展方向,也是提高企业声誉的最佳方式。以下是该战略阶段必须开展的工作:

  • 聘用一专职主管来领导开源战略和管理开源办公室。
  • 聘用对产品和服务至关重要的开源社区贡献者和提交者。
  • 部署开源协作工具,支持开源应用和贡献代码。
  • 增加开源开发者资源。
  • 逐步加大对工程、产品管理和法律资源的投入,以加强与外部社区的合作。
主导开源

开源战略的最高形式是主导开源。开源项目主导者与项目成员建立信任并保持高水平的持续贡献,以此来赢得主导开源的战略地位。主导开源的组织可以利用技术中的新兴趋势。为确保其在开源社区的领导地位,需要对目标开源社区和联盟进行大量投资。以下是该战略阶段必须开展的工作:

  • 将在工程、产品管理和法律资源的投资逐步延展到外部社区和行业联盟。
  • 加强与目标开源社区的接触。
  • 有选择地参与开放标准,以掌握开放组织的需求和要求。
  • 加强与开源基金会合作。
  • 建立一个开源项目、开源组织或开源基金会。

转型

作为一个技术驱动型组织,企业都在评估、使用和部署开源软件。或许你正在参与并对开源项目作出贡献。理想情况是,有专业的开源团队指导这些工作,以减少风险,并通过参与开源获取战略利益。图6展示的是参与开源的各个阶段。前三个阶段有无指导都会发生,而在主导开源阶段,只有在开源项目到位的情况下才能成功。

图6还说明了四个关键战略阶段和每个战略阶段中的主要活动。其目的是强调推动开源活动以及企业可以采取的措施,加强对应用开源和贡献开源活动的指导。

上文翻译自Linux基金会《企业开源指南》p7-15↓↓↓

Leveraging Open Source Software 

Preparing the Enterprise for Open Source

Identify Reliance on Open Source Software Identify Open Source Skills Portfolio  

Developing an Open Source Strategy 

Identify Enterprise Objectives 

Identify Your Stage of Involvement