编辑 | Sai
视频 | 二叉树团队
几年前,国内对开源的认知是:我们做不了开源,我们创新力不够。那时候国产开源项目要进 Apache?想也别想!而现在 Apache 里面的国内开源项目一只手都数不过来。这里是二叉树第四季,我们跟你聊聊开源这件事儿,本期嘉宾是一位 Apache 基金会顶级项目里的核心贡献者,他来聊聊成为核心贡献者是一种什么样的体验。
“什么时候去做件大事吧!”
比如:成为 Apache 基金会顶级项目里的一位核心贡献者。
这是一种什么样的体验?
下面且听 Apache Flink 项目 Committer、Jark's Blog 的博主——伍翀(花名:云邪)的分享。
刚刚进入阿里的前半年,云邪是失落而迷茫的。
大学时代的云邪在各方面都非常优秀:功课做得好,导师很器重,涉猎过前端、PHP、Ruby、Spark 等技术,做过几个网站赚外快,搭过论坛,还做过一个颇为受欢迎的开源博客主题 Jacman,在 Github 收获了 900 多个 star。
简而言之,是一位学霸。
“后来到研究生毕业的时候,我被阿里巴巴的技术氛围所深深吸引,期望着加入一个技术殿堂般的团队。”
2015 年,云邪进入了阿里的实时计算团队,准备要一展身手、做一番重要的贡献。
但是在大公司里,个人更多的是充当着螺丝钉。阿里是个卧虎藏龙的地方,身边有很多特别优秀的小伙伴。半年的时间很快过去,云邪觉得自己没有达到心中预期的成绩,失落感也就随之而来。
同样在 2015 年,Apache Flink 正式升级成为 Apache 基金会顶级项目。早在研究生阶段就研究过 Spark 的云邪,对 Flink 项目并不陌生。这是大数据领域一个新兴的明星项目,跟实时计算有密切的关系。技术嗅觉告诉他,这可能会是未来大数据技术的发展方向。
有一天,云邪找到他的主管,说:
“我想去研究 Flink。我觉得我们团队需要有一个人去研究这个方向。”
主管很支持,并且设定了一个目标:
“一年成为 committer。”
英文直接翻译过来成为中文,committer 的意思是“做过承诺的人”。在一个开源项目里,往往有一个核心的开发者或者开发团队来把握整个项目的发展策略,其他人来给这个项目贡献代码之后,由这个核心团队来审查,决定是否合并。项目越庞大、越重要,贡献的人越多,这个核心的团队就越重要。
在开源项目的团队里,很多决策是基于“信任”机制。一般的开发者来贡献代码,就是一个贡献者(contributor)。每一个贡献上来的代码经过代码审查,经过探讨与修改,符合项目发展方向的就被合并入主线。当一位贡献者做过很多贡献,核心团队的大部分人认为这是一位很靠谱的贡献者,懂得为自己的投入做出承诺,则该贡献者会被认可成为一位 committer。
一般而言,这是一个相对漫长的过程。项目越是重大,被认可成为 committer 的难度就越大,因为需要获得更多人、更深的信任。
“你从一个对 Flink 一无所知的小白,要成为一个 commiter,中间还是有很多困难要跨过去的?”
“嗯,当时也没有想很多,其实当时这个目标还是设的挺胆大的。”
“后来我就开始研究 Flink 的源码,大概花了两三个月的时间,把 Flink 的核心源码都看了一遍,一边看代码一遍写博客。” 这些博客文章后来也都成了国内学习 Flink 的优质材料。
那个时候,Flink 社区里国内的参与者还比较少。
“你还记得你提交的第一个 patch 吗?”
“我当时提交的第一个 patch 是 fix 了一个非常简单的 bug,就是打印的日志里面的一个单词写错了。然后当时提交上去,很快,当天,社区的人就帮我 review 了,之后就进入了 master 的分支。虽然它是一个非常小的改动,但是你就觉得你终于进到社区里面去了,你的名字、你的邮箱就显示在了他那个仓库的 contributor 列表里。”
“这件事情就能让你高兴好久。”
随着提交的次数越来越多,社区里的人开始注意到云邪,后来的一次线下技术交流中,Flink 的创始人、dataArtisans CTO —— Stephan 做了技术分享和交流,云邪也有幸参与了,这是云邪第一次与这个层面的技术大牛零距离接触。
“Stephan 先生是我的偶像:)”
“那次就突然发现,原来在邮件列表接触的技术大牛,在线下是这么的平易近人!这让我对社区产生了更大的兴趣。”
“后来又有一次技术交流的时候,他还能够认得我,这件事情我还是高兴挺久的。”
“后来这一年你大概提交了多少次?”
“提交了大概有五六十次,总共有上万多行代码,最大的一个有五六千行。最大的一个来来回回讨论了很久,在邮件列表里面来来回回有上百次的讨论,最后进去了,也是比较开心。”
"2017 年春节的时候,我收到了社区 committer 的邀请信。"
“你觉得成为 committer 对你来说最大的收获是什么?”
“我觉得成为 committer 最大的收获是这个过程中你学到的东西。社区里面有特别多的大牛,社区的代码规范要求也比较高,在这个过程中,你提交的每一个代码都有那么多牛人来指导你,来纠正你的设计,那对你其实是非常宝贵的财富。你这一段时间坚持下来,成为了一个 committer,你再回过头来做一些其他的事情,去做一些其他的设计的时候,你会更加有信心。”
“你觉得作为一个软件工程师最高的状态是怎样的?”
“就像 Linus 一样,把开源写代码当作是人生的一种乐趣,而不是一个谋饭碗的东西,我觉得是非常非常幸福的。”
现在的云邪,也已经进入一个为社区里面的新人传授布道的新角色。12 月 20 日 -21 日,云邪将在 Flink Forward China 2018 (Apache 基金会官方授权,国内首次 Apache Flink 顶级峰会)带来主题演讲。借着这个机会,他也希望邀请更多人来一起关注 Flink,一起参与到 Flink 项目的贡献工作当中。
“开源更多是一种责任。社区对你的认可,是希望你能够对社区有更多的贡献,能够帮助社区更多的去成长。“
“中国的 committer 越来越多,当然也是一件好事了!”