作为 Google Kubernetes 社区的项目经理,Sarah Novotny 在开源社区(包括 MySQL 和 NGINX)拥有多年的经验。三月底在柏林举行的 CloudNativeCon 大会上,Sarah 与我坐下来讨论了 Kubernetes 社区和更广泛的开源社区。
在播客中我们讨论的主题包括:从公司主导的项目转变为社区主导的项目所固有的挑战、能够带来更成功的社区的原则,以及如何构建决策制定。
Kubernetes 最初是 Google 的一个内部项目,可以追溯到 Google 的内部容器集群管理系统 Borg。Kubernetes 于 2014 年推出,现已成为部署和编排容器的领先技术。此外,尽管 Google 和 Red Hat 是 Kubernetes 的主要公司贡献者,但 超过 25% 的 Kubernetes 代码贡献 被列为来自“独立贡献者”。
Google 将 Kubernetes 移交给了云原生计算基金会 (CNCF),该基金会隶属于 Linux 基金会。正如 CNCF 执行董事 Dan Kohn 所说:“他们很早就意识到,拥有中立平台的项目总是能实现更高水平的协作。他们真的想为它找到一个平台,让多家不同的公司可以参与其中。”
然而,即使人们认同做对项目最有利的事情,放弃控制权也并非易事。默认公开可能既不自然也不舒服。“早期,在我加入 Google 的最初六、八或十二周内,我认为我电子邮件中一半的精力都花在了:‘为什么这个讨论没有在公共邮件列表上进行?是否有理由认为这特定于 GKE [Google Container Engine]?不,没有理由,’”Novotny 说。
“最初有很多这样的对话,只是为了提醒 Google 员工,如果他们想要透明度、开放性和社区的参与,那么默认情况下他们应该公开讨论这个问题,而他们在理智上是想要这些的,”她说。
Kubernetes 只是一个项目,正如 Novotny 也指出的那样,每个开源项目和社区都有其自身的怪癖,这些怪癖特定于社区及其参与者的目标。但她仍然识别出某些核心模式和原则。这一切都始于“成为一个成功的项目的目标,因此要找到采用、扩大采用、找到贡献者、开发他们需要的最佳工具集或他们和最终用户需要的平台。这是根本的,”她说。
但什么是成功?Novotny 说,这意味着“我们希望让合适的人以正确的方式使用我们的工具,并从中获得改进的体验。”
她以 MySQL 为例,这是一个为用户和贡献者创建了有用抽象的项目。“MySQL 通过明确定义什么是核心,然后在 MySQL 中构建——这花了一段时间——一个干净的存储接口,以非常棒的方式做到了这一点,”Novotny 说。
“这种抽象允许围绕 MySQL 蓬勃发展一个完整的生态系统,以满足特定的用户需求。这也在 Kubernetes 内部发生。不完全相同,但试图明确定义什么是核心,并确保我们正在建立一个干净、稳定和一致的核心以及核心 API 集,”她说。
与此密切相关的是为贡献者创建轻松的入门方式,Novotny 将其称为“多巴胺平均时间”。这种体验与决策的制定方式以及项目和它们所接触的其他项目的组织和治理方式密切相关。
就 Kubernetes 和更广泛的云原生项目而言,项目之间的关系最好被认为是松散耦合的,而不是正式架构的。Novotny 说,这部分是因为她经常谈论康威定律以及它如何影响项目或更广泛的技术生态系统。“在 Kubernetes 内部,我们说过,‘我们正在构建一个分布式管理容器编排系统。我们应该有分布式控制。’ 如果我们有分层控制,我们最终会得到一个分层软件系统,”她说。
“因此,需要在通用接口上完成大量工作。我尽量避免使用‘标准’这个词,因为目前开源领域对这个词有免疫反应。虽然公平地说,开放标准为我们带来了开放互联网。但是,由于很多原因,我们现在首先做代码,而不是先做标准,”Novotny 说。
归根结底,这归结为建立共同的目标。通过这种方式,“我们可以朝着这些共同的目标努力,例如,‘Kubernetes 核心的稳定性是一个共同的目标。’ 这绝对对每个人都有好处,”她说。
收听 MP3 (20:54)
收听 OGG (20:54)
2 条评论