我是如何从零到成为 Apache 顶级项目的 Committer

apache,committer · 浏览次数 : 12

小编点评

最近,我非常荣幸地收到了 Apache Pulsar 和 Apache HertzBeat 社区的邀请,正式成为这两个项目的 Committer。在这个过程中,我从一个对开源知之甚少的开发者,成长为了一个积极参与开源项目的贡献者。在此,我想与大家分享我的开源经历,希望能对那些想要参与开源或者已经在开源领域奋斗的开发者有所帮助。 我的开源之旅始于 GitHub。早在 15 年 9 月,我注册了这个平台,并在不久后开始了我的开源之旅。起初,我只是简单地分享一些非业务代码,以便于和同学共享。但随着时间的推移,我开始关注 GitHub 上的其他项目,并尝试将自己的代码公开发布。在这个过程中,我逐渐认识到了开源的真正价值。 在我的开源生涯中,我曾参与过一个名为 Pulsar 的项目。起初,我对这个项目一无所知,但在解决项目中遇到的问题时,我决定为社区贡献一些代码。这个过程花了我一年半的时间,但我从中获得了宝贵的经验和成长。最终,我成功地贡献了 30 个左右的 PR,并受到了项目发起者的认可。 除了 Pulsar 之外,我还参与了 Apache HertzBeat 项目。这是一个与监控相关的项目,我在这里学到了很多新知识。在贡献源码的过程中,我逐渐熟悉了项目的运作方式,并与其他贡献者建立了良好的合作关系。 成为 Apache Committer 后,我获得了一些额外的福利,如免费的 GitHub Copilot、JetBrains 全家桶等。这些福利不仅让我感受到了开源社区的温暖,还为我未来的职业发展带来了很多帮助。 总之,开源项目是一个充满挑战和乐趣的平台。只要你愿意付出努力和时间,就一定能够在这里找到属于自己的成就感。希望我的经历能对大家有所启发,让我们一起为开源事业贡献力量!

正文

image.png

最近收到了 Apache PulsarApache HertzBeat社区的邀请邮件,成为了这两个项目的 Committer

一路走来我从最开始的打游击战的闲散人员到如今活跃在各个开源项目里的“老兵”,用现在流行的话来说 Apache 的这两个 Committer 就相当于是拿到了编制,进入了正规军。

下面就分享一下我的个人开源经历,希望对想要参与开源或者已经在其中的开发者有所帮助。

我的 GitHub 开源故事

初识 GitHub


我这个 Github 账号是在 15 年 9月份注册的,那时候刚出来参与工作。

其实在这之前我压根没有听说过 GitHub、对开源也是知之甚少;只是知道老师和同事经常让我在网上可以下载到一些第三方包(现在回想起来几乎都是好 Apache 的提供的包)来解决日常的一些常见需求。

当时只是觉得非常方便,没想到大部分的工作互联网上都有相关的解决方案。

直到第二年也就是 16 年我才提交第一行代码,记得当时是需要和同学共享一些代码。

在学校的时候大家都是把文件打包然后通过 QQ 发送的,因为我之前在 GitHub 上看到大家都是把源码公开的,所以当时的想法是不是可以直接使用 GitHub 把代码发给同学,这样就省去了打包解压的步骤了。

现在想想还好都是一些非业务代码,不然就违反公司安全规定了。

所以其实自己没有任何开源的概念,只是觉得分享代码很方便。

后续在网上看了 Richard Matthew Stallman 发起的自由软件运动才对开源的由来有了更多的认识,也越发佩服这些参与开源的大佬们。

托管 Blog

image.png
image.png

当时还非常流行在 GitHub 上搭建个人博客,我自然也跟上了这个潮流;直到现在也没有断更。
陆续写了 240+ 篇博客。

记得当时最喜欢干的事就是折腾各种主题,可以在 GitHub 免费托管一个博客,对当时的我也是震撼蛮大的。

关于博客的话题还有不少内容可以讲,放到后面继续分享。

提交第一个项目


因为当时在公司刚开始接触到 SSM(spring+springmvc+mybatis),所以就想把日常学到的东西沉淀下来。

于是就把一些非业务代码整理后提交了第一个项目,以更新博客的方式陆续更新了各种解决方案:

至今已经全部更新完毕,所以我就将它归档了。

这也是我第一次正儿八经做开源项目,在这个过程中也结实到了不少朋友,沉淀了许多内容;对于刚工作一两年的我来说意义还是很重大的。

参与正规军(Apache)

时间点回到现在,因为工作原因我需要在公司内部维护 Pulsar 消息队列;当时 Pulsar 在公司还有着一些细枝末节的问题需要解决。

在解决这些问题的过程中就想着看能不能给社区贡献些代码,这样也可以更熟悉整个项目。

其实 20 年左右在之前的公司就有使用 Pulsar,只是当时还没有意识到要向社区贡献代码。

于是我先尝试做一些无关紧要的修改:

因为这个还被大佬拒过几个 PR,与此同时我也在持续输出一个 Pulsar 相关的博客,当时也得到了大佬的认可:

之后我又根据日常工作中遇到的一些问题或者优化持续给社区提交 PR:

这个过程从第一个 PR 到社区大佬提名我大概经历了一年半的时间。

越大型、严谨的项目在处理这些 PR 时就是缓慢的,所以如果你真的想深度参与某个项目时就一定要有充分的耐心。

首先坚持下去,收获自然就来了。


Apache HertzBeat

今年四月份的时候我在朋友圈还看到另外一个项目:Apache HertzBeat

因为当时我也在做一些可观测性的内容,正好这个项目是和监控相关的;于是我就跟着文档走了一遍。

发现功能很强也很全,当时也是刚加入 Apache 的孵化器,所以还是有许多可以完善的地方。

我就开始以单测作为切入点尝试贡献源码,社区的响应速度也非常快。

之后逐渐将我在其他社区学到一些经验也复制到 HertzBeat 中,慢慢的贡献的代码越多,对 HertzBeat 也就更加熟悉了。

两个多月的时间我贡献了 30 个左右的 PR,后来也受到项目发起者的邀请:
image.png

因为是相对更年轻的项目,才更需要大家群策群力;所以如果你也对监控系统感兴趣,或者比较熟悉前端技术栈(HertzBeat 有后台管理界面)都欢迎前来贡献,后续获得提名的机会要比已经发展稳定的项目更大一些。

成为 Committer 的好处

讲到这里顺便再讲讲成为 Committer 的一些好处了,虽然开源经常和免费白嫖划等号,大部分人都是用爱发电的,但因为也有许多大公司得到了开源的好处,所以也给活跃在社区里的贡献者提供了一些免费福利。

当然要拿到这些福利肯定是得有一个评判标准,最简单也最直观的就是你是否已经是 Apache 组织的 Committer。

Github Copilot

首先第一个好处是提供免费个人使用 Copilot,当然这不全是 Committer 的权益,如果你是某个开源项目的活跃贡献者也是可以申请的(不一定能申请过,目前好像没看到通过的标准),只是已经是 Committer 后肯定是能享受这个权益。

Jetbrains 全家桶 IDE

JB 作为一个和开发者强绑定的公司,也提供了对应的福利,只要使用 Apache 的邮箱就可以免费使用他们的全家桶。

Apache 邮箱

提到了邮箱那就不得不提到 Apache 给每个 Committer 都会提供一个专属邮箱:

虽然市面上有各种的免费邮箱注册服务,但当你使用 Apache 的邮箱和其他人沟通交流时,大概率对方潜意识里都会对你高看一点。

这虽然是一些虚无缥缈的东西,但有时候就是会让沟通更加顺畅(比如求职面试时)。

项目的写权限

还有一个好处就是有了项目的写权限,当你参与过开源项目就知道这个的重要性了,有些时候一些 PR 迟迟得不到回复和合并,自己只能干着急。

有了这个权限之后,只要你的 PR 有人 Approve 之后,在风险可控的情况下不用等着 maintainer 来合并,自己就可以操作。

同时得益于在社区的活跃程度,你再提交到 PR 会更得到重视,同时也能更好的推进某些 feature;这对于依赖某个开源项目的公司来说受益非常大。

Apache 贡献阶梯

相信看到这里应该有不少人对成为 Apache Committer 感兴趣了,也比较好奇什么样的标准才能成为 Committer。

以下是我根据一些已经是 Committer 的大佬和 Apache 官方给的一个贡献阶梯作为参考总结出来的。

参与开源的人主要分为以下几种角色:

  • 普通用户
  • 贡献者
  • Committer
  • PMC 项目管理人员
  • 基金会管理人员
  • 基金会董事

整个路径还是比较清晰的,只是从 PMC 开始到后面的董事难度都是指数级增加。

目前整个国内当选过董事的都是屈指可数。

而关于成为 Committer 的要求某些社区会有明显的标准:

当然这个标准也不是一成不变的,只要持续的在社区活跃,有脸熟之后自然会有相关的 PMC 为你提名;当然这里的前提条件都是“持续活跃”。

总结

最后再总结下,为爱发电的开源项目也是可以获得回报的;特别是当你合并一个 PR 进入某个项目时带来的愉悦感非常强烈。

随着时间推进,在之后合并的 PR 可能没有前几次那么强烈,但只要达到一个范围,社区开始提名你为 Committer 时,这个多巴胺又会持续分泌。

同样的后续成为 PMC、管理人员、董事又会持续带来愉悦,当然难度也一个比一个大。

后面的层级离我还很远,如果今后有达到的一天再来和大家分享。

参考链接:

与我是如何从零到成为 Apache 顶级项目的 Committer相似的内容:

我是如何从零到成为 Apache 顶级项目的 Committer

最近收到了 Apache Pulsar 和 Apache HertzBeat社区的邀请邮件,成为了这两个项目的 Committer。 一路走来我从最开始的打游击战的闲散人员到如今活跃在各个开源项目里的“老兵”,用现在流行的话来说 Apache 的这两个 Committer 就相当于是拿到了编制,进入

Python Django 零基础从零到一部署服务,Hello Django!全文件夹目录和核心代码!

**在这篇文章中,我将手把手地教你如何从零开始部署一个使用Django框架的Python服务。无论你是一个刚开始接触开发的新手,还是一个有经验的开发者想要快速了解Django,这篇教程都会为你提供一条清晰的路径。我们将从环境搭建开始,一步一步地创建一个可以处理GET和POST请求的服务,让你能在实践

在这个大环境下我是如何找工作的

![](https://s2.loli.net/2023/06/19/SQP9LxtXNhGwyev.png) 蛮久没更新了,本次我想聊聊找工作的事情,相信大家都能感受到从去年开始到现在市场是一天比一天差,特别是在我们互联网 IT 行业。 已经过了 18 年之前的高速发展的红利期,能做的互联网应用几

【炫丽】从0开始做一个WPF+Blazor对话小程序

大家好,我是沙漠尽头的狼。 .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台。 本文演示如何在WPF中使用Blazor开发漂亮的UI,为客户端开发注入新活力。 注 要使WPF支持Blazor,.NET版本必须是 6.0 或更高版本,本文所有示例使用的.NET 7.0,版本要求见链接,截图

Linux 中如何安全地抹去磁盘数据?

哈喽大家好,我是咸鱼 离过职的小伙伴都知道,离职的时候需要上交公司电脑,但是电脑里面有许多我们的个人信息(聊天记录、浏览记录等等) 所以我们就需要先把这些信息都删除,确保无法恢复之后才上交 即有些情况下我们不得不以一种确保无法恢复的方式从磁盘上擦除所有信息 许多小伙伴可能认为使用文件管理器或者 rm

如何成为一名全职创作者——程序员篇

哈喽大家好,我是咸鱼 今天跟大家分享一篇文章,这篇文章的作者 **Gergely Orosz** 是一名程序员,他从 Uber 辞职以后,就当起了全职创作者 他通过写文章、卖课程、做视频等谋生,今天这篇文章是他对这种商业模式的思考,我把它主要部分翻译了出来(想要看全文的原文链接在文末) **译文如下

一台服务器上部署 Redis 伪集群

哈喽大家好,我是咸鱼 今天这篇文章介绍如何在一台服务器(以 CentOS 7.9 为例)上通过 `redis-trib.rb` 工具搭建 Redis cluster (三主三从) `redis-trib.rb` 是一个基于 Ruby 编写的脚本,其功能涵盖了创建、管理以及维护 Redis 集群的各个

【升职加薪秘籍】我在服务监控方面的实践(8)-elasticsearch 性能监控与分析手段

> 大家好,我是蓝胖子,之前讲了mysql,redis中间件的监控,今天我们再来看看另一个基础组件elasticsearch,如何对它进行监控,当你思考如何对一个组件进行监控时,四大黄金指标会告诉你答案,我们同样会从四大黄金指标给出的维度进行分析。 针对es做的性能分析,用四大黄金指标原则,我们可以

Vue源码学习(一):数据劫持(对象类型)

好家伙,了解一下Vue如何实现数据劫持 1.Vue中data的使用 首先,我得搞清楚这玩意的概念,我们先从vue的使用开始吧 想想看,我们平时是如何使用vue的data部分的? 无非是这两种情况 (你可千万不要带着惊讶的表情说"啊!原来有两种写法的吗") //函数写法 data() { return

从零开始使用 Astro 的实用指南

在这个实用的Astro指南中,我将指导你完成设置过程,并告诉你如何构造你的文件。你将学习如何添加页面、交互式组件,甚至是markdown文章。我还会告诉你如何从服务器上获取数据,创建布局,并使用vanilla JavaScript和其他框架添加互动性。准备好享受一些动手的乐趣,因为我们将一起创建一个