首页 > 数据库 > > 如何从 0 到 1 参与 Flink 社区?
简介: 本文首先介绍为何要参与开源社区以及在参与开源社区的过程中需要注意什么,然后重点介绍如何参与 Flink 社区以及在社区里面提交 PR 的整个流程。
主要内容如下:
Tips:点击下方链接可回顾更多社区成长类教程~
社区成长:
https://ververica.cn/developers/flink-training-course3/
本文首先介绍为何要参与开源社区以及在参与开源社区的过程中需要注意什么,然后重点介绍如何参与 Flink 社区以及在社区里面提交 PR 的整个流程。
一、参与开源社区的意义

目前很多大公司都纷纷拥抱开源,从最初只是开始参与开源社区,到近年科技巨头们又陆续将自己的一些项目开源化。作为一个码农来说,参与开源社区肯定对于自己的职业发展是有着巨大好处的。
另外,参与开源社区,你可以和相关领域里面最优秀的人一起工作交流,快速的提升自己。不管在技术讨论、还是贡献代码方面,所有的过程都是公开的。参与到开源社区的讨论交流中,我相信你看到的不仅是最终代码所呈现出来的结果,而且还能了解到更多的设计思想,做到知其然,知其所以然。在社区中,每个人都希望将自己最好的一面给展示出来,这个无疑是促进自身不断进步的动力。
在享受开源社区带给我们好处的同时,我们也可以反哺开源社区。改了某几行代码,或者修正了文档上面某个小错误,这些都是在为开源社区贡献自己的力量。我们与社区之间要相互 build trust,可以从简单的贡献做起。不要因为对某个领域不熟悉或者说贡献太小而有放弃的想法,这是不太对的。
当我们为开源社区做的贡献足够多之后,可能会得到社区的认可,成为社区的 Contributor、Committer、PMC、Apache Member 等等,这是社区对我们个人能力的一种认可。
总结而言,参与开源的意义在于:
二、参与开源社区的原则
参与开源社区,有两个基础且重要的原则需要大家注意:
公开沟通是参与开源社区很重要的原则。任何问题及所有的讨论记录最好都公开化,做到可追溯,尽量避免私下讨论,这样才能更好地发挥社区的力量。
在社区里面,要保持相互尊重。社区的贡献是以自愿为基本原则的,在社区的讨论中要避免情绪化,绝对禁止人身攻击。
三、如何参与 Flink 社区
1.订阅邮件列表

关于邮件列表的更多具体信息:https://flink.apache.org/community.html#mailing-lists
参与 Flink 社区,先从订阅邮件列表入手,上面的表格是 Flink 社区常用的几个邮件及邮件用途信息,建议大家先订阅这几个邮件。订阅方式如下:
1.发送邮件到相应的邮件列表进行订阅 xxx-subscribe@flink.apache.org xxx-unsubscribe@flink.apache.org 2.回复确认邮件
2.参与用户邮件列表讨论
■ 2.1 用户邮件提问注意事项
这几个地方可能有你想要的答案:
Apache Pony:
https://lists.apache.org/list.html?user@flink.apache.org
Nabble:
http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/
StackOverFlow:
https://stackoverflow.com/questions/tagged/apache-flink
例如:使用的 Flink 版本、planner、和问题相关的配置、异常 log、复现问题的步骤;如果可能的话,提供可复现问题的最小功能代码(尽可能去除无关代码);尽量不要在邮件里直接贴图片,如果确实有需要,先将图片上传到外部网站,然后把图片链接贴到邮件里。
■ 2.2 用户邮件提问正反面示例
❌ 缺少Flink版本 ❌ 缺少所用planner ❌ 缺少示例代码

✅ 所用Flink版本 ✅ 作业并发度 ✅ 示例代码 ✅ sink的输出结果 ✅ 详细描述了疑惑的地方

■ 2.3 用户邮件回答问题注意事项
3.参与开发邮件列表讨论
四、如何提交第一个 PR
1.注册 Apache JIRA 账号 / GitHub 账号

2.下载 Flink 代码
■ 2.1 Fork Flink 项目到自己的 github 账号下

■ 2.2 Clone Apache Flink 的代码仓库到本地
git clone https://github.com/apache/flink.git
■ 2.3 添加自己 github 账号下 cloned 的 Flink 仓库
git remote add dianfu https://github.com/dianfu/flink.git
这里的 dianfu 这个名字是随便起的,它在本地代表远程仓库的别名。
3.开发环境准备
■ 3.1 开发环境

■ 3.2 构建项目
在项目根目录下构建,命令如下:
mvn clean install -DskipTests
构建完成后,出现 build-target 目录。
4.创建 JIRA
■ 4.1 大功能、先讨论、再创建
在Flink里面所有大的功能或者是说涉及 API 的改动,都需要先创建 flip。再经过社区讨论,讨论通过之后才能进行开发。
■ 4.2 现存 JIRA
如果有 owner,需要先征求 owner 的同意
没有 owner,在 JIRA 上面 ping 相关模块的 committer,将 JIRA assign 给你(Contributor 没有权限 assign JIRA)。提交 PR 之后,需要 committer 进行review
■ 4.3 新建 JIRA Flink JIRA

5.代码开发
■ 5.1 开发注意事项
■ 5.2 Test Case
■ 5.3 注释、文档
cd docs & sh build_docs.sh –p
访问 http://0.0.0.0:4000/ 可以看到文档效果

■ 5.4 提交代码之前
对于 Java 代码需要在所修改模块下执行:
mvn clean install
对于 Python 代码需要在 flink-python 模块下:
./dev/lint-python
6.提交 PR
■ 6.1 Commit Message

■ 6.2 Push 到个人 GitHub 账号下 fork 的 Flink 仓库
git push dianfu branch_name example:git push dianfu FLINK-16667
■ 6.3 Open PR
上一步 push 完之后,Fork 的 flink 项目会立马显示出刚才 push 的分支,然后点击右边的按钮 (Compare & pull request),就会进入到 PR 的提交页面。

PR 的提交页面,包括了这几种信息:
PR提交到哪里:官方flink仓库的branch名字 PR来自哪里:个人flink仓库的branch名字 Able to merge:是否有冲突 PR标题:[FLINK-XXX][python] Support converting ... PR描述信息

当 PR 提交之后,就会在对应的 JIRA 上面自动生成 PR 链接。
7.测试实验室
■ 7.1 关注实验室的测试结果
当你提交一个 PR 之后,就会触发实验室进行测试。目前是有两个实验室的一个 Travis,一个是 Azure。这个是由于历史原因造成的,目前 Flink 实验室正从 Travis 迁移到 Azure。在迁移完成之前,PR 需要两个实验室都跑通过才能 merge。从下面的图中可以看到两个实验室测试都已通过【SUCCESS】。
■ 7.2 private 个人实验室
如果实验室测试结果失败,可以点击失败链接进入实验室,查看 log 详情。
8.跟进 review 反馈更新 PR
■ 8.1 每一个 review comment 都应该处理
■ 8.2 尽量追加 commit,而不是把新的 commit 和之前的 commit squash 到一起
■ 8.3 修改之后,push 到之前的 branch 即可
git push dianfu branch_name
■ 8.4 PR 时间较久,应先 rebase 最新的 master
git checkout master git pull git checkout branch_name git rebase master git push dianfu branch_name -f
■ 8.5 关注更新之后的 PR 的测试结果
■ 8.6 在 PR 页面 ping 下 Reviewer
■ 8.7 PR merge 之后,关注下 build 邮件列表
■ 8.8 Flink contributors
如果你贡献多了之后,可以在 Flink contributors 这个页面里看到你的贡献,另外在个人的 github 页面,也能看到贡献的记录。

五、其它参与方式
1.技术分享,比如直播、meetup、博客等
Flink 社区直播及 Meetup 嘉宾正在征集中,如果您有想与大家分享的主题,填写下方问卷即可与社区相关同学联系:
https://survey.aliyun.com/apps/zhiliao/SJQZ5xRkK
2.文档贡献,比如文档补充、纠错、翻译等
社区除文档贡献外,还有活动、直播、Meetup 等内容的文章整理,感兴趣的同学可填写下方问卷留下您的联系方式,小松鼠大本营期待您的加入!
https://www.wenjuan.com/s/InAJjm6/
3.检查即将发布的 Release
4.代码 Review
除此之外,您还有多种方式可参与社区,大家请关注社区最新动态~
总体而言,本文主要向大家重点介绍了如何参与 Flink 社区以及在 Flink 社区提交 PR 的整个流程。接下来,大家可以从自己感兴趣的模块开始,积极地参与 Flink 社区,提升自身能力。或许,下一个 Committer 就是你!
作者介绍:
付典,Apache Flink Committer,阿里巴巴技术专家,目前专注于 PyFlink 项目的开发。
Java Shell API Apache Scala 开发工具 流计算 git Python整理:许世伟、秦佳奇(Flink 社区志愿者)
校对:秦佳奇、许世伟(Flink 社区志愿者)来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69918097/viewspace-3119856/ ,如需转载,请注明出处,否则将追究法律责任。