来看看这位年轻的 eBay 小伙是如何成为 Committer
介绍一下我自己

目前就职于eBay中国,专注于微服务中间件,分布式架构等领域,同时也是狂热的开源爱好者。
如何成为一个commiter
过去几个月,我一直持续在为 Apache DolphinScheduler 项目贡献,也在最近收到了社区 PMC 的邀请,成为了 DolphinScheduler Committer, 这意味着过去一段时间我的贡献在社区中得到了大家的认可。一路走来,听过不少的分享,也获得过不少的帮助,本文结合我自己的体会和一些其他大神的总结,希望能够帮助更多人更好的参与到开源社区。
开始参与开源
万事开头难,但对于参与开源贡献来说,其实并没有那么难,需要的只是一次勇敢的尝试。
翻了翻我在 DolphinScheduler 的提交记录,我的第一个 pr 是删除一份无用注释,多么简单的一个任务,很多人可能根本不屑于做。但确实因为这个 pr,帮助我进入了开源的世界。很多社区中赫赫有名的人在分享他们刚开始参加开源贡献的时候,都是从一些很简单的事情着手,例如增加一个单元测试、参加一个 issue 的讨论或者参与一次版本 Release 投票。这些事情很简单,不会耗费我们很多的时间,但是却可以快速的帮助我们去熟悉一个社区的运作方式,也可以尽快的让社区中的人注意到你。
提升贡献值
Apache 社区非常重视一个人的贡献值, 一个人在社区中的贡献值越高,那么他在社区中就应该拥有越高的声望。
贡献可以是提交代码、修改文档或者参加公开的分享等多种方式,只要是遵循社区的准则,为社区的发展有帮助的行为都可以算作贡献。虽然贡献不分高低,但是参与一些重要 feature 的开发和困难BUG的修复往往能更快的增加你的贡献值,也更容易在社区中获得大家的认可。
因此,当我们进入社区一段时间之后,可能对一些普通的问题已经轻车熟路了,那么这个时候不妨多花时间在一些更深层次的问题上,这样不仅对提升自己的能力更有帮助,也能更好的帮助社区往前发展。
Communication over code
Apache 社区有一个非常著名的准则 "Community over code",意思是社区大于代码,Apache 社区认为维护一个健康可持续的社区比公开一份功能强大的代码更重要,这也是一直以来非常吸引我的地方。
在我刚加入开源贡献者的队伍中时,和很多人一样,觉得代码就是一切,一个项目的好坏由代码直接决定。但是随着越来越深入地参与,我慢慢发现,对于一个大型的多人异步协作的项目,有效沟通远比写代码重要得多。当我们有一个好的想法时,我们首先应该做的不是立刻开始实现这个想法,而是需要通过与社区进行沟通,征求社区的意见:一来、可以看看社区中是否有其他同学对此感兴趣,可以寻求其他小伙伴共同完成任务。二来、借助社区的力量来帮助 Review 我们的想法,还能及时的进行查漏补缺,避免出现写了一大堆的代码,最后发现自己在一开始就错了。在与社区进行确认之后再开始开发代码或书写文档,能够起到事半功倍的效果。
同时,参与日常的沟通讨论也是提升自己活跃度最简单的方式,在初入社区的时候,我们往往由于不自信,不愿意去参与邮件列表中的讨论,认为开源社区高手如云,自己如果说错了会全世界丢人。实际上,如果总是害怕犯错误,很难能够得到进步。当我们对于当前讨论的话题有自己的想法的时候,一定要勇敢的说出来,只要是经过思考得出的想法,最后都会得到社区的尊重和重视。
非常推荐大家参与项目的 Release 投票讨论,因为在这一过程中,你能最方便的知道当前版本的一些改动,同时,这也不会耗费你很多的时间。
如何成为 Committer
虽然 Apache 社区对于 Committer 没有要求必须要做出很大的贡献,但是要想成为 Committer,需要有看得见的贡献值和在社区中保持一定的活跃度,贡献值和活跃度都需要时间的积累,需要长期的投入。大部分同学应该都和我一样,白天在公司里需要完成工作上的事情,只有下班之后才能参与开源项目,因此保持热情和平常心尤为重要。
很多小伙伴往往由于一时兴起,或者在别处听说了某个项目,于是决定参与进来,而经过一段时间的浏览之后,最初的热情慢慢褪去,渐渐的自己也从社区中离开,没有达到最初的目的。我的建议是,从自己的兴趣出发,找到项目中自己感兴趣的模块,多思考项目中当前的设计是否存在问题,有没有更好的实现方式,保持好奇心可以很好的维持兴趣。
在开源贡献的过程中,免不了会收到反对的声音,保持平常心去看待问题。当我们精心设计了一个方案,最后收到别人的质疑的时候,不要因此而止步不前。一方面这其实是一件好事,说明我们的想法被更多的人知道了,另一方面我们需要先从自身出发,问问自己的方案是不是确实有问题,积极的与对方进行讨论,努力说服对方,这其实也是锻炼自己的好机会。
成为 Committer 并不是一件遥不可及的事情,只要坚持持续地为项目贡献,得到大家的认可,终将会有收获。
写在最后
在参与开源的过程当中,我也获得过很多人的帮助,在这里要特别感谢 CalvinKirs、dailidong 还有社区中的其他小伙伴,你们对开源的热爱和投入都深深的影响了我,没有你们的帮助,我无法进入到开源的世界。我也会继续坚持投入到开源社区中,贡献自己的一份力。
来看看这位年轻的 eBay 小伙是如何成为 Committer的更多相关文章
- 一位年轻而优秀的.NET开发者的成长点滴
一,社区的小圈子 今年3月的一次技术交流活动上,那是我们.NET技术社区第一次组织线下活动,由于没什么经验,所以活动组织得比较仓促,内容也比较一般,效果还是有点欠缺.当然,活动本身是必要的,这次活动上 ...
- QQ中未读气泡拖拽消失的实现(参照一位年轻牛B的博主的思路自己实现了一下)
原文链接:http://kittenyang.com/drawablebubble/,博主年轻却很有思想.相仿的年纪,很佩服他! 首先分析拖拽时的图,大圆.不规则的图(实际上时有规律的不然也画不出来, ...
- Spring WebFlux开门迎客,却来了一位特殊客人
话说Spring WebFlux已经出现有一段时间了,但是知道他的人并不是很多.这让他很是闷闷不乐. 还有更惨的是,那些敢于吃螃蟹的人在尝试了他之后,有的竟把代码重新改回到Spring MVC的同步模 ...
- eBay起诉指控亚马逊利用非法手段挖走其卖家
[摘要]eBay在诉状中称,亚马逊的代表滥用eBay的内部电子邮件系统联系卖家,这违反了市场政策. 腾讯科技讯 10月18日消息,据外媒报道,拍卖网站eBay对亚马逊提起诉讼,指控这家美国零售巨头利用 ...
- BAT线下战争:巨额投资或培养出自己最大对手(包括美团、58、饿了么在内的公司都在计划推出自己的支付工具和金融产品,腾讯只做2不做O)
BAT线下战争:巨额投资或培养出自己最大对手 2015年10月12日09:49 <财经>杂志 我有话说(18人参与) 收藏本文 BAT大举投资线下公司,看似咄咄逼人 ...
- DNS原理及劫持问题
对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑.手机.电视这些设备到底是如何被“连接”起来的.本文通过“我”,一个普通的网络请求的视角,给大家介绍下“我”的工作流程是如何的. 人们动动手指,点 ...
- 轻松了解DNS劫持
对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑.手机.电视这些设备到底是如何被"连接"起来的.本文通过"我",一个普通的网络请求的视角,给大家介绍下&q ...
- 【Win10 应用开发】实现数据的增量加载
今天,老周有小故事讲,国庆期间.有一次老周在某站台上候公交车.老周旁边也站满了人,突然,有一位头发弄得像电线杆的小伙子,不知为何,没有先兆地就大笑起来. 老周先是看了那小伙子一眼,他手上没有拿什么东西 ...
- HTTP协议 -- 认清协议常用状态码
HTTP协议作为web服务的基础,理所应当受到重视,但是周围的同事能够讲清楚HTTP协议的凤毛麟角.既然是基础,就应该早一点掌握,所以近半年(2016-2月——2016年6月),不准备学习新技术了.首 ...
随机推荐
- swiper使用
swiper使用 初始化 var mySwiper = new Swiper ('容器区域类', { // 存放swiper属性 }) 属性 基本属性: 1.initialSlide 设定初始化时sl ...
- CabloyJS自带工作流引擎的文档清单
文档清单 CabloyJS自带工作流引擎文档已经整理出来,欢迎大家围观.拍砖 介绍 介绍 演示:CMS审批工作流 单元测试用例集 流程定义 基本概念 JSON规范 listener规范 listene ...
- LOJ数列分块 9 题解
\(1.\) 题意 给定一个长度 \(n\) 序列,每次查询区间 \(l, r\) 的众数. \(2.\) 思路 如果边界是 \([l,r]\),\(l\) 在第 \(a\) 块,\(r\) 在第 \ ...
- 超详细干货!Docker+PXC+Haproxy搭建高可用强一致性的MySQL集群
前言 干货又来了,全程无废话,可先看目录了解. MySQL搭建集群最常见的是binlog方式,但还有一种方式是强一致性的,能保证集群节点的数据一定能够同步成功,这种方式就是pxc,本篇就使用图文方式一 ...
- 国内外组态软件对比分析(InTouch、WinCC、iFix、iNeuOS)
在我国自动化控制领域应用较广泛的工业自动化组态软件有Wonderware公司InTouch.西门子公司Wincc.GE公司iFix.国内也有一些传统组态软件厂商,使用的功能和形式基本上十分类似,受当时 ...
- 写个js获取2019博客之星投票活动的名次与投票数
获取投票数 // app.jsvar request = require('request');var cheerio = require('cheerio');request('http://m23 ...
- 自己封装的tools.js文件
/* * 生成指定范围的随机整数 * @param lower 下限 * @param upper 上限 * @return 返回指定范围的随机整数,上/下限值均可取 */ function rand ...
- Linux安装fastdfs集群部署
过程问题: make: gcc:命令未找到 解决: yum -y install gcc 一.环境和版本: Linux环境:CentOS 7.6 libfastcommon版本:1.0.39 Fast ...
- docker安装报错failure: repodata/repomd.xml from mirrors.aliyun.com_docker-ce_linux_centos_docker-ce.pro
1.进入 /etc/yum.repos.d 目录下,将所有有关 docker 的 repo 全部删掉 2.重新添加镜像 sudo yum-config-manager --add-repo https ...
- 编译调试Net6源码
前言 编辑调试DotNet源码可按照官网教程操作,但因为网络问题中间会出现各种下载失败的问题,这里出个简单的教程(以6为版本) 下载源码 下载源码 GitHub下载源码速度极慢,可替换为国内仓库htt ...