我最近写了一篇关于制作开源软件的博客,以及如何思考这个过程的高级步骤。我们从对软件的需求开始讨论,明确发布为开源软件的动机,然后是构建社区的结构性要求(许可证选择、协作平台或代码托管平台以及治理考虑因素)。贡献是任何社区的生命线,所以最后我们讨论了构建一个入口以鼓励用户,希望他们成为贡献者,以及为方便贡献而需要的额外入口。
Rory MacDonald (@technocreative) 在评论中提出挑战,认为公司开发开源项目除了协作意愿之外,还有重要的商业动机,并提供了一些例子。我完全同意,我想在此基础上进一步阐述这些想法。
为什么一家公司(而不是个人)会想要“制作”开源软件?
同样,我们需要考虑两种类型的“制作”:
- 公司可以为已有的开源项目做出贡献。
- 公司可以创建一个新的开源项目(通过发布现有软件或创建新软件)。
如果我们考虑一家公司为“外部”项目做出贡献,那么我们应该从这个角度来看待:这是一个高级的协作案例,其中开源项目被用于公司提供给客户销售的产品或服务中。想想红帽和使用 Linux 来交付红帽企业 Linux。否则,为严格在内部使用的项目做出贡献,看起来很像之前的帖子中讨论的那样——这关系到工程经济学和共享创新,并且长期使用分支会变得昂贵,除非它能与通过保密来维持业务优势的成本相平衡(例如,谷歌早期使用 Linux 的方式)。
参与外部开源许可项目是扩展传统企业“自建”与“购买”思维方式的案例,包括“借用”和“共享”。如果公司在内部使用该项目,则关系到解决方案的上市时间,如果该项目用于开发产品或为客户提供销售服务,则关系到产品上市时间。公司需要在产品或服务中使用开源许可软件时记住,公司的存在是为了解决问题并围绕解决方案创建市场。这完全符合莱维特的关于解决客户问题(“需要 1/4 英寸的孔”)而不是销售产品(“电钻”)的观察。红帽不是“销售 Linux 发行版”,而是提供一个专业维护和支持的低成本基于 PC 的服务器,以替代昂贵的专有 UNIX 系统和昂贵的专有硬件。
当公司使用外部开发的开源项目时,有趣的问题在于理解软件知识产权的所有权流动。主要有几个关注点:
- 可能存在哪些需要根据公司风险状况管理的法律风险。这不应掉以轻心。公司比个人更容易成为法律目标。即使公司是在内部而非产品或服务中使用该软件,仍然存在需要考虑的风险状况。这并不是说风险大于从供应商处购买专有软件解决方案,而是需要确信外部运行的开源许可项目具有适当的知识产权管理保障措施。
- 正在向谁贡献哪些知识产权。同样,公司通常不愿意在没有清晰了解回报的情况下,将其辛辛苦苦的研发投资贡献给他人(甚至是合作伙伴)。
作为一家公司,这些法律问题都伴随着额外的法律责任。开源软件基金会为这些问题提供了解决方案,它们提供中立的非营利空间,公司可以在其中共同协作,并以适当的知识产权管理实践来支持该空间。Apache 软件基金会、Eclipse 基金会、Linux 基金会(前身为 OSDL)和 Outercurve 基金会都是为了管理围绕这些软件知识产权问题的风险而创建的。
当一家公司考虑创建自己的开源许可项目时,讨论变得有趣起来。Rory 的例子说明了好处。让我们再次从动机开始。人们通常很善于理解他们做某事的“直觉”动机。公司越大,就越需要对这些决策进行思考和记录,尤其是在公司上市之后。
如果要以开源许可证发布的项目是公司的“基础设施”,那么动机都基于共享创新和分布式工程经济学。这就是我们在亚马逊、雅虎、谷歌、Twitter、Netflix 或 Facebook 开放硬件计划等公司创建的数据中心项目中看到的情况。启动该项目的公司正在分享他们投入时间和精力的工作,希望其他人加入该项目,以新的方式使用它,从而加强软件,并至少贡献错误报告,但也希望能够扩展和发展它。
当这是动机时,之前文章中关于制作开源软件的所有讨论都发挥了作用。本质上,需要:
- 有用的软件作为构建社区的基础。
- 共享的动机,在要解决的问题方面的可信专业知识,以及对软件结构的理解,以锚定开源社区。
- 项目需要决定许可证、代码托管平台和治理的结构性问题,即使治理在不断发展的社区中成为一个演进的讨论。
- 社区需要建立一个坚实的入口以鼓励使用,以及第二个入口供用户成为贡献者。项目生命周期中越早发生这种情况,就能越快地建立社区。
鼓励企业参与和贡献的额外考虑因素需要是软件所有权、法律风险以及围绕贡献的知识产权管理。这就是考虑使用现有开源软件基金会发挥作用的地方。公司更有可能将其软件贡献给中立的非营利组织以实现互惠互利。
但正如 Rory 指出的那样,创建开源项目也有商业动机。公司的高管希望“增加业务”,但这是否意味着增加销售渠道中的潜在客户?或者建立一个布道者社区,牢固地锚定公司的产品和服务,同时为潜在的新客户提供证明点和专业知识。
在商业环境中使用免费和开源软件并不会改变经营业务的性质。需要清楚地了解,客户购买的是问题的解决方案,以及公司正在解决什么问题。Geoffrey Moore 早在很久以前就证明,提供最佳“整体”解决方案的公司会胜出,即核心产品或服务及其围绕更完整生态系统的所有配套产品和服务。这在很大程度上与塑造“完整”解决方案以应对客户认为他们在问题空间中存在的细微差异有关。成功的公司基本上提供产品和服务的组合,只要交付组合的成本总和小于收入总和(支出少于收入),公司就是盈利的。采取组合方法允许公司调整其定价模型,并在面对类似竞争对手时使自己与众不同。
开源软件可以在这种组合方法中发挥多种作用。公司可以:
- 销售对其余以开源项目形式提供的产品的支持、升级、定制、培训和“稳定性”。最好的例子可能是红帽“销售 Linux”,尽管它不拥有核心知识产权。“产品”不是软件。JBoss 在被红帽收购之前尝试过其中几种方法。
- 销售核心产品(以专有或许可开源的方式许可),同时鼓励合作伙伴围绕开源许可项目建立补充生态系统。
- 允许客户以最简单的形式尝试“产品”,即作为一套不受支持、无担保的二进制文件“免费”下载社区/开发者版本,以便在销售渠道中进行自我评估。(这在很大程度上是 MySQL 构建其业务的方式。)
这些项目都说明了产品的交付和渠道。公司还可以发展一个开源项目用户社区,作为潜在客户的专业知识和经验来源。
开发者和用户社区是整体解决方案的重要组成部分。一些公司在从未发布其产品软件的情况下,也发展了大型成功的社区。IBM、微软、Oracle 和 SAP 都取得了巨大的成功。这就是为什么社区建设对您的公司如此重要,以及为什么社区发展是您向客户推销解决方案的必要成分。用户和开发者社区(无论是否开源):
- 从技术角度和参与关系的角度锚定客户。
- 创建为客户的技术推销提供完整解决方案所需的知识、专业知识和经验。当潜在客户进行自我评估并测试解决方案社区的实力时,这些证明点是无价的。
- 创建倡导者和布道者来传播对解决方案的认识。
- 在围绕某项技术的现状中创造巨大的惯性。
- 通过在新场景中测试并报告问题来加强解决方案。
这些变化都依赖于记住几个相关的“规则”:
- 对于大多数人来说,开源许可项目不是一个完整的产品解决方案。
- 项目社区用户和开发者不是解决方案客户。社区成员倾向于有时间花在解决方案上,但没有钱,而客户有钱,并且正在寻求解决方案的上市时间和某些保证。
创建一个开源项目可以像使用开源许可证发布软件一样简单,这使客户可以深入了解解决方案的工作原理。但是,如果您忽略社区建设活动,您将失去来自参与的技术客户和用户群的所有好处。
清楚地了解使用开源许可软件在交付产品上市时间、提供丰富的补充生态系统以及使社区能够锚定生态系统方面的好处,可以使公司正确设定其动机。我们可以将精力的投入作为理解动机的一种方式进行讨论。我们可以将以开源形式发布软件和开发社区所需的工作与商业产品在投资和回报价值方面的演变进行对比。
这也使公司能够理解半途而废的问题。一些公司有时将“开源”许可视为营销仙尘,而不是正确理解其在解决方案组合中的地位,或者构建真正的社区的必要性,而真正的社区将导致解决客户问题,并最终使客户满意,而客户满意度可以用盈利能力来衡量。他们试图限制访问,并且只是半心半意地接近社区,因为最终他们不确定好处。充分认识到好处可以让公司充分参与社区和客户,以解决问题。
Rory 还提到了使用开源项目来削弱竞争对手的利润率。这是大型复杂公司在成熟市场中进行竞争的一种策略,值得单独写一篇博客文章。我们将其留到以后再说,而是专注于制作开源软件的商业积极性。
最初发布在 Outercurve 基金会博客。经许可转载。
2 条评论