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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 本文首先介绍为何要参与开源社区以及在参与开源社区的过程中需要注意什么,然后重点介绍如何参与 Flink 社区以及在社区里面提交 PR 的整个流程。

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

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

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

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

社区成长:
https://ververica.cn/developers/flink-training-course3/

本文首先介绍为何要参与开源社区以及在参与开源社区的过程中需要注意什么,然后重点介绍如何参与 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
Nabble:
http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/
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

访问 http://0.0.0.0:4000/ 可以看到文档效果

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轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
4月前
|
存储 监控 大数据
阿里云实时计算Flink在多行业的应用和实践
本文整理自 Flink Forward Asia 2023 中闭门会的分享。主要分享实时计算在各行业的应用实践,对回归实时计算的重点场景进行介绍以及企业如何使用实时计算技术,并且提供一些在技术架构上的参考建议。
821 7
阿里云实时计算Flink在多行业的应用和实践
|
18天前
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
703 10
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
|
3月前
|
SQL 消息中间件 Kafka
实时计算 Flink版产品使用问题之如何在EMR-Flink的Flink SOL中针对source表单独设置并行度
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
15天前
|
SQL 运维 数据可视化
阿里云实时计算Flink版产品体验测评
阿里云实时计算Flink基于Apache Flink构建,提供一站式实时大数据分析平台,支持端到端亚秒级实时数据分析,适用于实时大屏、实时报表、实时ETL和风控监测等场景,具备高性价比、开发效率、运维管理和企业安全等优势。
zdl
|
6天前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
28 0
|
1月前
|
运维 搜索推荐 数据安全/隐私保护
阿里云实时计算Flink版测评报告
阿里云实时计算Flink版在用户行为分析与标签画像场景中表现出色,通过实时处理电商平台用户行为数据,生成用户兴趣偏好和标签,提升推荐系统效率。该服务具备高稳定性、低延迟、高吞吐量,支持按需计费,显著降低运维成本,提高开发效率。
67 1
|
1月前
|
运维 数据处理 Apache
数据实时计算产品对比测评报告:阿里云实时计算Flink版
数据实时计算产品对比测评报告:阿里云实时计算Flink版
|
2月前
|
存储 运维 监控
阿里云实时计算Flink版的评测
阿里云实时计算Flink版的评测
76 15
|
1月前
|
运维 监控 Serverless
阿里云实时计算Flink版评测报告
阿里云实时计算Flink版是一款全托管的Serverless实时流处理服务,基于Apache Flink构建,提供企业级增值功能。本文从稳定性、性能、开发运维、安全性和成本效益等方面全面评测该产品,展示其在实时数据处理中的卓越表现和高投资回报率。

相关产品

  • 实时计算 Flink版