编辑 | 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 越来越多,当然也是一件好事了!”

成为Apache顶级项目核心贡献者是一种什么样的体验?相关推荐

  1. 微服务开源项目ServiceComb 毕业成为Apache顶级项目

    全球最大的开源软件基金会Apache软件基金会(以下简称Apache)于北京时间10月24日宣布Apache ServiceComb 毕业成为Apache 顶级项目. \\ ServiceComb 由 ...

  2. 赠书:Apache顶级项目,SkyWalking为何一枝独秀?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 导读:本文摘自于SkyWalking创始人吴晟撰写的&l ...

  3. RocketMQ Apache顶级项目之路

    序言 \\ 2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目.至此,RocketMQ 开启了迈向全球顶级开源软件的新征程.通过社区半年多的努力.9 月 25 日, ...

  4. 这么多Apache顶级项目,SkyWalking为何一枝独秀?

    吴晟 读完需要 5 分钟 速读仅需 2 分钟 吴晟 Apache基金会会员,Apache SkyWalking创始人.项目VP和PMC成员,Apache孵化器PMC成员,Apache Sharding ...

  5. 硬刚 Kafka,Apache 顶级项目背后的公司完成数百万美元 Pre-A 轮融资

    Apache 顶级项目 Pulsar 背后的开源流数据公司 StreamNative 宣布完成数百万美元 Pre-A 轮融资,本轮融资由源码资本领投.StreamNative 在创立初期即获得红杉中国 ...

  6. GitHub 标星 10,000+,Apache 顶级项目 ShardingSphere 的开源之路

    [CSDN 编者按]几天前,当 GitHub 全球产品技术生态总经理 Michael Francisco 谈到中国开发者已经成为 GitHub 上最活跃的群体时,有开发者提出数量之后质量也要跟上.的确 ...

  7. 厉害了,分布式数据库中间件ShardingSphere毕业成为Apache顶级项目!

    全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)于北京时间 2020年4 月 15 日宣布 Apache ShardingSphere毕业成为 Apache 顶级项目. S ...

  8. Apache ShardingSphere 毕业成为 Apache 顶级项目,系业界首个 Apache 分布式数据库中间件项目

    全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)近日宣布京东数科主导的 Apache ShardingSphere 毕业成为 Apache 顶级项目. Apache Sha ...

  9. ShardingSphere正式成为Apache顶级项目

    全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)于北京时间 2020年4 月 15 日宣布 Apache ShardingSphere毕业成为 Apache 顶级项目. S ...

最新文章

  1. centos6 升级gcc / 无法识别的命令行选项“-std=gnu++1y”的解决办法
  2. (转)Python开发规范
  3. easy excel date 类型解析报错_ptarchiver原理解析
  4. Java 的面向接口编程
  5. java的requestmapping_SpringMVC RequestMapping 详解
  6. 云原生 CI/CD 框架 Tekton 初体验
  7. java如何构建图_如何从传递边构建子图?
  8. java通过+拼接字符串导致的无效SQL,三目运算符与+运算符结合使用时需要注意了
  9. gradle构建_如何提高Gradle的构建速度?
  10. android界面编程内部类,Android精讲--界面编程1(界面编程与视图的组件)
  11. 目前电子计算机处于什么时代,目前,电子计算机处于哪大规模和超大规模集成电路时代。()...
  12. php 伪静态规则,常用伪静态规则(for Nginx)
  13. 2021-06-11打开VMware虚拟机时提示“锁定文件失败 打不开磁盘或它所依赖的某个快照磁盘。
  14. MySQL用户权限系统
  15. 脾气暴躁的 Linus 不大可能开喷修改 master
  16. 我见过最“骚”的代码注释!神兽版都来了
  17. 学一点Wi-Fi:WEP
  18. Unity 多机器的视频不卡帧同步
  19. 后浪的Java追随者们是什么样的?
  20. 超参数优---贝叶斯优化及其改进(PBT优化)

热门文章

  1. 基于Node的Koa2项目从创建到打包到云服务器指南
  2. Android 自定义viewpager 三张图片在同一屏幕轮播的效果
  3. android 建数据库 SQLite 存储sd 卡或者内存
  4. mini CentOS7 安装 mysql
  5. 将不确定变为确定~整形变量是否可以进行位运算(像枚举类型一样)
  6. SAP日记之一-漫漫自学路
  7. 也许MVC不该重写Url格式?
  8. 基于对象和面向对象编程范式辨析和主流编程语言中的应用
  9. 亲爱的,你是最棒的!
  10. matlab中怎么求矩阵的特征值和特征向量