# 创建一个开源商业生态体系 > 转载自 [Linux todogroup.org](https://todogroup.org/resources/guides/creating-an-open-source-commercial-ecosystem/) ## 创建可持续的开源商业生态体系 成功的开源项目通常围绕着一个繁荣的公司和产品生态体系构建。那么,什么是开源商业生态体系,以及如何帮助创建和支持可持续的开源项目呢? 以下是一些方法可以建立对项目长期可行性的信心,鼓励公司在开源项目基础上构建商业产品和服务,并通过贡献、内容和其他资源重新投资于它们,从而促进生态体系的发展。 ### 定义和创建可持续的开源商业生态体系 开源计划办公室(OSPO)可以通过两种方式与开源社区互动: - **出站流程:** 为现有项目做出贡献或发布新的开源项目 - **入站流程:** 借鉴当前的一些开源项目 在任何业务或产品策略中,将资源重新投资到所依赖的开源项目中是至关重要的。这种做法有助于创建开源商业生态体系,增强项目的可行性和长期可持续性。然而,在公司投入资源之前,他们必须对项目的未来有信心,才能愿意在其基础上建立商业依赖关系。 虽然无法保证开源项目一定能成功,但通过围绕其建立商业生态体系的实践,可以为项目奠定成功的基础。 加速这一过程能够推动创新,加快产品上市速度,进而促进项目的更快采用和使用。 正如 [Accel Partners 投资者 Ping Li 所述](https://www.slideshare.net/AccelPartners/the-rise-of-open-adoption-software-oas), 这会形成一个良性循环。 Ping Li 的言论明确了项目、产品和利润三个可持续性阶段: - **项目:** 创建一个有用、目的明确、拥有强大社区的项目是构建繁荣生态体系的第一步。这可以通过创建全新项目、分叉现有项目,或重新利用现有项目来实现。例如,广受欢迎的 OpenStack 最初是 NASA 内部项目,而 Kubernetes 则是从谷歌内部项目发展而来。这些方法都能激发对项目的需求。 - **产品:** 过去,许多开源领域主张纯粹主义,不愿商业化开源创作。但现在情况已有很大变化。公司如 Red Hat 通过将开源软件与强化支持结合,建立了亿美元业务,而像 OpenStack 这样的平台也孵化出像 Mirantis 这样的公司。许多开源项目现在提供社区版,同时提供完全支持的商业版。这种转变将项目变为产品。 - **利润:** 利润对任何企业都至关重要,而通过项目到产品再到利润的循环,开源创作可以实现可持续性。为开源项目构建利润模型可能需要创造力。例如,Red Hat 为企业 Linux 和其他开源产品提供的关键支持是否是最有利可图的道路?或者像 Android 生态体系那样,寻求许可费或基于利润模型与硬件制造商合作?收购是否能为项目提供有利可图的商业模式?还有其他基于服务收费、捐赠筹资和众包捐赠的开源利润模型。 一旦开源创作经历这三个阶段,通过商业依赖和资源再投资驱动的良性循环,项目就能实现稳定的社区开发状态,优化 bug 修复和安全更新,建立有利可图的合作伙伴关系,以及获得更多机会。 商业依赖导致用户购买解决方案,产生利润,进而增加资源用于重新投资社区。一个健康的社区还可以鼓励项目之间的合作和互惠,提高质量。 ## 开源生态体系成功的关键要素 要打造成功的开源生态体系,首要任务是创建解决问题的独特代码。例如,OpenStack 降低了云中存储和计算资源的成本,帮助组织集中资源。类似地,网络功能虚拟化(NFV)技术有助于电信公司减少对昂贵专有组件的依赖。 一旦存在解决问题的创造性,就可以着手建立社区和贡献、灌输商业采用的信心以及遵守开源文化。 ### 建立社区和增加贡献 要建立健康的开源项目社区,关键是进行开发人员培训和招募,[确立入站贡献的指导方针](https://opensource.guide/how-to-contribute/),以及遵循版本管理、构建和测试自动化、文档编写、问题跟踪和修订等有纪律的开发实践。 !!! quote "Ian Varley,SalesForce 的软件架构师" 你需要提供一种让人们参与项目的方式,而不需要他们拥有博士学位或在相关领域工作了 25 年。你需要让他们能够快速参与进来。这意味着你需要提供良好的文档,并且需要有活跃和健康的论坛以及负责任的维护者。 [贡献者公约](http://contributor-covenant.org/)是一个坚实的行为准则和贡献者指导文件,被[超过 40000 个开源项目](http://contributor-covenant.org/adopters/),包括 Kubernetes、Rails 和 Swift。Cloud Foundry 的[行为准则](https://www.cloudfoundry.org/code-of-conduct/)提供了一个强有力的指南,展示了如何为社区成员制定正式准则。 ### 确保商业采用的信心 随着一个开源软件项目的成长,[一项研究表明](http://www.ifosslr.org/ifosslr/article/view/64),如果发展达到一个拐点,吸引了企业参与,但并不一定对开源项目中的知识产权制度(或缺乏制度)感到舒适。以下实践有助于增强那些可能在边缘徘徊,等待承诺参与项目的公司的信心。 - **知识产权和商标管理。** 开源许可证和政策,以及商标,对于一个项目是否能够实现商业采用具有巨大影响。有许多[免费资源](https://www.linux.com/news/free-tools-driving-open-source-project-success)可用于管理这些内容。 - **独立治理。** 对于某个成长阶段的项目来说,建立独立治理和中立项目资产变得至关重要。请记住,关键是要涉及那些有资格提供项目的商业和法律治理以及技术治理的人员。例如,一个具有技术技能的人可能了解内部贡献指南,而一个具有商业资质的人可能有资格制定商标政策。 !!! quote "Sarah Novotny,FOSS 战略 Azure" 在培育一个健康的商业生态系统中,明确你的项目是如何治理的,指明哪些是特定项目的一部分,哪些不是。设立一组清晰的接口,作为商业生态系统可以插入或连接到项目的地方。当你开始发展一个生态系统时,你希望公司在与你合作时感到安全。 - **受支持、安全和可靠的代码和基础设施。** 红帽从为开源软件提供强化支持中获得了多少好处?非常多。除了审查你的代码以确保可靠性和安全性,还要专注于提供支持,并利用社区支持选项,如论坛。许多公司,如Black Duck,也提供开源安全性和可靠性审计服务。 - **公关和营销支持。** 你的项目是否有博客,并且是否有营销和公关方面的计划?围绕你的项目创建自己的内容,并通过在开源活动中进行演讲以及与媒体以及市场部门进行联系来补充这一努力,可以使你的项目被讨论和采用。许多商业开源项目的转化率(以下载者中购买某物的百分比来衡量)与专有软件产品相比并不高,因此低成本、可扩展的营销功能对盈利至关重要。 - 创建强大的客户反馈回路。询问成功的商业人士如何看待客户,他们会说客户是第一位的。这是一个商业原则,在技术文化中可能并不被强调。确保提供直接的方式获取客户反馈并鼓励它。论坛可以提供丰富的客户反馈。回答客户的问题,无论通过哪个渠道,从论坛到电话支持都要覆盖到。 ### 遵守开源文化 一个没有生态体系和社区的下游项目实际上并没有充分利用开源的价值。遵守开源文化是成功的关键。 !!! quote "Luke Faraone,Dropbox 的软件工程师" 在构建开源社区时最重要的一点是确保你自己的流程是开放的。你的决策过程越透明,你的社区就会拥有更强的归属感。你还需要确保你的流程不会成为障碍。如果你的入站或出站贡献的开源流程繁琐,人们就会尝试绕过流程,或者干脆认为贡献太困难。 - **平衡控制和开放性。** 开源软件在许多用户中被广泛接受,因为传统上专有软件通常伴随着成本和控制。在围绕开源项目创建商业策略时,你必须平衡控制你的产品某些方面的价值(例如,附带多少支持),与开放性(例如,是否提供一个免费社区版,可以作为商业版的入口)。此外,请记住,项目创始人在项目上的控制力随着时间的推移会比创始时更少。 !!! quote "Joe Beda,K8s 的联合创始人,Heptio 的联合创始人和首席技术官" 随着开源项目的发展,你需要找到一种方法来实际上建立一个信任圈,让你能够委托给其他人,信任他们做出决策。这最终将成为一个困难的过渡。首先,你拥有一个创始人了解一切的小项目,对项目有一定程度的全面控制。然后,项目变成了由社区驱动,没有一个人或团体拥有完全控制权。 - **透明度。** 透明度的概念长期以来一直是开源文化的核心。毕竟,直接潜入代码存储库不需要开放和透明吗?然而,透明度不一定是大多数企业的核心原则。事实上,一些企业竭尽全力将内部信息和资产严格保密。在制定基于开源的商业成功策略时,评估透明度的好处。许多人会像欣赏代码透明度一样欣赏面向业务的透明度。 !!! quote "Joe Beda,K8s 的联合创始人,Heptio 的联合创始人和首席技术官" 有一些开源项目欢迎外部贡献,但项目的路线图和项目的治理很大程度上掌握在单一公司手中。然后有真正由社区驱动的开源项目。你正在与哪种项目合作?– - **基金会。** 近年来,基金会在开源世界中产生了巨大影响。你的组织可以从与 Linux 基金会到 Apache 软件基金会等基金会合作中受益,你还可以从建立一个专注于开源的基金会中获益。了解开源基金会在促进可持续开源项目方面的作用,并考虑何时以及如何参与其中,将有助于为成功打下基础。 !!! quote "Luke Faraone,Dropbox 的软件工程师" 基金会提供了很多价值。历史上,对于许多非常关键的项目来说,如果没有基金会,它们很难获得所需的资金来得到良好的维护。它们有助于确保一个公平的竞争环境,并为组织提供机制,使其能够为开源项目提供支持,而无需直接贡献开发人员。 ## 如何构建一个开源生态体系 要围绕你的项目建立开源生态体系,你必须关注以下几点:治理;将开源项目用作商业依赖所需的资源;跟踪进展并进行调整。让我们深入了解每个方面以及它们对你的商业生态战略可以带来的价值。 ### 1. 建立健康的治理体系 建立一个中立的结构至关重要,使竞争对手能够轻松参与,你还应考虑是否应该让外部利益相关者参与治理过程。当治理是独立的并接收多样化贡献时,你的生态体系将更加健康。 如果你负责项目的技术治理,那么你可能不太适合就支持、商标或许可等问题做出决定。同样,你必须分开技术和财务决策。一些最好的技术进步发生在鼓励冒险的环境中。鼓励技术贡献者朝着冒险的目标努力,分开决策者可以评估它们是否在财务上可行。 !!! quote "Joe Beda,K8s 的联合创始人,Heptio 的联合创始人兼首席技术官" 我们尝试在 Kubernetes 社区中灌输的一种理念是项目高于人或公司。对于项目有益的事情与参与项目的公司有益的事情是两个不同的问题。当你的开源项目与单个公司过于紧密地联系在一起时,可能会出现非常棘手的问题。- ### 2. 评估资源 当合作伙伴或客户决定是否在其业务中使用开源项目时,他们可能会评估或考虑以下不同资源: - **安全策略:** 漏洞管理是客户或合作伙伴可能关注的一个关键问题。你需要确保你拥有所有必要的基础设施和关于[如何应对发现商业版本或开源产品中的漏洞](https://opensource.googleblog.com/2021/02/a-new-resource-for-coordinated-vulnerability-disclosure-in-open-source-projects.html)的政策。在安全方面,开源不能次于付费客户,这不是区分你的商业产品的方式。 - **法律政策:** 与开源项目相关的法律资源成本可能很高,但也值得注意的是存在免费的法律资源。软件自由法律中心(SFLC)拥有一套非常好的关于开源许可证和版权工作的在线资源,以及更多内容。SFLC 的作者是曾参与创建流行开源许可证等的律师。不要误以为项目的免费版本不需要法律保护或对许可证方面的考虑。 - **社区管理:** 社区通常是一个成功的开源项目可能拥有的最强大资产,投资资源以发展一个健康的社区是最佳实践。通常,热情洋溢的社区是从一个备受喜爱的免费版本项目中发展起来的,因此仅投资于商业版本的社区增长是一个错误,因为免费社区版本通常促进潜在客户将采取的第一步。确保开源版本和任何开源开发人员都能访问与你的员工开发人员或付费版本运行的相同工具、检查和自动化。不同版本和合作者之间的平等是关键的。 - **明智投资于教育:** 开源教育对于了解如何以健康的方式与开源生态体系互动至关重要。 - 培训 - 教育和培训提供了一个良性循环,受过培训的用户推动了你的开源发明的事业。 - 认证 - 认证计划帮助用户宣传围绕你的发明的技能,并提高他们的市场价值和你的市场价值。记住,你不仅需要认证具有技能的人。考虑一下 Linux 基金会的核心基础设施倡议(CII)徽章计划。它包括一个最佳实践徽章,可以展示一个开源项目对安全的承诺,建立信任。 - 导师和实习 - 通过导师和实习,你可以培养围绕你的开源产品的更广泛知识基础,并创造机会。 - 举办活动 - 如果整个围绕开源项目的社区都积极参与,那么开源项目就有很好的机会发展其成功的生态体系。活动是促进群体参与的绝佳方式。 - **回馈:** 参与你在产品中使用的项目并向上游贡献有着巨大的好处。如果一个开源项目对你和你的组织产生了积极影响,你很可能通过贡献为其带来积极影响。这种互惠互利在整个开源领域中是一种成熟的做法。只需看看 Red Hat 和 IBM,它们都是 Linux 的顶级贡献者。 ### 3. 跟踪进展并进行调整 当然,围绕开源创建一个健康的商业生态体系是一个不断变化的目标。你必须让监督你的治理结构的人参与,并让你的社区提供反馈。“倾听、衡量和调整”是在这方面的一个好建议。你的社区成员可以提供极好的反馈,指导如何进行必要的改进并触达更多人。记住,每个社区都是不同的。 !!! quote "Sarah Novotny,Azure 开源策略" 为你与之合作的每个社区找到指标。我倾向于根据特定社区感受到的痛点找到指标,并尝试改善这些指标。没有一个神奇的评估,如果你查看从拉取请求到贡献者数量等六个指标,你就可以突然宣布你的社区和生态体系健康。你可能有一个非常小的项目,但它可能非常健康,因为它有六个核心贡献者和一打活跃但不是维护者的人。可能有健康的讨论,拉取请求可能被迅速处理,尽管在 GitHub 上可能没有一百万的星标或分支,但这可能是一个非常健康的社区。 ## 例子:谷歌开源办公室 许多公司已经建立了成功的开源项目办公室。这种趋势始于技术行业,因为像 IBM 和 Oracle 这样的大公司意识到开源严重影响了软件生态体系,但现在各行各业的公司都在运行开源项目。例如,Walmart Labs 和 Netflix 拥有蓬勃发展、[高度结构化的开源项目](https://www.linux.com/blog/learn/chapter/open-source-management/2017/5/enterprise-open-source-programs-concept-reality),并定期向社区贡献项目。开源项目办公室是无处不在的,因为开源是无处不在的。事实上,根据 Black Duck 和 North Bridge 的 [开源未来调查](https://www.blackducksoftware.com/2016-future-of-open-source),仅有三分之一的受访者,大部分来自企业,表示他们不使用任何开源工具或平台。 在开源项目办公室中,谷歌的可能是最被广泛模仿的。谷歌发布了大量的开源贡献,公司领导者非常坦率地表示,公司从随后的社区参与中获得了商业利益。只需看看 Android 和 Kubernetes 通过社区开发和贡献获得的动力。 !!! quote "John Mark Walker,Capital One 的开源项目办公室主任" 技术供应商别无选择:合作或灭亡。他们可以选择无视趋势,但最终这对他们不利。他们最好从谷歌和其他 [TODO Group](http://todogroup.org/) 参与者那里借鉴一些页面,并对开源生态体系采取一种全面的方式:哪些对战略重要,参与如何有助于更快地推出新产品和服务?而且,为了额外增加一些魔力,谷歌已经表明,接受公司主要产品重点之外的使命也会产生结果。 这个建议非常正确,这个建议不仅适用于技术供应商。所有公司都可以从谷歌的开源项目中学到宝贵的经验。最近,谷歌 [推出了一个新的家园](https://opensource.google.com/),用于其开源项目、流程和倡议。该网站内容丰富,有几个值得关注的方向,任何想围绕开源项目建立商业生态体系的人都应该留意。 谷歌网站提供了一个开源项目目录和一个社区部分,展示了培训、活动和其他努力如何利用开源社区的能量。然而,如果你想围绕开源项目创建一个商业生态体系,真正的明珠是一个名为[文档](https://opensource.google.com/docs/)的部分,该部分被称为“我们在谷歌开源方面的内部文档”。从开源贡献者和开发人员到实施开源项目计划的公司,谷歌网站的这一部分拥有经过测试和经过验证的大量信息。文档主要分为三个部分: - 创建介绍了谷歌开发人员如何发布他们编写的代码,无论是以新项目的形式还是作为对外部项目的补丁。 - 使用解释了谷歌如何将开源代码引入公司并使用它。它深入探讨了维护许可合规性等方面。 - 成长描述了谷歌在公司内外运行的一些支持开源社区的项目。 !!! quote "Will Norris,谷歌开源项目办公室前软件工程师" 这些文档解释了我们发布新开源项目、向他人的项目提交补丁以及我们如何管理引入公司并自己使用的开源代码的过程。但除了“如何”之外,它还概述了“为什么我们这样做,比如为什么我们只使用特定许可证下的代码,或者为什么我们要求对所有我们收到的补丁签署贡献者许可协议”。 !!! quote "Luke Faraone,Dropbox 软件工程师" 谷歌发布了出色的开源流程文档,实际上阐明了他们的内部政策和程序。他们对内部所有权模型的描述确实具有教育意义。我还强烈推荐 Karl Fogel 的《Producing Open-Source Software》书籍,根据知识共享许可证在线提供。 仔细观察谷歌开源项目办公室的工作方式表明,该公司非常重视社区多样性和多样的项目,以推进其开源社区。关注社区的概念非常值得关注,因为你寻求在开源周围构建一个健康的商业生态体系。 !!! quote "Abby Kearns,Puppet 首席技术官" 如果整个围绕开源项目的社区都积极参与,开源项目就有最好的机会发展成一个成功的生态体系。这包括代码贡献者、用户、文档编写者、软件供应商、平台供应商和集成商等所有人。