GSoc DolphinScheduler 优秀贡献者获 3600 美元奖金!

 点亮 ⭐️ Star · 照亮开源之路

https://github.com/apache/dolphinscheduler

20f8049b023359422a9cde9d832c52d3.jpeg

  //  

在 Google Summer of Code 2022(GSoc),Apache DolphinScheduler 设立的多个项目得到学生们的积极参与。其中,来自杭州电子科技大学的 肖良玉 同学因在「Python API CLI enhancement」项目中的出色表现,获得 GSoC 组委会发放的 3600 美元奖励!

他是如何参与到 GSoc 活动中的?第一次参加开源活动,他经历了怎样的心路历程?肖同学记录下了自己的心得。

        个人介绍

5ac1910a298a5bd0e524269337a991fc.png

我是肖良玉,现就读于杭州电子科技大学计算机科学与技术专业。

  • GitHub: lyleshaw

  • 语言: Python/Golang, Java(学习中)

  • 项目: Python API CLI enhancement

1

在GSoc初识

DolphinScheduler

尽管在高中时期就接触到了开源软件,但我真正开始接触开源是在 2020 年底,当时因为想做一些小工具而接触到一个开源社区。也是从那时开始,我逐渐地了解开源这件事,慢慢的认同开源精神,也因此决定在开源领域做更多的事情。

在今年四月份,我的实习接近尾声,但我又希望继续做一些有意思的事情,这时刚好朋友告诉我 Google Summer of Code(下称作 GSoC)的申请开始了。GSoC 是一个全球性项目,旨在为学生们和开源、自由软件、技术相关的组织建立联系。GSoC 作为开源方面全球最大的学生活动,非常有挑战性且会收获很多成长。

我主要使用 Python+Golang 两门语言,且没有做底层/编译/嵌入式等方向的经验,这使得我不得不排除了相当一部分社区。在筛选和我技术栈与感兴趣的方向契合的社区及课题时,我一眼就认定 DolphinScheduler 社区的 Python API CLI enhancement(https://cwiki.apache.org/confluence/display/COMDEV/GSoC+2022+Ideas+list#GSoC2022Ideaslist-GSoCPythonAPICLIenhancement),并决定把这个项目作为我今年 GSoC 唯一申请的项目(一个人最多申请三个项目)。

一方面,我很认同 DolphinScheduler 所做的方向;另一方面,这个课题所使用到的技术栈几乎与我完美匹配。因此我立刻邮件联系了钟嘉杰老师(Github: zhongjiajie)咨询项目相关的细节,而嘉杰老师也很快给予了我详细的回复。

在嘉杰老师的指导下,我终于一步步的将整个 DolphinScheduler 项目成功启动起来,同时也制定了详细的项目 Proposal。最终,我在九月份向 GSoC 组委会提交了完成成果,并获得 3600 美元的奖励。

a047700c49247593411cf77320257afe.png

2

关于 Python API CLI 优化

的主要工作

Python API CLI 是 PyDolphinScheduler 的一个组件,它是一个命令行工具,可以帮助开发者通过命令行快速操作 PyDolphinScheduler。但是由于它是一个刚刚创建的项目,所以它目前的功能并不完善,比如,它并不支持复杂的命令,也不支持富文本的展示。

之前的 Python API CLI 工具只有简单的 version 和 config 命令,没有更多的功能。而 PyDolphinScheduler 作为 Dolphinscheduler 的 Python 客户端,理论上应该支持更多的功能,如对 user 和 tenant 等的增删改查操作。另一个问题是,目前数据展示的主要方式还是基于 click 的纯文本,无法展示 task graph 等富文本类型的数据。

这是目前 Python API CLI 存在的问题,也是我改进的目标。

我目前已完成的工作主要可以按以下几个 PR 归类:

  • 在 PR#10913(https://github.com/apache/dolphinscheduler/pull/10913) 中,我在 DolphinScheduler 的 API 中的 Python Gateway 中实现了对 user 、tenant 和 project 的增删改查接口,并对完成其单测。

  • 在 PR#11162(https://github.com/apache/dolphinscheduler/pull/11162) 中,我在 PyDolphinScheduler 中实现了对 user 、tenant 和 project 的增删改查接口的调用,并对完成其单测。

  • 在 PR#12381(https://github.com/apache/dolphinscheduler/pull/12381) 中,我在 PyDolphinScheduler 中实现了对 user 、tenant 和 project 的 CLI 命令的实现,并对 CLI 命令完成单测。

我对于剩余的工作还有三块安排:实现 PyDolphinScheduler 对 workflow 相关命令的支持+实现 PyDolphinScheduler 对 DAG 文件的解析+命令行可视化。

3

我与社区的故事

GSoC 是我与 DolphinScheduler 初识,但并非全部。我觉得作为一个开源的参与者,应当不仅限于项目相关的开发,而是站在总体上解决问题。因此,即便是与 GSoC 主线无关的问题,我也乐于作出一些贡献。

我在 GSoC 初期,研究 DolphinScheduler 文档时发现文档的超链接有一个小问题,因此提出了 Issue#9420(https://github.com/apache/dolphinscheduler/issues/9420) 并在 PR#9421(https://github.com/apache/dolphinscheduler/pull/9421) 中进行了修复。

在项目开发初期,我在使用 docker-compose 启动 DolphinScheduler 时发现 PyDolphinScheduler 未能成功连接 DolphinScheduler,经过和嘉杰老师的讨论意识到这是 docker-compose.yml 的问题,因此提出了 Issue#10652(https://github.com/apache/dolphinscheduler/issues/10652)  并解决。

同样还有 Issue#11277(https://github.com/apache/dolphinscheduler/issues/11277),这个 Issue 是我在开发 Python Gateway 的接口时发现异常没有抛出,在和嘉杰老师讨论后决定重构一下 Python Gateway User 部分的参数检查,并将 createUser 和 updateUser 的参数检查抽象为一个 paramsChecker,这也就有了 PR#11255(https://github.com/apache/dolphinscheduler/pull/11255)。

而对于上述异常抛出的讨论又使得我们发现之前的所有函数都是使用 putMsg(result, Status.XXX); 式的异常处理方式,将异常包在 Msg 里并不是一个好的处理方式,而是应该有异常时直接抛出,因此有了 Issue#11278(https://github.com/apache/dolphinscheduler/issues/11278),这个 Issue 希望能将 DolphinScheduler 的异常处理方式修改掉。

这些贡献都是我在项目开发中发现 DolphinScheduler 时发现的问题,尽管这些贡献与 GSoC 无关,但为 DolphinScheduler 贡献的过程却让我乐在其中。同时在贡献时社区成员的讨论也让我对程序设计收获良多,这也让我体会到开源的意义和乐趣。

在 DolphinScheduler 的贡献中,我对于开源也有了更深的理解。就如同嘉杰老师所说的那样,“能解决一小部分人的需求,就算一个有意义的开源。” 开源最本源的目的自然是解决需求,但却又不止于此。如果每个人都封闭起来,就意味着大家都要重复造轮子,那么软件开发也很难取得多大的进步了。而当每一个人智慧集中起来贡献到一个开源项目时,进步就发生了。

在我整个开发过程中,非常感谢嘉杰老师和强哥(Github: CalvinKirs)以及其他社区成员对我耐心的指导,他们对我参与 DolphinScheduler 的贡献起到了非常大的帮助,也让我更快地学习到了开源相关的事情。

如果你是一位想要参与开源贡献的开发者或学生,我非常建议你尝试一下 DolphinScheduler 社区(https://github.com/apache/dolphinscheduler),社区的同学们都非常热情,我的很多 Issue/PR 下面都会有大家的建议与讨论。

最后,再感谢一下 DolphinScheduler 社区与 GSoC 活动,你们让我在开源领域迈出了一大步 😉

参与贡献

随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

9d829d069edb3439b14bfac5e4bb2da7.png

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

f6926483205ea33076914e85050f75f1.png

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

添加小助手微信时请说明想参与贡献。

来吧,开源社区非常期待您的参与。

< 🐬🐬 >

更多精彩推荐

Apache DolphinScheduler 2.0.7 发布,修复补数及容错故障问题

☞挑战海量数据:基于Apache DolphinScheduler对千亿级数据应用实践

收藏假期干货:Apache DolphinScheduler源码分析系列(超详细)

☞突破单点瓶颈、挑战海量离线任务,Apache Dolphinscheduler在生鲜电商领域的落地实践

☞名额已排到10月 | Apache DolphinScheduler Meetup分享嘉宾继续火热招募中

☞【Meetup讲师】您有一张社区认证讲师证书未领取,点击领取!

Workflow as code+SageMaker, DolphinScheduler的机器学习选股系统新玩法

我知道你在看237824b080e3556590307a35f310afd6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值