前述

关于我

我是CalvinKirs,目前是Apache DolphinScheduler的Commiter。擅长大数据olap、大数据调度、分布式组件开发等。目前专注于大数据领域核心技术研发。 我也是一名开源爱好者,我要讲的是我从起始给 DolphinScheduler 做贡献到近期加入到易观数科大家庭的故事。

关于 Apache DolphinScheduler社区

Apache DolphinScheduler(incubator) 于17年在易观数科立项,19年3月开源, 19 年8月进入Apache 孵化器,社区发展非常迅速,目前已有 400+ 公司在生产上使用,代码+文档贡献者近200位,社区用户4000 +人。DolphinScheduler (简称DS) 致力于使大数据任务调度开箱即用,它以拖拉拽的可视化方式将各种任务间的关系组装成 DAG(有向无环图),并实时监控整个数据pipeline的运行状态,同时支持失败重试、重跑、恢复失败、补数等大数据常用操作

遇见DolphinScheduler

我是一个有开源情节的人,开源以不同的方式陪伴了我相当长的一段时间,同样也给我带来了一些比较大的改变。

我个人接触的开源项目是比较多的,但是深度贡献的并不多,也是一个偶然的契机接触到DolphinScheduler,从此开始了深度贡献。

选择对味的社区其实很重要,如同恋爱一般,总需要几个回合摸索试探才能决定是否合适,DolphinScheduler社区给我的一个最大的感受就是足够包容,我不认同你,但是我支持你。这是dailidong给我的一个最直观的感受,你的想法不成熟的时候,作为PPMC,他需要对社区负责,他可能不是很认同,但是他支持你去完善去佐证,这个过程中也是很感谢社区的一些其他伙伴,qiaozhanweiTboygaojun2048,lgcarrer(license的大佬)、lenboo(核心流程找他就对了)等,一开始我总有种人微言轻的感觉,一般都处在旁听的状态,毕竟这些贡献者基本上都是各大公司的精英人物。后来发现是我多虑了,大神们其实非常平易近人。也是因为这些人,让我喜欢上DolphinScheduler社区。

社区带给我的影响

随着社区的发展,越来越多同学的加入,我们可能(甚至是必然)会在一些设计上存在一些不同的意见,但这其实也是开源的魅力,对于社区来讲,也是一种好事,不同思想的碰撞才会导致设计趋近于更加完善。也只有这样,DolphinScheduler才能更好走向全球。当然,对于个人来讲,也是一种提升,就我而言,我之前在社区讨论关于通讯序列化方案的想法,我们的导师,吴晟老师问我,为什么不选择protobuf呢,我以前的认知,只体现在一个很片面的范围内,但是吴晟老师从更高层次回答了我所谓的protobuf鸡肋的地方,这确实打开了我的视野。感兴趣的可以去搜邮件列表,我所想要表达的是,开源是一个全球的舞台,会有各种不同的人进来参与,也正是由于这样,你的提升才会更大,因为你不再停留在原有的圈子原有的认知去思考,你会接受各种各样的人来进行review(不仅仅是code,同样包括一些设计等等),这种过程其实也是在逐渐拓宽自己的专业领域与认知。

DolphinScheduler微内核插件化设计

项目的推进导致架构的变化,捐给Apache之后,意味着你要面向全球的用户,不同的用户对于不同场景的需求是不同的,我们更希望的是DolphinScheduler作为一个基础设施提供给用户,给用户提供强大的扩展能力,用户在DolphinScheduler这个平台上去快速扩充自己的功能。

在2020年(近期会发版),高俊老师提出了微内核插件化的架构设计,拿alert来讲,我们alert发版后是支持五种告警方式,这能够满足绝大多数用户的一个需求,但依然有一些需求是没办法满足的,这个时候用户想要自己实现其实很简单,他不需要系统的去了解DolphinScheduler的整个架构,只需要关注alert的扩展接口,对于其他功能来讲是完全隔离的(这也意味着你降低了污染传递,当你的模块出现问题的时候,你不会过多影响其他模块,甚至你可以完全移除你自己的插件),这对于用户来讲,理解成本更低、开发成本测试成本同样更低,对于贡献者来讲亦是如此,降低贡献者门槛,才能使得一个项目走的更远,曲高和寡,对于开源项目来讲同样如此,DolphinScheduler社区目前有很多其他社区的贡献者,比如SkyWalking、ShardingSphere、Dubbo、TubeMq等,调度系统更是与其他大数据生态紧密结合,我们也是希望,通过微内核插件化的方式,使得各个领域的专家都可以以最低成本的贡献进来。

开源的乐趣

姜宁老师讲,开源社区其实是一帮对的人才能够聚在一起,这种过程会让你很享受,我之前收到过一封邮件,是一个印度贡献者的,我merge了他参与Apache DolphinScheduler的第一个PR,他写了大概几百字的一封邮件,表达对于开源的向往以及询问我后续参与贡献的一个途径,我不太确定这是否会导致他从此踏上开源这条路,成为一个深度贡献者,但至少对于他来讲,这一刻他有了深度参与的一个想法,我当时也是因为首次贡献被merge之后于是踏上了开源这条路,我至今依然记得我对于Apache的第一个PR,虽然小,甚至从今天看来,那可能是我贡献的PR中最微不足道的一个,但对于我来讲,它为我打开了一扇门,所以其实到今天,我很乐意给那些初次贡献的贡献者提供深度的一个帮助,帮他们认识开源、走进开源。曾经有人为我打开了一扇门,那我希望我能够给更多的人提供走进这扇门的一个帮助,这可能也是一种属于开源人的传承(BTW,强烈推荐ALC BeiJing)。

马斯洛需求层次理论中讲到人的高级需求,其实对我来讲,通过DolphinScheduler,我达到了自我实现与尊重。

当我写的代码,会运行在数万台服务器上,影响几亿的用户,我也是第一次感觉作为个体和这个世界有了更加紧密的一个联系,这种内心的成就感是非常高的。

当我看到被我merge代码的同学发朋友圈或者邮件的时候,我内心其实也是非常愉快的,我老板说:优秀的人成就自己,卓越的人成就他人,我可能不是很优秀的人,但如果能够从一件小事上影响到别人,对于我来讲,我也是很愉悦的(成年人的快乐有时候就这么简单)。

尾篇 致下一个贡献者的你

大侠在ALC Beijing-开源到底有多难中以开源,不是天才的甜点,而是勤奋者的盛宴为题的分享有几句话是比较触动我的

  1. “中国没有开源”这个观点我是不愿意相信的。我相信这一代年轻人,不仅仅是程序猿,而是越来越多的人,愿意参加到各行各业的非盈利团体当中去,贡献自己的想法、代码、知识,让这个世界变得更加美好。
  2. 我相信哪怕我们这一代人看不到开源的春天,我们的下一代人也不应该再看到开源的“雾霾天”。于是我们就积攒了更多的力量,筹备了一年,把我们自己内部使用的一个产品 Dolphin Scheduler 进行了开源。

我身边参与开源的人其实蛮多的,但倘若放到整个公司来讲,其实也并不多,上家公司,产研三四百多人,但是是Apache commiter或者PMC的仅仅只有三人,然而我们整个基础设施一大半是在开源软件的基础上进行开发的(其中一大半是ASF的),对于所使用到的开源项目,我们基本都是内部单独维护了一个分支,这样做当然有好处,我们可以跑的很快,有什么问题可以很快修复,但是很少有人会把这些贡献给上游,最终结果导致和上游差异过大,彻底和社区脱节。大家的现状是很忙,没有时间思考,大多数人不断的掉进坑里面再爬出来,但如果每个人都做出一点点努力,那么这样其实成本是最少的。你贡献一点,他贡献一点,那么其实我们的工作量会减少很多,因为社区帮你做了。这也是开源的力量,还是回到那句话,一个人可以走的很快,但一群人可以走得很远。

熟悉吴晟老师的人都知道吴晟老师喜欢用『各怀鬼胎』来形容开源社区,我想说的是,无论你怀有什么样的心思(又或者仅仅是单纯的喜欢开源),透过开源确实可以帮你达到一些需求的满足,无论是一份光鲜的履历,或者一份 good job,或者隐形的人脉、技术实力的提升、多一点谈资等等。但这个前提是你去参与,去贡献。(BTW,我本人其实也是开源的受益者,因为参与开源,我有幸加入了易观,大多数企业对于开源贡献者还是比较友好的,吴晟老师的一次分享,有数据显示:87%的雇主希望招聘到具备开源能力的员工,而55%的开源业内人士表示他们可以轻松地找到一份新工作。)

中国并不缺乏优秀的工程师,缺乏的仅仅是如何正确的认识开源,参与开源。今天的中国开源其实已经非常好了,有很多前辈以及组织在开源这个领域为我们进行铺路布道,比如开源社、ALC Beijing等,我们所缺少的,仅仅是大家的参与。有一句很老套的话:如果不是现在,那是什么时候?如果不是你,那会是谁?我是CalvinKirs,我在DolphinScheduler社区等你。