开源和软件供应链

如何管理资源来构建由开源社区创建的软件?
541 位读者喜欢这篇文章。
people on top of a connected globe

Pixabay

理解硬件供应链及其管理的细微差别是很直接的 - 你基本上是在跟踪移动的箱子。管理像构建软件的资源一样深奥的东西,这些软件是由开源社区的各种贡献者制作的,则更加抽象。

在考虑 开源平台和供应链 时,我将供应链视为一个单一的过程,它采用现有的开源组件并生成单一结果,即产品。从那时起,我开始意识到供应链管理定义了当今的大部分开源生态系统。也就是说,那些知道如何管理和影响供应链的人比那些做得不好,甚至不理解它的人具有竞争优势。

软件供应链如何运作

在硬件世界中,供应链和组件采购是业务的必要组成部分。一个管理良好的供应链对业务成功至关重要。你如何确定理想的定价,与合适的制造商建立关系,并最大限度地提高供应链的效率,以便能够更便宜地生产更多产品并销售更多产品? 苹果的供应链是传奇性的——他们是最早意识到竞争的关键是建立有效的零件供应链的公司之一,并且他们在硅谷更喜欢自己构建大部分组件的时候这样做了。

计算机行业嘲笑苹果,称他们为“营销公司”,只是从其他地方拿零件。如今,每家硬件公司都有广泛的供应链,并专门安排团队来管理它的不同方面。具有讽刺意味的是,苹果在供应链物流方面的创新可能比在实际产品上的创新还要多。换句话说,他们在供应链物流方面的创新为他们提供了一个推出创新产品的绝佳平台。

在软件方面,供应链传统上比硬件简单得多。硬件供应链从不同地理位置的许多不同合作伙伴采购零件,而传统的软件供应链主要定义了内部创建软件的过程,以及通过商业许可协议从供应商处获得的某些第三方软件。在这种模式下,大部分供应链由公司内部的软件源定义,可能来自多个工程团队。由于只有一小部分软件来自公司外部,因此定义供应链的过程主要留给内部产品管理和工程团队。是的,从第三方供应商处许可软件需要在组装产品时进行许可证合规性检查,这意味着需要获得任何软件许可协议的法律批准。该流程已通过通用实践建立,许多许可协议都来自法律和产品管理团队有经验的同一法律模板——但后来开源变得更加普遍,一切都改变了。

软件供应链管理从一个相对简单、定义明确的过程,变成了这样:

Software Supply Chain Funnel

变成了一个混乱的、多层混合的未经证实的许可证、未经测试的软件仓库,以及软件供应链团队无力管理的狂野西部心态。现在,漏斗的形状更像:

Open Source Supply Chain Funnel

正如你所看到的,至少增加了一个额外的复杂层。

你可能会认为情况并非如此——仅仅插入开源组件就可以直接 1:1 替换第三方许可协议的传统方法,但还需要考虑一个额外的麻烦。关于上游开源组件,许多原始源代码存储库没有商业支持机制。作为供应链或产品经理,当出现问题时,你没有单一的“可以扼杀的人”,因为问题不可避免地会出现。

你有两个基本选择:要么建立自己的内部手段来审查代码并应用产品管理流程,要么依赖中介来执行该功能。你可以创建一个论点,即创建用于提取源代码、确定法律合规性、应用补丁并使其为生产做好准备的流程,但从人力资源的角度来看,这很昂贵。你应该根据其对公司的战略重要性和一些 ROI 分析来决定是否自行指导该流程:如果你建立一个团队来管理某些软件组件的流程,你是否会看到足够的投资回报?

在许多情况下,公司决定与中介机构合作来审查代码,执行一些质量保证工程,并应用必要的粘合代码以使其令人满意地工作。这就是软件发行版发挥作用的地方,由 Red Hat、SUSE 和 Canonical 等公司填充。人们经常问我为什么这些公司是必不可少的,我希望你现在能明白为什么——因为没有它们,开源供应链就会崩溃。

如果没有 Red Hat Enterprise Linux (RHEL) 或其等效版本等发行版,为内部或外部消费创建产品的公司将不得不从头开始创建流程,用于提取这些组件、审查它们、聘请内部专业知识来增强它们,然后执行粘合流程,使公司能够将版本推送到生产中。在这种情况下,许多公司确定简单地让发行公司填充该层并管理流程的该部分更容易也更有效。

此外,这只是开源“用户”的情况,而不是供应商。这就是事情变得真正有趣的地方。使用或将开源代码插入其产品的公司在什么时间点决定想要成为供应链中的影响者或供应商,以及最好的方法是什么?一个可能的结论是,要在开源产品方面取得成功,你必须掌握影响和管理最终在产品创建过程中汇集的各种供应链的能力。一旦完成,你生产的最终产品就能够直接从你参与供应链左侧中受益。

与其维护一组标准补丁,你不断地将它们应用于每个新的经过审查的上游组件,为什么不将它们贡献到上游组件中,使它们更容易在你的组织外部进行维护?如果你已经决定使用下游软件发行版比自己采购和审查源代码更容易,那么与发行版供应商合作以使你的代码贡献到上游不是有直接的好处吗?这样做的好处是其他小组管理和支持此代码的维护,从而让你的工程师可以从事直接为你的产品增加价值的有趣工作。无论你销售软件、销售软件咨询服务还是创建开源社区,研究你的供应链并了解管理它们的最佳方式都值得你花时间。

基于物理材料的硬件供应链本质上比软件供应链更静态。顾名思义,开源软件供应链非常流畅。项目随着时间的推移而兴衰,而你,无论是商人、开发人员还是社区领导者,都必须决定哪些部分值得你花时间,以及何时最好止损并将一个供应链换成另一个供应链。你使用、修改和从头创建的组件将完全取决于构成你的项目或产品的供应链的状态。该过程既是主动的又是被动的。你必须主动决定投资哪些供应链以及忽略哪些供应链,同时还要对依赖的生态系统中的快速变化做出反应。从理论上讲,那些掌握这门艺术的人将拥有最有效的流程,并且像苹果一样,最终会胜出。期望的结果是达到一定的效率水平,使你的项目团队有能力进行更多创新。

如果你能够有效地管理你的软件组件供应链,并同时创建一个高效的供应链漏斗,以便在开发中的产品上进行快速迭代,你的产品创建和管理流程将得到改进。这种管理需要将资源投资到你的产品质量工程团队和供应链漏斗中,以及构成你用来创建产品的组件的供应链中。

标签
JM head shot
John Mark Walker 是 Fannie Mae 的开源项目办公室主任,并且是一位长期的开源社区、产品和战略专家。 他创立了开源企业网络 (OSEN),并且是 Glyptodon, Inc. 的顾问。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 授权。
© 2025 open-source.net.cn. All rights reserved.