作者:Leo Pahlke,CNCF 大使及 CNCF TAG 环境可持续性主席
开源是一个迷人的领域,充满了新兴技术,你可以直接参与并影响它们的未来。这是“在巨人的肩膀上进行工程”。在这样一个开放的合作环境中,你可以同时学习和贡献。
最近我对这个领域进行了更多思考,这促使我写下这篇文章。在关注可持续性时,不仅要考虑环境和气候,还要关注社会和经济的可持续性,以及我们如何合作、推动创新和构建新技术,开源提供了一种有趣的对比。我希望并相信,我们可以从中学习,并将这些实践应用于开源社区和公司内部。
本文基于我的经验探讨了开源软件的概念。推动力是什么?为什么创新项目通常是开源项目?公司如何在业务中采纳开源?这个领域的下一步可能是什么?我们能从开源中学到什么教训?这些问题指向不同的主题。希望其中的一些内容能帮助你更好地理解这一领域,并为你构建公司的开源策略提供灵感。现在,让我们谈谈我最新的开源观察。
1 – 玩耍
开源运动起源于几十年前,并持续演变。它包括在软件项目及其他事务(如数据或标准)上的合作。本文将重点讨论开源软件。开源的方法因文化背景、观点、偏好以及目标和兴趣而异。开源软件是由贡献者和维护者驱动的,而非公司。工程师们自愿推动项目进展,并与他人分享他们的工作。工程师不仅构建全局,采用者(公司、机构)和开源基金会也在其中,但这一切都基于工程师们的努力。
开源得以存在的核心原因之一在于软件的特性——它可以以几乎零成本共享,因为软件是一种信息形式。这听起来可能奇怪,但这为我们打开了许多可能性。软件团队可能花费数年开发一个产品,但一旦完成,它可以几乎瞬间在网络上被复制和共享。
工程师通常喜欢玩耍、实验和学习新技术,和其他人一样,他们也愿意展示和分享自己的工作。与其他工程领域不同,软件工程使得这种实验变得容易。无需昂贵的制造、供应链或设备,这意味着你不需要公司的或大学的支持。这导致了一些有趣的效果,其中之一是有可能实现软件创新的民主化。只需一些基本的计算能力和对软件的好奇心,你就可以在技术领域展开探索。在这方面,塑造数字世界的门槛较低。
这两个因素共同解释了为什么开源兴起并成为广泛的运动。除此之外,还有其他实际原因说明开放性和合作如何有利于公司的目标,这将在稍后探讨。
想象力引发创新,开源提供探索的自由
想象力和好奇心激发探索和实验,进而创造新项目。如果我们分享我们的工作,最终会形成一个项目的海洋,其中一些项目脱颖而出,获得更多关注和贡献。这形成了一个自我强化的循环,成功的项目吸引更多的关注和贡献。由于这些项目是开放的,工程师可以学习、实验并在项目基础上构建。随着时间的推移,这形成了一个相互关联的项目网络,每个项目都影响着其他项目。具有影响力的项目可以随着时间的推移建立一个由 API、文化和思维模式定义的生态系统。
连接各方
如果你有在开源社区合作的经验,并与你曾工作过的公司进行对比,你会发现过程截然不同。两者都能创造价值。在开源领域,如果条件稍有不同,软件开发的整体运动可能会有不同的变化。开源是混乱的,维护者设定简单的指导方针以使其运作。我们可以从开源中吸取哪些理念,并将其带入公司的工程团队?值得思考。
当然,这一切更为复杂。在开源项目的背景下,社交结构会出现,涉及合作的社区、组织会议、建立贡献平台和沟通渠道等。它不仅关乎创新和新技术的构建,还涉及社区、学习等其他方面。比如,Linux 内核团队在构建开源时与 React 或 Hyperledger 社区的方式有所不同。
随着时间的推移,我认为出现了多个原因,促使人们参与开源。玩耍和实验是核心。目的、变革、社区的友谊、声誉、经验、自由构建和热情等也是一些原因。
工程师参与开源项目的动机
根据我的经验,人们参与开源通常是这些主题的混合。参与开源并不总是理性的选择,而是一条呈现出来的道路,你可以选择关注。
2 – IT 运动
新开源项目的涌现使 IT 领域不断变化。开源对 IT 领域的影响已持续数十年,这并不是什么新鲜事。像 Google 这样的公司生来就有开源的基因,拥抱自由和开放的服务,并发布新的开源项目。像 Red Hat 或 SUSE 这样的公司则在此基础上建立了商业模式,为企业提供开源软件的版本和支持服务。而像 Microsoft 这样的公司则通过部分放弃专有软件,转向开放源代码的混合模式,进一步推动了公司的战略。上述所有公司都在使用开源软件,但他们的想法、计划和优先级各不相同。
采纳开源
公司参与开源并不是出于对创造自由的好奇,而是为了创造商业价值。开源是否可以用于产生更多的商业价值?当然可以!
如果你的公司与软件相关,你会发现软件工程是一项复杂的任务。为了管理复杂性,我们封装逻辑,采取分而治之的策略。这对处理复杂性至关重要,同时也使得有效共享项目成为可能。组件可以来自开源,也可以是内部开发,最终并不重要:你使用的是接口。结果是关键。结果会产生商业价值。开源帮助你更快地实现目标,专注于商业价值。因此,开源关乎效率,也关乎减少你需要处理的工程复杂性。由于项目是封装的,所有的业务逻辑都应安全保留在你这里,你不会失去竞争优势。
然而,开源有效的关键前提是:你必须将项目的核心业务逻辑与可以共享和重用的一般组件分开。当开源专注于提取适用于各种上下文的一般想法、方法和算法时,开源才能蓬勃发展。根据我的经验,开源旨在创建通用解决方案,作为基础构件。在某种程度上,它与基础研究有相似之处:就像研究试图揭示关于世界的普遍真理,开源则试图定义和分享可以在多种环境中构建和适应的基础技术。
公司参与开源还有更多原因,见下面的图表和表格。
公司参与开源的动机
类别 | 原因 | 描述 |
---|---|---|
运营与工程 | 提高软件工程效率 | 减少开销——“不要重复造轮子” |
降低软件工程复杂性 | 专注于你的商业价值和专长 | |
敏捷性和创新 | 能够更改系统,响应新需求并创新产品和服务 | |
战略与商业影响 | 数字主权 | 摆脱专有软件和外部供应商的依赖 |
合作和影响标准 | 影响行业标准的发展方向 | |
客户与合作伙伴关系 | 与外部利益相关者建立更紧密的联系 | |
销售与货币化 | 商业模式的机会 | |
公共形象与声望 | 通过积极参与开源提升品牌价值 | |
吸引工程人才 | 使用新兴软件吸引优秀工程师 | |
开发者生态系统 | 利用开源社区与开发者互动 | |
透明性 | 通过透明建立信任 | 通过公开源代码建立信任 |
数据隐私与安全 | 独立审计 | |
伦理原因 | 开放、公平和包容的价值观 | |
法律与合规 | 法律要求公开内部算法等。 |
当然,在将开源作为战略目标时,还需考虑多种风险。这些风险的性质和影响因情况而异。主要风险之一是对软件堆栈的责任承诺。参与和维护开源项目需要在工程卓越方面进行投资——不仅仅是编写代码,还要确保长期的可持续性、质量和安全性。此外,软件工程在某种程度上是一种创意过程,可能难以管理,这可能需要心态的转变。这不仅关乎工具;还关乎培养一种文化,使工程师对整个项目负责,而不仅仅是他们个人的贡献。这种转变增加了人才吸引和留存的压力,因为公司必须吸引能够在这种环境中蓬勃发展的工程师。最后,开源解决方案的总拥有成本可能比专有替代方案更不透明。虽然开源可以减少许可费用,但与维护、集成和保护这些工具相关的成本也可能上升。然而,如果公司希望在数字领域成为领导者,这些风险都需要得到解决。
开源承诺:一种细致的视角
开源对所有进行软件工程的公司都发挥着作用,但参与方式截然不同。使用开源的原因在于如今软件工程别无选择,而成为开源公民则是另一回事。投资开源需要驱动因素,这在前一部分中探讨过。这些因素可能与透明性相关,或者是扩展货币化模型。这个驱动因素需要被采纳并融入商业战略。如果是这样,更多的积极参与和领导力就能实现。
公司开源参与的路径
投资开源并成为积极的开源公民可能仍然是未来的目标,但并不是近期能实现的。组织仍处于数字化转型的过程中,努力达到一个能够在开源社区中发挥更积极作用的成熟水平。开源本身存在于一个光谱上,从完全依赖专有软件到完全拥抱开源精神。平衡的中间地带可能是在数字转型过程中一个实际的选择。与开源的参与可以是渐进的,让公司在过渡到更积极参与的同时逐步建立能力和专长。
示例视觉评估以评估你的开源采纳
公司适应开源的策略各不相同。要了解如何在公司内部管理你的开源参与,你可以参考TODO Group[1]提供的资源。
3 – 授权贡献
Alexis de Tocqueville 曾指出,变革源于自上而下和自下而上的压力。这可以有多种解读:顶部需要有清晰的愿景、指导和方向,而底部的承诺、能量和热情推动进步。仅有愿景无法创造变革,单靠努力工作也无法保证变革的发生。这种动态在大大小小的环境中都可以理解。例如,一方面,维护者在“顶部”创建和发布软件;另一方面,公司和开发者在“底部”提供能量和动力来采用、修改和推进软件及其产品或服务。变革发生了。引导和授权这一过程是促进有意义变革和鼓励持续贡献的关键。
开源基金会在构建社区、设定指导方针和促进合作方面发挥着重要作用。它们作为“中立机构”存在,因为开源依赖于合作而非对抗。开源基金会的存在帮助调和维护者和采用者之间的利益,并促进贡献。虽然一些开源项目在没有正式基金会支持的情况下也能蓬勃发展,但中立机构通常对培育强大的社区和确保项目及其技术栈的长期成功至关重要。没有这样的实体,建立和维持一个社区将变得更加困难,这反过来又会阻碍项目的未来发展。
开源基金会通过管理维护者与采用者之间的合作来促进贡献。
我们可以通过 CNCF 的结构来观察如何做到这一点,其中有不同的结构带来专业知识并代表维护者和最终用户的利益。我们共同决定治理和协作准则。
CNCF 治理结构以促进贡献
4 – 提升协作与创新
我在开源项目和社区的旅程中,发现了与常规软件工程实践之间的有趣对比。开源每天都在补充公司的软件工程能力。更积极参与开源带来了一些风险,因为这个领域的混乱性。但我相信,成为技术领域的领导者,重要的是要有意识地承担这些风险,并从中受益,不仅为客户塑造技术,也为其他人服务。正如探讨的那样,参与开源的动机很多。
一个问题是,更多依赖软件的传统公司在现在和未来何时能达到数字成熟度,以像数字原住民一样为开源做出贡献。对于一些公司来说,他们已经达到了这个阶段。从这一角度看,未来这一领域将如何演变,值得关注。在公司中创造一个协作和创新的环境是困难的。开源可以激励我们想象未来软件工程中的更协作和民主的过程。
TODO Group: https://todogroup.org/
点击【阅读原文】阅读网站原文。
CNCF概况(幻灯片)
扫描二维码联系我们!
CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请关注CNCF微信公众号。