如何成为apache开源社区的贡献者

文章目录

  • 参与开源
  • 开发代码
    • fork代码
    • 下载到本地
    • 添加远程仓库
    • 添加新分支
    • 写测试代码
    • 提交代码
    • 提交到社区
    • 合并PR
  • 从开源中学习成长

参与开源

作为一个程序员,给世界上顶级的apache社区贡献一下自己的代码,成为一个apache contributer,把这个写到简历里,是不是觉得很爽,下面我结合apache flink来简单讲讲如何给apache 贡献你的第一行代码。

当我们想给apache贡献代码的时候,想必你是遇到了一个apache项目的bug、或者是想添加一个新功能。这时候我们可以这样做,比如对于一些很小的bug、非常明显的bug、或者一些非常小的功能的改进,我们可以直接在https://issues.apache.org/上创建一个ISSUE。比如说我创建的这个issue,https://issues.apache.org/jira/browse/FLINK-16646 ,这个ISSUE主要的问题是flink在读取处理多个orc文件的时候会抛出来一个空指针异常。

对于一些稍微大点的改动,最好是先发一个讨论到flink的邮件列表,听取一下大家的意见.如果是一些更大的改进,需要开启一个FLIP (Flink Improvement Proposals),
在这个地址,https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals ,大家经过讨论之后,最后发起投票,在有3个committer通过之后,就可以自进入开发阶段了。然后可以创建相关的issue或者其子issue。

我觉得没有必要刻意去issue列表去找issue,其实只是你在工作或者学习的过程中,一定会遇到各式各样的问题,也许是遇到了一个bug,也许是发现开源软件无法满足我们的需求,这个时候你可以先去issue列表找找有没有相关的问题,如果有的话,看看现在什么进度了,可以一起参与进来,如果没有,可以自己提交一个。

开发代码

下面我们讲讲怎么具体开发一个issue。

fork代码

首先我们要有一个自己的github账号,我们需要把flink的代码fork到自己的账号下,打开https://github.com/apache/flink,点击这个fork按钮,之后我们就会在我们自己的账号下看到相应的工程了。

如何成为apache开源社区的贡献者_第1张图片

下载到本地

之后我们就可以把刚才fork的flink的代码下载到我们的本地,可以用下面的命令:

cd my_workspace  
git clone  https://github.com/zhangjun0x01/flink.git

添加远程仓库

接下来我们添加一个apache的远程仓库,主要是为了后期更新代码。

git remote add apache https://github.com/apache/flink.git

之后执行查询远程仓库命令git remote -v,可以看到有两个远程仓库。

origin	https://github.com/zhangjun0x01/flink.git (fetch)
origin	https://github.com/zhangjun0x01/flink.git (push)
apache	https://github.com/apache/flink.git (fetch)
apache	https://github.com/apache/flink.git (push)

添加新分支

接下来,添加一个新分支,用于开发我们的代码。分支的名字可以自己随便起,比如为了方便区分和查询,我们可以起一个和这issue同名的分支名,或者根据功能起一个自己好识别的分支名.

我这个是我起了一个和这个功能相关的分支名.

https://github.com/zhangjun0x01/flink/tree/flink-orc-input

然后我们现在就可以在这个分支上开发自己的代码了,开发完代码之后,我们需要检查一下代码的规范,这个也就是checkstyle,具体的使用可以参考这篇文章: 【flink教程-在IntelliJ IDEA 中玩转 checkstyle】

写测试代码

最后开发完了相关的代码之后,需要在相关的测试类里面添加相应的测试代码,如果添加一个新功能,还需要添加相应的文档。

提交代码

我们开发完了代码之后,这段时间可能flink的主分支已经有了代码的更新,所以我们为了避免冲突,还需要把最新的代码更新下来。首先切换到主分支

git checkout master 
git pull apache master

之后,我们切换到我们的分支:

# 切换到自己的分支
git checkout flink-orc-input
# 添加刚才改动的代码,如果不确定改了哪些,可以git status看一下
git add your_code 
git commit -m '注释'
# 把变化的代码添加到我们的分支
git rebase
# 提交分支到自己的仓库
git push origin flink-orc-input

提交到社区

我们提交分支之后,就可以提交相应的PR(Pull Request)了,比如我的这个PR: https://github.com/apache/flink/pull/11434 。
提交的时候注意标题要写成 [ISSUE] + title的形式,比如 [FLINK-16646] [orc] Flink read orc file … 这样的话就能把你这个pr和issue自动关联上。

之后我们就能在相应的issue页面看到关联的PR

如何成为apache开源社区的贡献者_第2张图片

合并PR

你的代码提交完之后,之后会有相关的committer或者其他人帮你review代码,当然你也能帮别人review代码,这个也是你贡献社区的一种方式。

如果committer认同了你的改动,然后他就会把你的改动合并到master分支,或者是其他相应的分支。

比如我这个,不仅仅是改了master,还改了1.10分支,所以这里有两个关联的PR。

等下一次版本发布的时候,然后你的名字就出现了apache的官网上,你就成了apache的contributer。 https://flink.apache.org/news/2020/07/06/release-1.11.0.html#list-of-contributors

从开源中学习成长

上面我们提到,我们在提交了一个PR之后,需要写一个测试用例,那么其他人在开发新功能的时候也是写了大量的测试用例,当flink新发布了一个版本,你想要了解最新功能的使用方法,那么如何去获取一手的最新资料呢,去源码中学习相关的测试类无疑是最好的方法,因为这些测试用例都是这个功能的开发者提供的,是最权威的。

因为新开发的功能一般都是开发者自己做了自测,没有经过生产环境大规模的各种测试用例的测试,所以新出来的版本在使用的过程中很容易出现一些意想不到的问题,所以当我们使用新版本的时候,出了问题的时候,这个时候网上一定搜不到答案,想解决问题,就只能看源码了,这个就是一个很好的成长过程。

当我们使用了免费的开源服务的时候,遇到问题,我们可以帮忙解决问题,然后把解决方案贡献给社区,形成一个良性循环,这样才能让社区发展的越来越好,我们所有人都从中受益。

更多精彩内容,欢迎关注我的公众号【大数据技术与应用实战】,一起成长。
如何成为apache开源社区的贡献者_第3张图片

你可能感兴趣的:(随笔,flink)