写点什么

InfoQ 专访:参与快速发展的 Kubernetes 社区共建

  • 2019-09-11
  • 本文字数:3540 字

    阅读完需:约 12 分钟

InfoQ专访:参与快速发展的Kubernetes社区共建

在上海举行的 2019 中国KubeCon+Cloud Native大会上,聚集了超过 3500 名的参会者。会议主要讨论了 Kubernetes 社区的发展速度,并重点讨论了如何为社区做出贡献。


除了本地中文社区的演讲之外,本次活动的其他许多演讲也都谈到了 Kubernetes 社区在相对较短的时间里达到的惊人数字。很多开发人员在走廊里聊天时讨论的都是如何以某种形式为社区做贡献,因为对于他们来说,只是感觉成了社区的一部分是不够的。云原生计算基金会最近公布了一些统计数据,这些数据来自对该基金会最大托管项目 Kubernetes 日志的追踪。


InfoQ 采访了 Kubernetes 社区的贡献者Nikhita Raghunath。她也是 CNCF 的大使和 SIG(特别兴趣小组)贡献者体验小组的技术负责人。


Raghunath 以她的第一次贡献经历开始了本次讨论,这最初看起来令人生畏,但与社区的互动消除了她的恐惧。她还谈到了社区的组织,并简要介绍了帮助贡献者的一些工具,这些工具的主要目的是让读者更好地了解如何以及在哪里作出贡献。


尽管人们可以通过阅读详细的贡献者指南来获得全面的操作方法,Raghunath 还是列出了一些速成技巧和诀窍,这些技巧和诀窍主要针对那些缺乏耐心的贡献者,他们渴望尽快开始并在贡献者的道路上前进。


InfoQ:欢迎来到 InfoQ。你能介绍一下你的第一个贡献吗?你是怎么计划的,花了多长时间,并从中学到了什么?


Raghunath:在读大学的时候,我注意到 Kubernetes 参与到了谷歌暑期代码(GSoC)实习项目。GSoc 是一个为期四个月的带薪实习项目,目的是让学生们可以参与开源项目。

作为我的 GSoC 应用程序的一部分,我决定处理一个与 CRD 中整数封装不正确有关的 bug(那时的名称是 TPR)。我并不是很熟悉 TPR 的内部工作原理,所以我决定首先阅读与之相关的设计方案。在对它有了一个大致的了解后,我就开始学习 Kubernetes 如何进行 JSON 序列化和反序列化。老实说,从零开始理解这些还是让人有些恐怖的。我了解了现有的问题,使用相关词语在所有代码中进行了检索,并在 SIG API mechanical slack 频道里提了许多问题。在这之后,我终于创建了一个 PR(拉取请求),并且被合并了!

整个过程花了我大约一周的时间,其中每天都要工作几个小时。我记得当时我对整个 GitHub 自动化的工作方式感到困惑,我担心自己会在 Slack 中问一些非常愚蠢的问题。现在回想起来,我当初的恐惧是多么的毫无根据,因为每个人在回答的时候都是那么的善良和耐心。那是在 2017 年,从那以后,我们在面向贡献者的文档方面取得了长足的进步。有文档解释自动化功能,有视频说明如何查阅代码。我最大的建议是不要回避问问题,并且在 slack 和(如果可能的话)会议上露面,这样其他贡献者就会看到你很活跃,知道你是谁。这也有助于承担/委派新的任务,并晋升为评审者。


InfoQ:你能提供一些关于如何开始贡献的建议吗,尤其是对那些没有耐心并且不想从头到尾阅读贡献者指南的人?


Raghunath:我们有一个使用八种语言编写的攻略,就是因为这个原因!:)

除了这份攻略,这里还有一些实用技巧:

开始在 SIG Slack 频道和会议中潜伏!它消除了介绍自己或从一开始就要贡献的额外压力。这也将有助于理解社区准则和 SIG 目前正在从事的工作。贡献者日历包含了所有关于 SIG 会议的信息。即使你不能参加会议,这些会议记录还是可以帮助你快速了解情况。

Kubernetes 使用Prow以“斜杠命令”的形式实现了 CI/CD 和 GitHub 自动化。当创建 PR 时,你可能会看到机器人添加了某些标签和注释,甚至要求你运行某些命令。理解这种自动化至关重要,这可以确保你的 PR 得到评审者的足够重视,并迅速合并。命令帮助页面提供了所有命令的简洁概述,包括如何使用它们的示例。

要找到一个需要修复的问题,你可以查找带有“good-first-issue”或“help-wanted”标签的问题。除此之外,从修复lintshellcheck静态检查等错误开始贡献代码也不错,因为它们不需要对代码库有很深的理解。

要了解kubernetes/kubernetes库的概念,可以查看本视频。如果你希望浏览某一个特定库的代码,你也可以在贡献者见面页面直接提问。针对特定文件运行“git blame”命令可以找到导致某些更改的特定提交/PR。这非常有帮助,因为拉取请求中包含了许多额外的背景和讨论。

如果你正在需求具体的指导,并且愿意每周贡献一定的时间,那么可以考虑成为发布团队的“影子”。“影子”们将会得到导师的指导,甚至可以逐步成为未来发布周期的负责人!


InfoQ:贡献 Kubernetes 文档比贡献实际的 Kubernetes 代码容易吗?你能比较下文档贡献和代码库贡献吗?


Raghunath:我认为这是很微妙的。修复文档中的错别字的确很容易,但文档贡献远远超出了这个范围。用清晰、简洁和明确的术语表达技术概念,让具有不同技术背景的人都能轻松地理解,这是非常难做到的。

SIG 文档团队目前正在积极开展的一项工作就是本地化为不同的语言。表面上看,这似乎更容易,但实际上要费力得多。本地化超越了单纯的翻译,它要求所有的概念都能够保持原有的意义,并且在目标语言中传达出相似的内涵。要在实践中实现这一点,需要对技术概念和语言进行仔细的审阅和深刻的理解。

让我们对比一下代码更改,比如修复 lint、shellcheck 或静态检查错误。修复这些错误需要运行一个脚本,然后输出包含错误原因的故障信息。由于原因已经知道(大多数情况下,输出还包含关于所需更改的建议),所以修复它们比较容易。此外,修复这些错误并不特别需要有很强的 Kubernetes 背景。


InfoQ:如果我已经知道如何在 GitHub 上创建拉取请求(PR),那么在开始向代码库贡献代码之前,从技术角度来说,我还需要知道些什么呢?


Raghunath:首先,你需要设置你的开发环境。根据所贡献代码库的不同,你可能还需要运行其它命令。从位于代码库根目录下的 CONTRIBUTING.md 文件中,你可以找到更多相关信息。一旦你对代码进行了更改,你就必须将更改划分为更小提交的逻辑序列。一个简单的技巧就是把所有生成的代码都放在一个提交里,因为这样可以更容易检查更改。

虽然我们没有对提交消息的样式强加任何特定的限制,但遵循良好的提交消息实践总是有帮助的。请注意,某些库还是可能会施加额外的限制,如禁止合并提交或提交消息中的某些关键字。创建 PR 后,你会发现机器人会给你的 PR 添加标签和注释。理解上面提到的 GitHub 自动化和斜杠命令将有助于同机器人交互。下面是一些常用的命令:

通过添加注释/sig cli 来应用 SIG 标签。这将确保你的 PR 进入 SIG CLI 评审者的视线。

命令/cc @username 将请求评审,/assign @username 会把你的 PR 分配给一个特定的人。

/retest 会自动重新启动你的 PR 上所有的失败测试。当你的 PR 遇到flake测试时尤其方便。

最重要的命令/meow 和/woof 会让机器人添加一个猫和狗的图片评论!

当评审者觉得你的 PR 看起来还不错后,他们会使用/lgtm 和/approve 命令为你的 PR 添加“lgtm”(在我看来不错)和“approved”标签。一旦你的 PR 有了这些标签,它就会被机器人自动合并。


InfoQ:有没有某些 Kubernetes 社区更适合来贡献呢?相反的,哪些社区更具挑战性呢?


Raghunath:有一些棘手的错误很难调试和修复,比如可扩展性失败或者 flaky 测试。但是在我看来,不能用一个笼统的说明把一个库标记为更难做贡献。

话虽如此,许多人将对 Kubernetes 的贡献等同于对 Kubernetes/Kubernetes 核心库的贡献。但事实远非如此。在‘kubernetes-sigs’、‘kuberentes-client’和‘kubernetes-csi’等 GitHub 组织中还有许多其他子项目和库。所有这些代码库都非常重要,而且通常只有一小部分人在维护它们。参与这些子项目相对比较“简单”,因为你可以与维护人员进行更多的交互,并且可以更快地得到响应。


InfoQ:为开源做贡献,除了提交代码带来的满足感之外,还有其它回报吗?


Raghunath:代码是最初吸引我的一个方面,但是我在实习之后仍然留了下来,继续为社区做贡献。“为代码而来,为人而留“绝对引起了我的共鸣。我结交了很多来自世界各地的朋友,虽然他们中的许多人在不同的公司,但我们仍然可以一起工作相互学习。

就个人而言,对我来说最大的奖励就是在我找工作的时候许多机会为我打开了大门。一些贡献者也已经换了工作,但是他们仍然像以前一样继续为 Kubernetes 工作。这有助于个人成长,也使项目能够长期成功。

当然,还有其它奖励,比如Kubernetes贡献者补丁,参加 Kubernetes 贡献者峰会的机会(与 KubeCons 同时举行),还有一大堆与 Kuberentes 相关的礼物!


总之,参与 Kubernetes 社区贡献会涉及到一些步骤和流程,但理解并遵循上面提到的指导意见会减少一些恐惧,也让参与社区贡献变得更加容易。


更多关于 Kubernetes 社区贡献的信息请参阅贡献者指南


原文链接:


Contributing to the Kubernetes Community: Getting Started Q&A with Contributor Nikhita Raghunath


2019-09-11 08:002052
用户头像

发布了 36 篇内容, 共 19.3 次阅读, 收获喜欢 55 次。

关注

评论

发布
暂无评论
发现更多内容

Dopple Labs 选择 Zilliz Cloud 作为安全高效的向量数据库

Zilliz

人工智能 Milvus Zilliz 向量数据库 大语言模型

去中心化swap博饼交易所底池LP质押挖矿分红系统开发指南

V\TG【ch3nguang】

去中心化swap博饼交易所 LP质押挖矿分红系统开发

科大讯飞t30ultra和小度z30对比

妙龙

科大讯飞 学习机

专题 | IAM业界热度不减,2024市场持续井喷(二)

芯盾时代

身份安全 iam 身份和访问管理 零信任

苹果电脑如何修改hosts文件?mac修改Hosts文件教程

Rose

人工智能丨打造垂直领域内容的问答机器人

测试人

软件测试

科大讯飞lumie10和t20区别 选哪个好

妙龙

科大讯飞 学习机

苹果Mac电脑怎么设置动态桌面,heic动态桌面壁纸怎么使用

Rose

CloudMounter for mac 一站式网盘管理工具

Rose

地理编码之旅,一场地址与坐标的漫游

HarmonyOS SDK

HarmonyOS

交易所/永续合约跟单交易系统开发稳定版/案例搭建/成熟技术

V\TG【ch3nguang】

5款超好用的苹果电脑实用工具,提高Mac使用体验

Rose

中国开发者画像报告:鸿蒙开发人才缺口达百万,薪资与技术成长超预期

最新动态

MES系统如何实现生产管理自动化

万界星空科技

mes 万界星空科技 制造业工厂 生产管理MES系统 自动化生产

基于51单片机设计的公交车LED屏

DS小龙哥

8月月更

万界星空科技低代码云MES--快速实现数字化

万界星空科技

低代码平台 mes 云mes 万界星空科技 低代码云MES

科大讯飞T30 UItra和小猿智能练习本S2对比选哪个好

妙龙

科大讯飞 学习机

苹果Mac电脑想要实现双系统运行,Parallels Desktop虚拟机来帮你!

Rose

Parallels Desktop 虚拟机 Mac双系统安装

苹果Mac图像修图软件Photomator和Pixelmator Pro 有什么区别?

Rose

mac上怎么卸载office应用程序

Rose

【数梦工场】【智慧航空AI大赛】比赛分享

阿里云天池

如何卸载Maxon产品?红巨星系列插件如何彻底清除

Rose

红巨星激活系列插件

开发者洞察报告:百万级鸿蒙岗位缺口,开发者薪资涨幅43.1%

最新动态

如何在Mac之间进行数据迁移?

Rose

CVPR 2021 ImageNet 无限制对抗攻击 TOP 4 (Advers) 方案分享

阿里云天池

量化合约/合约量化机器人系统开发稳定版/指南教程

V\TG【ch3nguang】

量化交易系统开发 合约量化

俄罗斯加密货币挖矿合法化:重新定义全球挖矿行业的格局

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

ps2019直装版:Photoshop 2019 for Mac/Win 版

你的猪会飞吗

Mac软件下载站 PS2019 Mac中文版下载 mac破解软件下载

后期混音效果全套插件Waves 15插件下载安装(mac&win))

Rose

混音套件 Waves 15插件下载 Waves 15破解教程

潜在新就业岗位超300万个 原生鸿蒙开发创造百万级人才缺口

最新动态

打造垂直领域内容的问答机器人

霍格沃兹测试开发学社

InfoQ专访:参与快速发展的Kubernetes社区共建_软件工程_Rags Srinivas_InfoQ精选文章