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


最近收到了 Apache Pulsar 和 Apache HertzBeat社区的邀请邮件,成为了这两个项目的 Committer。
一路走来我从最开始的打游击战的闲散人员到如今活跃在各个开源项目里的“老兵”,用现在流行的话来说 Apache 的这两个 Committer 就相当于是拿到了编制,进入了正规军。
下面就分享一下我的个人开源经历,希望对想要参与开源或者已经在其中的开发者有所帮助。
我的 GitHub 开源故事
初识 GitHub

我这个 Github 账号是在 15 年 9月份注册的,那时候刚出来参与工作。
其实在这之前我压根没有听说过 GitHub、对开源也是知之甚少;只是知道老师和同事经常让我在网上可以下载到一些第三方包(现在回想起来几乎都是好 Apache 的提供的包)来解决日常的一些常见需求。
当时只是觉得非常方便,没想到大部分的工作互联网上都有相关的解决方案。
直到第二年也就是 16 年我才提交第一行代码,记得当时是需要和同学共享一些代码。
在学校的时候大家都是把文件打包然后通过 QQ 发送的,因为我之前在 GitHub 上看到大家都是把源码公开的,所以当时的想法是不是可以直接使用 GitHub 把代码发给同学,这样就省去了打包解压的步骤了。
现在想想还好都是一些非业务代码,不然就违反公司安全规定了。
所以其实自己没有任何开源的概念,只是觉得分享代码很方便。
后续在网上看了 Richard Matthew Stallman 发起的自由软件运动才对开源的由来有了更多的认识,也越发佩服这些参与开源的大佬们。
托管 Blog


当时还非常流行在 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,后来也受到项目发起者的邀请:

因为是相对更年轻的项目,才更需要大家群策群力;所以如果你也对监控系统感兴趣,或者比较熟悉前端技术栈(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、管理人员、董事又会持续带来愉悦,当然难度也一个比一个大。
后面的层级离我还很远,如果今后有达到的一天再来和大家分享。
参考链接:
- https://community.apache.org/contributor-ladder.html
- https://hertzbeat.apache.org/zh-cn/docs/community/become_committer
- https://zh.wikipedia.org/wiki/自由软件运动
🎉我是如何从零到成为 Apache 顶级项目的 Committer的更多相关文章
- Dubbo下一站:Apache顶级项目
导读: 近日,在Apache Dubbo开发者沙龙杭州站的活动中,阿里巴巴中间件技术专家曹胜利(展图)向开发者们分享了Dubbo2.7版本的规划. 本文将为你探秘 Dubbo 2.7背后的思考和实现方 ...
- 在spring boot中三分钟上手apache顶级分布式链路追踪系统skywalking
原文:https://juejin.im/post/5cd10e81e51d453b560f2d53 skywalking在apache里全票通过成为了apache顶级链路追踪系统 项目地址:gith ...
- 盘点 35 个 Apache 顶级项目,我拜服了…
Apache 软件基金会 Apache 软件基金会,全称:Apache Software Foundation,简称:ASF,成立于 1999 年 7 月,是目前世界上最大的最受欢迎的开源软件基金会, ...
- 我给 Apache 顶级项目提了个 Bug
这篇文章记录了给 Apache 顶级项目 - 分库分表中间件 ShardingSphere 提交 Bug 的历程. 说实话,这是一次比较曲折的 Bug 跟踪之旅.10月28日,我们在 GitHub 上 ...
- 如何从零开始参与 Apache 顶级开源项目?| 墙裂推荐
写在开头 从 2021 开始,有一个很有意思的说法经常在各大技术媒体或开源论坛中出现,「开源正在吞噬一切」.不论是否言过其实,从一个行业从业者的切身感知来看,开源确实从少数极客的小众文化成为主流的 ...
- 特性预览:Apache 顶级项目 Apache Pulsar 2.6.1 版本
在正式分享 2.6.1 版本更新细节之前,冉小龙首先为我们分享了两个相关 PIP 的内容. 一个是 PIP-47 中关于「基于时间来进行版本更新」的计划.该 PIP 提出后,从 2.5.0 版本到目前 ...
- Apache 顶级项目 Apache Pulsar 成长回顾
关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...
- 我给Apache顶级项目贡献了点源码。
这是why技术的第 91 篇原创文章 这篇文章其实并没有什么技术性的分享,从我的角度而言,更多是记录和思考. 把我对于源码和之前写的部分文章反哺给我的一些东西,带来的一点点思考分享给大家. 一行源码 ...
- Apache顶级项目 Calcite使用介绍
什么是Calcite Apache Calcite是一个动态数据管理框架,它具备很多典型数据库管理系统的功能,比如SQL解析.SQL校验.SQL查询优化.SQL生成以及数据连接查询等,但是又省略了一些 ...
- 【产品案例】我是如何从零搭建起一款健身O2O产品的?
作者: Wander_Yang 我在年初参与到“SHAPE”这款健身产品的研发中,也算是第一次以产品经理的身份,从0开始负责一个产品的建立. 产品是一款O2O的智能健身连锁店,目前产品已经上线8个月, ...
随机推荐
- 带有声音/音频的 Mac 远程桌面
一言以蔽之:如果你用远程桌面软件访问mac电脑遇到声音问题,改用Splashtop就好了.Splashtop对于Mac 的远程桌面支持非常棒. 尽管有几种远程桌面工具可提供对 Mac 的远程访问,但许 ...
- Scala中集合中的View用法
设想以下这个计算 def eval(i: Int): Option[Int] = { println(s"invoke with $i") if (i % 2 == 0) { No ...
- ES集群的扩缩容
ES集群节点的扩容缩容案例 1.在集群中添加和删除节点 当您启动Elasticsearch实例时,您正在启动一个节点.Elasticsearch集群是一组具有相同cluster.name属性的节点.当 ...
- win10 使用idea 构建一个ssm的模板maven项目
一.创建一个maven项目 1.1建立一个module作为web项目 File->New->project 选择maven,默认jdk,下面的列表什么都不选,next->输入 ...
- 表单设计——《HTML5 CSS3从入门到精通》
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 微信小程序预约视频号直播
一.概述 微信小程序提供了可以唤起预约视频号直播弹窗的接口 reserveChannelsLive,该接口接收一个参数 noticeId,通过 getChannelsLiveNoticeInfo 接口 ...
- 7.13早考试总结(NOIP模拟13)[工业题·卡常题·玄学题]
人的记忆本来就是暧昧的,不值得信任. 前言 又是令人头疼的数学部分..还是太菜了.. 晚上还有一场,当场裂开. T1 工业题 解题思路 首先,这个题的暴力还是非常好像的,直接按照题目要求码就好了. 对 ...
- uniapp 小程序分享功能
上个月在做小程序的项目时,甲方需要给小程序添加个分享的功能,查看uniapp官方文档后,发现uniapp有自带的小程序分享功能(https://uniapp.dcloud.io/api/plugins ...
- Linux Shell命令提示样式修改
对linux shell命令样式进行美化. 修改前的效果: 修改后的效果: 直接给出.bashrc脚本代码: 1 # ~/.bashrc: executed by bash(1) for non-lo ...
- LeetCode 682. Baseball Game 棒球比赛(C++/Java)
题目: You're now a baseball game point recorder. Given a list of strings, each string can be one of th ...