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

欢迎关注公众号:【雷克分析】 ,我是雷克,我专注于程序员经验、量化交易、大数据 & 数据库、AI大模型的分享, 欢迎关注 。

前言

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

img

1. 先想清楚自己为什么想要参与开源项目

每当我们做一件事情之前,肯定要想清楚我们为什么要做这件事情,所以你在参与开源项目之前,仔细想想自己为什么想要参与到开源社区,这些原因就是你未来能够一直持续参与开源社区的原动力。

对于我而言,我当时参与 Apache Calcite 项目的原因有以下四点:

  1. 我是 Apache Calcite 项目的使用者,之前在工作中会频繁接触到 Apache Calcite 的 SQL Planner 层,自己日常工作排查问题时,会看很多 Calcite 源码,由于经常要和 Apache Calcite 打交道,久而久之,就对 Calcite 熟悉起来了。
  2. 我很喜欢在社区邮件组里面和大家一起讨论问题,自己也能够从这些讨论中学习到自己没有考虑到的点。
  3. 当自己的贡献、代码等被社区接收时,这种成就感会让我感到愉悦。
  4. 想得到社区的认可,成为 Apache Calcite Committer,同时提升自己的个人技术影响力

不过上面只是我个人当时参与到 Apache Calcite 项目的原因,每个人参与开源项目的原因可能都不一样,但核心一点就是,参与开源项目之前,你要自己想明白自己为什么想要参与开源社区。

img

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 为例:

img

img

订阅了社区邮件组后,自己就可以及时收到社区的相关邮件了,包括:issue、开发者讨论、社区动态、方案交流等等,你可以关注自己感兴趣的邮件。

4. 参与开源社区贡献有哪些方式

参与开源社区贡献有很多种方式,比如参与社区讨论、文档、代码贡献、Review MR 等等,这里记住一点:核心就是多参与,参与的多了,社区其他同学也能更好的记住你,从量边到质变,这里也分享一下我当时从哪些方面参与的 Apache Calcite:

  • 积极的回答社区邮件组用户的问题,有时社区邮件组会有人提问,如果是自己能够回答的问题,我会积极的分享自己的想法

img

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

img

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

img

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

img
img

其他的贡献还有社区的文档,比如社区项目对外某个文档的信息有误,或者信息不及时等,这些你都可以提一个 Issue 来进行修复。社区的贡献,无论大小,都是非常鼓励你参与的,勿以事小而不为。

5. 选择自己感兴趣的模块,并深度参与和贡献

一般一个开源项目都是很多模块的,由于你的精力有限,你很难对每个模块都了如指掌,所以我建议你可以选择一个你非常感兴趣的模块入手,然后渐渐的深入进去。一般每个模块也都有相应的 PMC,当你在这个模块贡献的多了,这个模块的 PMC 也能够帮你提名 Committer。

由于我做的事情和 SQL 优化器相关,所以我当时选择的就是 Apache Calcite SQL 优化这个模块,主要是贡献一些 RBO 的规则,我自己也对这个模块非常感兴趣,正是由于对于这个模块的熟悉,以及真的感兴趣,所以我后面的贡献都在这个模块,这样能够帮助我对这个模块不断的深入和理解。

6. 参与开源社区你能够得到什么

  1. 参与到开源社区,首先你可以接触到国内外专注于这个项目的核心同学。这些同学一般都是非常优秀的同学,分散在国内以及国外的很多互联网大厂中。比如你参与到 Apache Flink 社区,你就可以接触到很多谷歌、阿里、字节、快手、腾讯等同学,你也能够从这些同学身上学习到很多他们解决问题的思路和方法。
  2. 能够提升自己的技术影响力,当你为社区贡献很多时,社区的同学也能够更好的记住和认识你,说实话,圈子很小的。
  3. 得到社区的认可,成为 Committer。每个技术人,都希望自己能够得到认可,那么 Committer ,就是社区对你的认可之一。
  4. 免费的 IDEA 全家桶(虽然我申请了,还没有给我)
  5. 认识一帮热爱技术的同学,没准会成为基友。

7. 个人参与开源社区的经验总结

我个人之前一般都是晚上和周末参与到社区,在社区里面,请大胆说出你的想法,即使你说错了,请不要觉得尴尬,这也是你学习的一次机会。参与社区,重要的是能够持续的参与,这样你才能够让其他社区同学对你有影响,然后慢慢的记住你,社区的 PMC 其实也会关注每天在社区活跃的同学,对于在社区活跃的同学,如果贡献够了,PMC 也会帮你进行 Commiter 的提名。

另外一个好的经验就是,可以主动参与到社区的 MR Review 中,我觉得现在很多 Apache 项目,Review 社区 MR 的精力都不太够,比如 Apache Calcite、Apache Flink 等等,社区是非常鼓励其他同学参与到 MR Review 中的,同时这也是帮你提名 Committer 的重要加分项。

由于社区邮件组一般是英文交流,如果真的有不太会的语句,或者单词时,可以借助于谷歌翻译,或者有道翻译。可能有时候你的英文表达可能不太符合英语语法,不过也没有关系,只要能让大家读懂你的意思就行。

最后,希望每个想参与到开源项目的同学,大胆走出第一步,社区很多 Committer 和 PMC,都是从小白慢慢参与的,你也可以的。

既然都看到这了,如果我的回答能够对你有帮助的话,欢迎点赞、收藏、关注我。

欢迎关注公众号:【雷克分析】 ,我是雷克,我专注于程序员经验、量化交易、大数据 & 数据库、AI大模型的分享, 欢迎关注 。
在这里插入图片描述

欢迎关注和私信发送“数据库”,即可得到我精心整理的数据库学习资料,包括视频、技术专栏、GitHub 资料、各类 Paper、SQL 标准、Apache Calcite 等等。

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值