阿里RocketMQ是怎样孵化成Apache顶级项目的?

9 月 25 日,Apache 软件基金会官方宣布,阿里巴巴捐赠给 Apache 社区的开源项目 RocketMQ 从 Apache 社区正式毕业,成为 Apache 顶级项目(TLP)。Apache RocketMQ 是国内首个非 Hadoop 生态体系的顶级项目,开源至今,RocketMQ 已经被国内外数百家企业广泛使用。

写在前面

2016 年 11 月 11 号, 对阿里巴巴中间件消息团队来说,有着极其特殊的意义。这一天,在光明顶上奋战的小伙伴们见证了 RocketMQ 低延迟存储架构的成功试水,完成了保障双十一如丝般顺滑的既定目标。在另一个战场,历时 3 个月的开源重塑之后,Apache RocketMQ Champion Bruce 代表团队正式启动了 Apache 捐赠工程。至此,RocketMQ 开启了迈向全球顶级开源软件的新征程。

截止今天,RocketMQ 进入 Apache Incubator 已经 7 个月有余。在这半年多的时间里,团队走过很多路,也经历了很多事。

第一次按照 Apache Way 走通 Apache 软件发布流程,完成了在整个 IPMC 都极为罕见的 Rc3 发布壮举,体现了中国团队的严谨、高效,赢得了社区的赞誉。

第一次吸纳外籍 Committer - 日本博士 Roman。2 个月时间里,他提交近 20 个 Pull Request,推动 RocketMQ 跟 Apache 其它顶级社区项目合作,对社区起步做出了卓越贡献。

第一次面向社区举办编程马拉松。PMC 成员全程跟进,帮助参赛选手评审设计、Review 代码。

第一次吸纳 PMC 成员。在 RocketMQ 社区,PMC 是对 Committer 持续贡献的进一步 Merit。

第一次向 Apache 社区昭告 OpenMessaging 标准的愿景。紧接着, ASF Director Jim 毛遂自荐,加入到 RocketMQ 超强豪华的全球 Mentor 阵营中。

第一次面向国内社区举办了大型 MeetUp。全球图文现场直播,5 场纯技术 Messaging & Streaming 干货分享,传达了团队誓将做好社区,搞好生态的决心。

第一次......

人生就是一场跋涉,走久了,才知心酸,才知艰难,才有坚韧,才有渴望。前方的路,尽管遥远,尽管颠簸。但脚步依然,追求依然,方向依然。

2017 年 8 月 3 号,团队正式发起了冲击 TLP 的讨论。接下来的一个月时间里,讨论和投票,几乎成了每天的必修课。终于,抢在 Java 9 发布之前,RocketMQ 正式通过董事会决议,结束了在 Apache 上的孵化,正式成为 Apache 340 多个顶级项目中的一员。这一刻,完全出自中国团队,来自阿里巴巴的分布式消息引擎成为全球互联网中间件、大数据领域璀璨的新星。下一站,等待它的将是在国际舞台上与世界顶级老牌消息中间件的激烈角逐。相信在 Apache 先进的社区理念指引下,RocketMQ 社区生态会继续蓬勃发展,完成我们所赋予它的光荣使命。

接下来,我们从产品、社区、生态这三个维度,分别回顾一下 RocketMQ 这半年多的 Apache 孵化历程。

产品篇章

与 Apache 大多数顶级项目不同,RocketMQ 在进入 Apache 之前,Open Source 之路已经走过了 3 个春秋。历经多次双十一洗礼,在国内积累了一定的口碑,社区也有不错的 Active Contributors,但这些还远远不够。在正式开启捐赠之前,团队对 RocketMQ 甚至包括社区做了大量重塑工作。如国际化方面,在 Github 上利用 sidebar 特性重新设计编排了文档。如今,User Guide, Quick Start, Architecture & Design, How to contribute, Community, FAQ 这些几乎成为了团队新产品标配的文档结构。

代码层面更是进行了比较“激进”地优化。如去除 GBK 字符,全面拥抱 UTF-8。重写 API JavaDoc。清理代码,优化代码结构。利用 JDepend 优化组件之间的抽象依赖关系。利用 Findbugs 扫描代码漏洞,指导规范编码。交付方面,规范 Release 流程,New Features、Improvement and Bug 分类 Release note。社区层面则开启了全英式互动,发布问问题的技巧。

经过这些精心的准备,RocketMQ 完成了从 3.0 到 4.0 的悄然升级。而 4.0 是个过渡版本(和 3.0 相比,架构层面没有较大的改变),也是在 Apache 开启孵化的版本。通过孵化,团队重新认识了软件研发流程的重要性,尤其是像精细设计,代码 Review,编码规约,分支模型,发布规约等容易被忽略的过程。无以规矩不成方圆,尤其是当你置身于并领导一个全球协作的开源项目时,这些都显得是尤为重要。

编码规约

RocketMQ 的编码规约是比较宽松的,至少在 4.0 这个版本上。与其它 Apache 顶级项目不同,我们并没有从编码细节上去做过多约束,如静态变量如何使用,日志怎么打,异常怎么捕获、处理。而主要通过 Code Style, Copyright, Code Template 3 块来进行一些大方向上的约束。为了防止不遵循规约的代码合并仓库,我们通过 PR Checklist, checksty

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农老K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值