如何成为 Apache 项目的 Committer
对于很多在公司维护开源项目的工程师来说,成为 Apache 项目的 committer 应该是很多人的一个小梦想,那么怎么才能成为一位 committer,对于一些比较成熟的项目,现在想成为 committer 是有一定的难度,但也不是不可能。
How can I become an Apache committer? 这个问题在 Quora 上也引起了一些讨论,本文也是看了哪些点赞比较多的答案之后的一些简单总结,也督促自己能够按照别人的建议去践行,实现自己的一个小 dream。
What does Committer mean : 如果你成为了一个项目的 committer,那么意味着你对这个工程已经有了非常深入的理解,你所提交的代码你能清楚地知道它不会对工程的其他地方带来不好的影响、能够兼容之前的功能;
Who decides on committer status : 每一个 Apache 项目是由一个项目管理委员会(Project Management Committee, PMC)来负责的。当一个 PMC 提名一位 committer 时,会由 PMC 的成员们来投票决定这个 contributor 是否达到 committer 的要求;
上面是对 committer 简单的说明,那么如何才能成为一位 committer 呢?
- Motivation : 你应该对这个项目中别人提出的问题保持一个积极的态度,如果你认为这个问题是需要解决的,那你自然而然就会去解决这个问题了;
- Attention to detail : Apache 的项目都有一个非常高的代码质量要求,在提交一个 pr 时,你应该确保改动的代码是不会由潜在的 bug 的,并且需要写适当的测试对代码变更部分。先从小处着手,关注代码的每一个细节:代码中使用的数据结构、测试是否有异常情况及边界情况的测试等。如果你能够按照这个标准要求自己,那么 committer 在 view 你的代码时,就不会花费太长的时间,久而久之,就会对你慢慢有了一直信任感;
- Activity in the community: 你应该积极地关注社区,把自己的邮箱加入到 mailing list,review 其他 contributor 的代码,提出一些建议。如果有新的 feature 或设计的变动在讨论,尽量加入到这些讨论中,即使你的建议不是很出色,也没有关系。这样做的好处是你开始密切关注社区的讨论、跟着项目的最新进展;
- Volunteer : Apache 项目有很多与其相关的项目需要 volunteer,如:季度报告、代码发版文档、说明文档等,你应该积极参与其中。
当然不同的项目成为 committer 的要求是不同的,但是上面这四条是比较通用,任何一个项目的 committer 都有上面这几个基本要求。
近段时间听了大沙的一次直播,关于如何成为 Committer,大沙有以下几点建议(与上面的类似,内容上更具体一些):
- 关注社区的问题、讨论,读源码,看看自己能不能解决这个问题,如果不能解决,关注这个 issue,看别人怎么解决这个问题,看别人怎么 review code、怎么解决问题;
- 当你能够 review 大量的 code,对一个功能比较熟悉,相当于一个 master,那么你离 committer 就非常近了;
- 这需要耐心和时间。
作者:柳年思水
链接:https://www.jianshu.com/p/fb7c5a44b91b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/felixzh/p/15234466.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- AkShare-股票数据-券商业绩月报
- AkShare-期货数据-仓单日报-上海期货交易所
- AkShare-期货数据-仓单日报-大连商品交易所
- AkShare-期货数据-仓单日报
- AkShare-股票数据-美港目标价
- AkShare-Websocket-行情数据
- AkShare-股票-市场总貌
- AkShare-使用教程-R语言调用数据接口
- AkShare-重要机构-美国商品期货交易委员会
- AkShare-重要机构-伦敦金属交易所
- 为什么不推荐使用BeanUtils属性转换工具
- 从源码打造云原生时代的「Linux」——Kubernetes
- Django-models & QuerySet API
- [奇淫巧技]GitHub个人页的新玩法
- 一致性哈希的分析与实现