本文发表时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已不正确。
为开发指南做出贡献
当大多数人想到为开源项目做贡献时,我怀疑他们可能会想到贡献代码更改、新功能和错误修复。作为一名软件工程师以及长期的开源用户和贡献者,我当然是这么想的。尽管我已经在不同的工作流程中编写了大量的文档,但 Kubernetes 社区的庞大规模是一种新型的“客户”。当谷歌要求我和我在 Lion's Way 的同事对 Kubernetes 开发指南进行急需的更新时,我根本不知道会发生什么。
本文最初发表在 Kubernetes 贡献者社区博客上。
与社区合作的乐趣
作为专业的作家,我们习惯于受雇撰写非常具体的文章。我们专注于技术服务和产品的营销、培训和文档,范围可以从相对轻松的营销电子邮件到针对 IT 和开发人员的深入技术白皮书。对于这种类型的专业服务,每个交付物往往都有可衡量的投资回报率。我知道在处理开源文档时不会有这个指标,但我无法预测它会如何改变我与项目的关系。
我们的写作与传统客户之间的关系的主要特征之一是,我们始终在公司内部有一个或两个主要的联系人。这些联系人负责审查我们的写作,并确保它与公司的声音相符,并针对他们正在寻找的受众。这可能会很有压力,这就是为什么我很高兴我的写作伙伴、眼光敏锐的审稿人和嗜血的编辑 Joel 处理大部分客户联系。
令我惊讶和高兴的是,当与 Kubernetes 社区合作时,所有客户联系的压力都消失了。
“我需要多小心?如果我搞砸了怎么办?如果我让开发者生气了怎么办?如果我树敌了怎么办?”这些都是我脑海中闪过的疑问,当我第一次加入 Kubernetes Slack 上的 #sig-contribex
频道并宣布我将致力于 开发指南时,感觉就像走在一片蛋壳地上一样。

“Kubernetes 行为准则已生效,所以请彼此善待。” - Jorge Castro,SIG ContribEx 联合主席
我的担忧是毫无根据的。我立刻感到受欢迎。我喜欢认为这不仅仅是因为我正在处理一项急需的任务,而是因为 Kubernetes 社区充满了友善、热情的人们。在每周的 SIG ContribEx 会议期间,我们关于开发指南进展情况的报告立即被包括在内。此外,会议的领导者总是强调 Kubernetes 行为准则已生效,我们应该像比尔和泰德一样,彼此善待。
这并不意味着一切都很容易
开发指南需要进行相当彻底的修改。当我们拿到它时,它已经包含了大量的信息和新开发人员需要经历的许多步骤,但它已经随着时间的推移而变得陈旧和被忽视。文档确实需要全局的视角,而不仅仅是针对性地修复。因此,我最终向 社区存储库提交了一个庞大的拉取请求:267 个新增项和 88 个删除项。
拉取请求的生命周期需要一定数量的 Kubernetes 组织成员进行审查并在更改合并之前批准更改。这是一个很好的做法,因为它可以使文档和代码都保持良好的状态,但可能很难哄骗合适的人花时间进行如此大量的审查。因此,这个巨大的 PR 从我第一次提交到最终合并花费了 26 天。但最终,它成功了。
由于 Kubernetes 是一个发展非常迅速的项目,而且由于开发人员通常对编写文档并不真正感兴趣,我还会遇到这样一个问题,即有时,描述 Kubernetes 子系统工作原理的秘密宝藏深埋在 一位才华横溢的工程师迷宫般的头脑中,而不是在 Markdown 文件中用简单的英语描述。当更新端到端 (e2e) 测试的入门文档时,我遇到了这个问题。
我这段旅程的一部分使我脱离了文档编写领域,进入了某些未完成软件的全新用户的角色。我最终与新的 kubetest2
框架的开发人员之一合作,记录了 e2e 测试的最新启动和运行过程,但这需要我进行大量的思考。您可以通过查看我完成的拉取请求来自行判断结果。
没有人是老板,每个人都提供反馈
虽然我暗地里预料到会混乱,但为 Kubernetes 开发指南做出贡献并与出色的 Kubernetes 社区互动的过程非常顺利。没有争议。我没有树敌。每个人都非常友善和热情。这很愉快。
在开源项目中,没有老板。接近庞大的 Kubernetes 项目被划分为许多不同的特别兴趣小组 (SIG)、工作组和社区。每个小组都有自己定期安排的会议、分配的职责和选出的主席。我的工作与 SIG ContribEx(负责监督并努力改善贡献者体验)和 SIG Testing(负责测试)的工作相交。事实证明,这两个 SIG 都很容易合作,渴望获得贡献,并且充满了非常友善和热情的人。
在像 Kubernetes 这样活跃的、正在发展的项目中,文档需要与代码库一起不断维护、修订和测试。开发指南对于引导新贡献者加入 Kubernetes 代码库仍然至关重要,正如我们的努力所表明的那样,此指南必须跟上 Kubernetes 项目的发展步伐。
Joel 和我真的很喜欢与 Kubernetes 社区互动并为开发指南做出贡献。我真的期待着不仅继续做出更多贡献,而且继续建立我在过去几个月在这个庞大的开源社区中结交的新友谊。