作为 Google Kubernetes 社区的项目经理,Sarah Novotny 在包括 MySQL 和 NGINX 在内的开源社区拥有多年的经验。三月底,Sarah 在柏林举行的 CloudNativeCon 大会上与我坐下来,讨论了 Kubernetes 社区和更广泛的开源社区。
我们在播客中讨论的主题包括从公司主导的项目转向社区主导的项目所固有的挑战、可以带来更成功社区的原则,以及如何构建决策。
Kubernetes 最初是 Google 的一个内部项目,可以追溯到 Google 的内部容器集群管理系统 Borg。Kubernetes 于 2014 年推出,现已成为部署和编排容器的领先技术。此外,尽管 Google 和红帽是 Kubernetes 的主要公司贡献者,但 超过 25% 的 Kubernetes 代码贡献 被列为来自“独立人士”。
Google 将 Kubernetes 移交给了云原生计算基金会 (CNCF),该基金会隶属于 Linux 基金会旗下。CNCF 执行董事 Dan Kohn 如此表示:“他们很早就意识到,拥有中立归宿的项目总是会实现更高水平的协作。他们真的想为它找到一个归宿,让多家不同的公司可以参与进来。”
然而,即使人们认同为了项目好而放弃控制并不总是容易的。默认公开可能既不自然也不舒服。“早期,在我加入 Google 的最初六、八或十二周内,我认为我一半的电子邮件精力都花在了:‘为什么这个讨论没有在公共邮件列表上进行?是否有理由说这特定于 GKE [Google 容器引擎]?不,没有理由,’”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 条评论