logo

开源文化始于项目和政策

作者:OSCHINA2021.09.24 14:27浏览量:128

简介:什么是开源文化?为什么说它很重要?我们又该如何衡量它?

原文:Open Source Culture Starts with Programs and Policies 作者:Lawrence E Hecht,编译:御坂弟弟

根据 New Stack 与 Linux 基金会的 TODO 小组的一项调查显示,开源项目对培养 “开源文化” 至关重要。通过创建开源文化,拥有开源项目的公司可以获得三大优势,包括提高开发周期的速度和敏捷性、更好的许可证合规性以及更加了解公司产品对开源项目的依赖性。

但什么是开源文化?为什么说它很重要?我们又该如何衡量它?根据开源峰会的调查数据和报告,我们认为开源项目支持这样一种企业文化:优先考虑 DevOps 和微服务架构,并使开发人员能够快速使用和参与内部和外部项目。仅靠计算其技术栈中开源的比例已经无法衡量一家公司的开源文化了。对提高开发人员效率感兴趣的企业应该检查他们对开源项目的参与情况,并支持培养代码共享和外部维护项目协作的文化。

开源文化的定义

开源文化不仅仅是在 GitHub 或 Gitee 上复用免费代码,以便更快地将产品推向市场,而是一种重视共享的精神。这种文化包含了一种强调内部和外部协作的软件开发方法,越来越注重核心能力而不是核心基础设施的价值观,以及实施通常与微服务和云原生技术相关的 DevOps 流程。

在社区项目上进行协作是与参与开源开发的一种方式。使用外部创建的开源组件的软件工程师需要与负责项目维护的人员进行协作。这个过程通常比较,比如要确保软件更新被集成到新的部署中,可以通过一个持续部署管道来解决。该管道执行检查以确保组件是最新的,并与最新的存储库和库同步。这是一个很好的开始,可以让组织感受到外部依赖性的优势。但与其他项目维护者的双向沟通才是真正的合作类型,这对最大化开源文化的优势至关重要。

从外部心态到内部心态的转变,就是内源的意义所在。”内源 “是一个越来越流行的术语,用来描述组织内部应用的开源软件开发原则。根据 GitHub 的说法,”Innersource 是一种开发方法论,在这种方法论中,工程师使用大规模开源项目的最佳实践来构建专有软件”。 许多公司,如 Capital One 正在使用内包来增加公司内部的协作和代码共享,从而提高开发人员的效率并加快创新速度。这包括让所有利用软件的员工都能访问所需的开发工件。它还经常鼓励基于平等主义和择优标准的决策。

开源文化的另一个关键方面是,IT 部门不太可能认为他们能够创建和维护整个技术栈。当解释为什么他们的组织正在考虑创建一个开源项目时,一位调查受访者写道:”我们不再认为,对于一个对我们的盈利能力并不关键的问题,正确的答案是编写新的代码。相反,我们会寻找成功的开源项目,并尝试着去适应和投身其中。”

VMware 的首席开源官 Dirk Hohndel 表示,使用开源让人们能够专注于自己的核心竞争力,而不是专注于基础设施。在接受 New Stack 采访时,Hohndel 解释说,像 Capital One 这样的公司已经决定他们的核心产品是软件,在Capital One的案例中,这意味着企业文化鼓励速度和敏捷性等价值观,而这些价值观在银行业并不总是被优先考虑。Hohndel 说,在 AWS 和 VMware 这样的公司,开源已经无处不在。无论是这些巨头,还是那些不注重技术的公司,都在越来越多地使用开源来减少边缘设施的成本。

Hohndel 将开源与其他几个主要趋势联系起来。他说:”开源文化已经支持了 DevOps 实践和微服务架构,这些都是使这种云原生基础设施 —— 基于开源 —— 发挥作用所需要的”。 正如《开源项目是大公司中的最佳实践》中所报道的那样,大多数拥有开源项目的公司都知道它们对 DevOps 流程的影响。

“2018 年的 DevOps 状态:新经济战略” 报告的调查数据中体现了 DevOps 和开源之间的联系。该报告指出,表现最好的组织广泛使用开源的可能性是一般组织的 1.75 倍。该报告还显示,云原生技术、CI/CD 管道技术的使用与高性能相关。由于所有这些数据经常一起出现,我们认为它们应作为一个整体来看待:开源文化已经扎根。正如下一节所解释的那样,我们相信提高性能的是开源文化,而不是技术。

开源文化的影响

根据我们的调查,开源项目的三大好处是:1、提高开源意识;2、开发周期更快、更敏捷;3、更好的许可证合规性。 TODO 小组联合创始人、云原生计算基金会(CNCF)CTO Chris Aniszczyk 告诉 New Stack,开源项目有两种类型,一种是围绕提高开发者效率来定义成功,另一种则是基于降低合规风险来证明其存在合理性。

Aniszczyk 表示,许多老项目都是以能降低多少风险和成本来证明其存在的合理性。他解释说,比如当产品可能出现合规性问题时,公司会因此推迟未来的产品发布,甚至将整个项目开源,从而失去可能已经货币化的知识产权。

提高开发者效率是 Aniszczyk 认为开源项目真正发挥作用的地方。他解释了一种常见的情况,比如像 Facebook 这样的公司可能想为一个已经在内部使用的 Apache 项目做出贡献。如果以传统方法来进行,当公司已经分叉了项目,想要回馈一些变化时,必须经过详尽的法律程序,这可能需要几周甚至几个月的时间。同时,项目的方向可能也已经出现了分歧,这意味着项目开发会脱节和延迟。

Aniszczyk 认为,为工程师提供一个简单的流程,让他们能直接在上游做出贡献,可以让开发更快、更持久。此外,开发人员可以通过开源一个现有的项目来提高效率,因为这样可以将维护项目的负担分散到各个用户身上,从而腾出内部时间来专注于新功能,帮助公司而不仅仅是项目的发展。研究表明,与自由竞争者相比,为他们所使用的开源项目做出贡献的组织,可以提高他们从使用开源项目中获取 100% 以上生产价值的能力。

看重效率,而不是速度

我们现在要解决一个广泛存在的误区:开发者效率与开发者速度不是一回事。开源参与和 DevOps 流程并不会自动使软件开发生命周期缩短,也不意味着产品会在短期内更快发布。相反,开发人员通过专注于重要的事情,让开源社区维护核心基础设施,可以提高其本身和项目开发的效率。

之前的 DORA 报告描述了一种常见的情况,即采用 DevOps 流程帮助企业实现了稳定性的即时改善,但同时也造成了速度的短期下降(见下面的 J 曲线)。出现这种现象的原因是,CI/CD 流水线的自动化往往会增加测试要求,而这些要求往往是手动处理的。换句话说,许多公司没有应用关于使用最新的开源依赖最佳实践,因此要想把事情做好,就需要增加人工工作。

当我们询问一个普通的应用开发团队多久发布一次代码到生产中时,我们看到了类似的悖论。我们的调查发现,仅仅拥有一个开源程序对开发人员的速度没有影响。事实上,在开源项目中,有受访者表示项目的首要好处是提高速度和敏捷性的公司更有可能慢下来,24% 的公司每月发布代码的频率低于一次,而其他公司中只有 6%。

J 曲线有助于我们理解这点:需要一个月以上时间发布代码的公司是因为新制定的、最终将实现自动化的人工流程。一些公司看起来比其他公司慢的另一个原因是,他们实际上关注的是指标。在这种情况下,无知是幸福的。事实上,在被问及发布之间需要多长时间时,33% 的表示速度/敏捷性不是开源优势的公司回答是 “不知道”。

政策促进文化

充满活力的开源文化的许多优势都难以在短期内衡量,而与 DevOps 流程的存在和云原生技术的使用密切相关。要确定是否存在开源文化,具体的活动以及是否有规范使用开源的政策,都会有帮助。我们在调查中询问了这两方面的情况,发现拥有开源项目的公司更有可能在上游贡献代码。我们相信,这至少在一定程度上是由于管理上游贡献的政策。

从下图中可以看出,拥有开源项目的公司更有可能制定关于产品中开源依赖性的政策和可接受的许可证清单。这些政策与降低使用开源所涉及的风险这一主要目标有关。他们也更有可能制定关于发布源代码和为外部开源项目做贡献的政策。这些活动与使用开源所能达到的开发者效率更加直接相关。允许开发者与他人合作是开源的缩影,甚至比实际维护自己的项目更重要。TODO 小组维护了一些政策和模板的例子,你可以利用这些政策和模板来创建你的组织的开源政策:https://github.com/todogroup/policies

结论

一个公司的价值观体现在其政策和行动中。制定关于为开源项目做贡献的政策,实际上意味着高级管理层已经接受了从开源项目中获益不仅仅是自由使用,而且需要回馈。

开源项目对于促进企业文化的发展,提高企业的生产效率是非常重要的。培养 “开源文化” 是开源项目的主要目的。衡量一个项目的成功本质上是困难的。就像企业的多样性计划一样,可以通过政策的存在和与开源文化密切相关的 DevOps 流程的实施来衡量进展。通过这两个结果,我们相信企业能够衡量开源思想的回馈。

相关文章推荐

发表评论