如何从 0 到 1 参与 Flink 社区?

简介: 本文首先介绍为何要参与开源社区以及在参与开源社区的过程中需要注意什么,然后重点介绍如何参与 Flink 社区以及在社区里面提交 PR 的整个流程。

整理:许世伟、秦佳奇(Flink 社区志愿者)
校对:秦佳奇、许世伟(Flink 社区志愿者)

摘要:本文根据 Apache Flink 系列直播整理而成,由 Apache Flink Committer,阿里巴巴技术专家付典分享。主要内容如下:

  • 参与开源社区的意义
  • 参与开源社区的原则
  • 如何参与 Flink 社区
  • 如何提交第一个 PR

Tips:点击下方链接可回顾更多社区成长类教程~

本文首先介绍为何要参与开源社区以及在参与开源社区的过程中需要注意什么,然后重点介绍如何参与 Flink 社区以及在社区里面提交 PR 的整个流程。

一、参与开源社区的意义

640 1.png

目前很多大公司都纷纷拥抱开源,从最初只是开始参与开源社区,到近年科技巨头们又陆续将自己的一些项目开源化。作为一个码农来说,参与开源社区肯定对于自己的职业发展是有着巨大好处的。

另外,参与开源社区,你可以和相关领域里面最优秀的人一起工作交流,快速的提升自己。不管在技术讨论、还是贡献代码方面,所有的过程都是公开的。参与到开源社区的讨论交流中,我相信你看到的不仅是最终代码所呈现出来的结果,而且还能了解到更多的设计思想,做到知其然,知其所以然。在社区中,每个人都希望将自己最好的一面给展示出来,这个无疑是促进自身不断进步的动力。

在享受开源社区带给我们好处的同时,我们也可以反哺开源社区。改了某几行代码,或者修正了文档上面某个小错误,这些都是在为开源社区贡献自己的力量。我们与社区之间要相互 build trust,可以从简单的贡献做起。不要因为对某个领域不熟悉或者说贡献太小而有放弃的想法,这是不太对的。

当我们为开源社区做的贡献足够多之后,可能会得到社区的认可,成为社区的 Contributor、Committer、PMC、Apache Member 等等,这是社区对我们个人能力的一种认可。

总结而言,参与开源的意义在于:

  • 顺势而为
  • 无国界导师
  • 为世界带来微小而美好的变化
  • 业界身份证

二、参与开源社区的原则

参与开源社区,有两个基础且重要的原则需要大家注意:

  • 公开沟通

公开沟通是参与开源社区很重要的原则。任何问题及所有的讨论记录最好都公开化,做到可追溯,尽量避免私下讨论,这样才能更好地发挥社区的力量。

  • 保持尊重

在社区里面,要保持相互尊重。社区的贡献是以自愿为基本原则的,在社区的讨论中要避免情绪化,绝对禁止人身攻击。

三、如何参与 Flink 社区

1.订阅邮件列表

表1.jpg

关于邮件列表的更多具体信息: 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

StackOverFlow:
https://stackoverflow.com/questions/tagged/apache-flink

  • 问题描述应尽可能详细

例如:使用的 Flink 版本、planner、和问题相关的配置、异常 log、复现问题的步骤;如果可能的话,提供可复现问题的最小功能代码(尽可能去除无关代码);尽量不要在邮件里直接贴图片,如果确实有需要,先将图片上传到外部网站,然后把图片链接贴到邮件里。

  • 避免将 Flink 使用问题发到开发邮件
  • 尽量用英文在 user 邮件中讨论

■ 2.2 用户邮件提问正反面示例

  • 反面示例
❌ 缺少Flink版本
❌ 缺少所用planner
❌ 缺少示例代码

640 2.png

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

640 3.png

■ 2.3 用户邮件回答问题注意事项

  • 先弄清楚问题再回答(如果对方提供信息不够,可追问清楚)
  • 参与任何自己感兴趣的话题,当然最好是自己熟悉的领域
  • 有不确定的地方,可以抄送可能对这个问题更熟悉的人
  • 回答应该条理清晰、尽可能全面

3.参与开发邮件列表讨论

  • 大功能、先讨论、后开发 [详见:讨论 -> 投票 -> 开发 -> 合并]
  • 邮件标题格式 “[DISCUSS] XXX”
  • 选择熟悉或感兴趣的领域,参与讨论

四、如何提交第一个 PR

1.注册 Apache JIRA 账号 / GitHub 账号

表2.jpg

2.下载 Flink 代码

■ 2.1 Fork Flink 项目到自己的 github 账号下

640 4.png

■ 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.jpg

■ 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

  • 标题清楚
  • 需要标清楚涉及的模块、出现问题的版本
  • 问题描述应尽可能详细
  • 不要使用中文

640 5.png

5.代码开发

■ 5.1 开发注意事项

  • 开发前请阅读 code style
  • 避免引入新的依赖。若有,则依赖的 license 需要满足一些要求
  • 避免引入新的 scala 文件
  • 涉及 API 的修改,需要先讨论再修改
  • 避免和当前 PR 无关的修改
  • 逻辑上独立的修改,可拆分成不同的 commit,提交信息能反应出修改内容

■ 5.2 Test Case

  • 能用 UT 的,尽量不要用 IT
  • 参考已有 Test Case 的写法
  • 不要过度测试

■ 5.3 注释、文档

  • 文档风格
  • 英文 / 中文文档都需要更新
  • 中文文档里的链接应该指向其它中文文档
  • 更新文档、实时查看
cd docs & sh build_docs.sh –p

640 6.png

■ 5.4 提交代码之前

对于 Java 代码需要在所修改模块下执行:

mvn clean install

对于 Python 代码需要在 flink-python 模块下:

./dev/lint-python

6.提交 PR

■ 6.1 Commit Message

  • 格式:FLINK-XXX描述
  • 每个 commit 应该逻辑独立

640 7.png

■ 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 的提交页面。

640 8.png

PR 的提交页面,包括了这几种信息:

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

640 9.png

当 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 都应该处理

  • 接受的 comment,直接在新的 commit 里修改即可
  • 有不同意见的 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 页面,也能看到贡献的记录。

640 10.png

五、其它参与方式

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 项目的开发。

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
运维 大数据 Apache
|
人工智能 Apache 流计算
参与Flink社区活动,免费赢取FFA大会两日通票~
Flink Forward Asia 2024 将于 11 月 29-30 日在上海举行,庆祝 Apache Flink 诞生十周年。大会将回顾 Flink 的技术成就,展望未来十年的发展,并介绍 Flink 2.0 版本。通过三种参与方式,您有机会免费赢取大会两日通票和 Flink 专属周边。
628 13
参与Flink社区活动,免费赢取FFA大会两日通票~
|
11月前
|
存储 大数据 数据处理
您有一份 Apache Flink 社区年度报告请查收~
您有一份 Apache Flink 社区年度报告请查收~
213 0
|
机器学习/深度学习 监控 Serverless
Serverless 应用的监控与调试问题之Flink在内部使用的未来规划,以及接下来有什么打算贡献社区的创新技术
Serverless 应用的监控与调试问题之Flink在内部使用的未来规划,以及接下来有什么打算贡献社区的创新技术
|
消息中间件 SQL Kafka
如何高效接入 Flink: Connecter / Catalog API 核心设计与社区进展
本文整理自阿里云实时计算团队 Apache Flink Committer 和 PMC Member 任庆盛在 FFA 2023 核心技术专场(二)中的分享。
750 1
如何高效接入 Flink: Connecter / Catalog API 核心设计与社区进展
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之社区版有没有办法多张表公用server_id,达到数据源的复用
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
204 4
|
消息中间件 存储 SQL
Flink Connector 社区新动向与开发指南
阿里巴巴开发工程师 Apache Flink Committer 任庆盛,阿里巴巴技术专家 Apache Flink Contributor 罗根,在 Flink Forward Asia 2022 核心技术专场的分享。
1808 1
Flink Connector 社区新动向与开发指南
|
NoSQL Java Apache
说出你和 Flink 社区的小故事,首场线下 ASF 亚洲峰会 10 张门票免费送!
说出你和 Apache Flink 社区的故事,讲述这五年来你的经历和感悟,10 张 Apache 软件基金会(ASF)的官方全球系列大会 CommunityOverCode (原 ApacheCon)门票免费送!
451 0
说出你和 Flink 社区的小故事,首场线下 ASF 亚洲峰会 10 张门票免费送!
|
SQL 机器学习/深度学习 算法
Apache Flink 社区 2022 年度报告:Evolution, Diversity, Connection
通过 Evolution、Diversity、Connection 三个关键词,从年度最佳实践、核心技术演进、开源技术生态等多维度盘点过去一年的成果,与各位开发者一同见证社区成长。
Apache Flink 社区 2022 年度报告:Evolution, Diversity, Connection
|
SQL 机器学习/深度学习 分布式计算
会议总结 | 首次 Flink Batch 社区开发者会议
2023 年 2 月 8 日 Flink Batch 社区开发者会议会议总结。
会议总结 | 首次 Flink Batch 社区开发者会议

热门文章

最新文章

相关产品

  • 实时计算 Flink版