我是如何参与 Apache Calcite 社区并成为 Committer 的

本文首发于公众号:【雷克分析】
前言
我是在 23 年 10 月中被 Apache Calcite PMC 提名的 Committer,整体距离现在有三个多月了,这个期间自己一直想写一篇文章,来总结一下自己当时是如何参与到开源社区的,不过中间由于其他个人的一些事情,一直被搁置。现在马上快过年了,撑着年前有些时间,来总结一下当初自己是如何参与到 Apache Calcite 这个开源项目的经验,现在想一想,当时有时候下班回去或者周末的时候,打开社区邮件组或者 GitHub,如果有人和我沟通或者给我的 MR Review 建议时,那时候自己也是非常兴奋。希望这篇文章能够帮助到那些想要参与到开源项目的同学。

1. 先想清楚自己为什么想要参与开源项目
每当我们做一件事情之前,肯定要想清楚我们为什么要做这件事情,所以你在参与开源项目之前,仔细想想自己为什么想要参与到开源社区,这些原因就是你未来能够一直持续参与开源社区的原动力。
对于我而言,我当时参与 Apache Calcite 项目的原因有以下四点:
我是 Apache Calcite 项目的使用者,之前在工作中会频繁接触到 Apache Calcite 的 SQL Planner 层,自己日常工作排查问题时,会看很多 Calcite 源码,由于经常要和 Apache Calcite 打交道,久而久之,就对 Calcite 熟悉起来了。
我很喜欢在社区邮件组里面和大家一起讨论问题,自己也能够从这些讨论中学习到自己没有考虑到的点。
当自己的贡献、代码等被社区接收时,这种成就感会让我感到愉悦。
想得到社区的认可,成为 Apache Calcite Committer,同时提升自己的个人技术影响力
不过上面只是我个人当时参与到 Apache Calcite 项目的原因,每个人参与开源项目的原因可能都不一样,但核心一点就是,参与开源项目之前,你要自己想明白自己为什么想要参与开源社区。

2. 开始找到自己感兴趣的开源项目
当你想好要参与到开源项目时,接下来就是找到自己感兴趣的开源项目。个人一个好的经验就是:你可以想一想自己平时工作中,接触到的和使用最多的开源项目是什么,结合工作以及实践,参与进来,在了解原理的同时,既能够帮助你更好的解决业务侧的问题,同时你平时遇到的业务侧问题和解决思路时,也可以贡献给社区,这是一个正向循环的过程。
比如你是一个 Java 开发同学,可能平时接触到的最多 Apache Dubbo、K8s、其他开源的一些微服务框架等等,如果你是一个大数据开发的同学,你平时接触到的可能是 Apache Flink、Apache Spark、Hadoop、Doris、HBase、Starrocks 、Apache Calcite 等等,不同工作方向的同学,可能接触到的开源项目不同。
我之前工作中,自己接触和使用最多的就是 Apache Calcite,所以很自然的就选择了 Apache Calcite。你自己也可以问问自己,自己平时工作中哪块技术是自己核心要掌握的,那么你就可以选择这个技术涉及到的开源项目,作为自己初始参与的开源项目。
3. 订阅开源项目的社区邮件组
每个 Apache 项目都会有自己社区邮件组,社区同学在沟通时,比如 JIRA 信息、问题咨询、Feature 和发版投票、Committer 提名时,都会在社区邮件组进行沟通和通知,所以这里我建议新同学在选好了自己要参与的开源项目后,先开始订阅社区的邮件组。
社区邮件组也比较好找,自己谷歌自己参与的开源项目 + 邮件组即可,比如以 Apache Flink 为例:


订阅了社区邮件组后,自己就可以及时收到社区的相关邮件了,包括:issue、开发者讨论、社区动态、方案交流等等,你可以关注自己感兴趣的邮件。
4. 参与开源社区贡献有哪些方式
参与开源社区贡献有很多种方式,比如参与社区讨论、文档、代码贡献、Review MR 等等,这里记住一点:核心就是多参与,参与的多了,社区其他同学也能更好的记住你,从量边到质变,这里也分享一下我当时从哪些方面参与的 Apache Calcite:
积极的回答社区邮件组用户的问题,有时社区邮件组会有人提问,如果是自己能够回答的问题,我会积极的分享自己的想法

积极的参与社区 JIRA Issue 的讨论,当你订阅了社区的邮件组时,当有新的 Issue 创建时,你会收到相应的 issue 邮件,如果你对这个 Issue 有想法时,你就可以在下面说出自己的想法。

代码贡献 。自己当时在研究 Presto,发现 Presto 有一些优化规则,在 Apache Calcite 中没有,于是我就将这部分规则贡献到了 Calcite 中,其他就是修复了 Sample 的一些 Bug,以及扩展了一些 PG 的语法。

Review 其他同学 MR 。每天都会有人向 Apache Calcite 提交 MR,但社区的人力说实话真的有限,很难及时的 Review 每个 MR,所以这里我也会帮大家 Review 他们的 MR,社区也非常鼓励大家参与 MR Review 当中来,这也是 Committer 提名的一个重要加分项。当然,在这个过程中,也会有很多人来 Review 你的 MR,说真的,我在这种 MR Review 过程中收获到了很多,社区的很多同学都是工作很多年的同学,他们会把一些好的建议给到你,这也是非常宝贵的,我记得当时我有个 MR 被四个人 Review。现在也有很多 Review 建议影响着我。


其他的贡献还有社区的文档,比如社区项目对外某个文档的信息有误,或者信息不及时等,这些你都可以提一个 Issue 来进行修复。社区的贡献,无论大小,都是非常鼓励你参与的,勿以事小而不为。
5. 选择自己感兴趣的模块,并深度参与和贡献
一般一个开源项目都是很多模块的,由于你的精力有限,你很难对每个模块都了如指掌,所以我建议你可以选择一个你非常感兴趣的模块入手,然后渐渐的深入进去。一般每个模块也都有相应的 PMC,当你在这个模块贡献的多了,这个模块的 PMC 也能够帮你提名 Committer。
由于我做的事情和 SQL 优化器相关,所以我当时选择的就是 Apache Calcite SQL 优化这个模块,主要是贡献一些 RBO 的规则,我自己也对这个模块非常感兴趣,正是由于对于这个模块的熟悉,以及真的感兴趣,所以我后面的贡献都在这个模块,这样能够帮助我对这个模块不断的深入和理解。
6. 参与开源社区你能够得到什么
参与到开源社区,首先你可以接触到国内外专注于这个项目的核心同学。这些同学一般都是非常优秀的同学,分散在国内以及国外的很多互联网大厂中。比如你参与到 Apache Flink 社区,你就可以接触到很多谷歌、阿里、字节、快手、腾讯等同学,你也能够从这些同学身上学习到很多他们解决问题的思路和方法。
能够提升自己的技术影响力,当你为社区贡献很多时,社区的同学也能够更好的记住和认识你,说实话,圈子很小的。
得到社区的认可,成为 Committer。每个技术人,都希望自己能够得到认可,那么 Committer ,就是社区对你的认可之一。
免费的 IDEA 全家桶(虽然我申请了,还没有给我)
认识一帮热爱技术的同学,没准会成为基友。
7. 个人参与开源社区的经验总结
我个人之前一般都是晚上和周末参与到社区,在社区里面,请大胆说出你的想法,即使你说错了,请不要觉得尴尬,这也是你学习的一次机会。参与社区,重要的是能够持续的参与,这样你才能够让其他社区同学对你有影响,然后慢慢的记住你,社区的 PMC 其实也会关注每天在社区活跃的同学,对于在社区活跃的同学,如果贡献够了,PMC 也会帮你进行 Commiter 的提名。
另外一个好的经验就是,可以主动参与到社区的 MR Review 中,我觉得现在很多 Apache 项目,Review 社区 MR 的精力都不太够,比如 Apache Calcite、Apache Flink 等等,社区是非常鼓励其他同学参与到 MR Review 中的,同时这也是帮你提名 Committer 的重要加分项。
由于社区邮件组一般是英文交流,如果真的有不太会的语句,或者单词时,可以借助于谷歌翻译,或者有道翻译。可能有时候你的英文表达可能不太符合英语语法,不过也没有关系,只要能让大家读懂你的意思就行。
最后,希望每个想参与到开源项目的同学,大胆走出第一步,社区很多 Committer 和 PMC,都是从小白慢慢参与的,你也可以的。
欢迎关注我的公粽号【雷克分析】,更多最新内容和干货,第一时间收到。我整理了很多学习资料,私信“命令、提效、数据库、calcite、提示词”等相应关键字,即可获取对应的学习资料。

版权声明: 本文为 InfoQ 作者【分析_go】的原创文章。
原文链接:【http://xie.infoq.cn/article/564a6e16dcd01f5be615bd25a】。文章转载请联系作者。
评论