夜天之书 #63 上游优先的故事 6 Maintainer

前排提示,本文全文长 1.6w 字,由十个故事组成。出于微信公众号的展示特点,我将其切成若干个部分分开推送。如果想要单页读完全部内容,请点击阅读原文跳转网页,网页展示有目录,可以快速导航。

match-template

站在维护者的角度,我也处理过其他社群成员出于上游优先理念提交的请求。

TiKV 的 maintainer @andylokandy 参与到另一个 Rust 数据系统项目 Databend[1] 的开发以后,在实际编码的过程里发现自己需要和 TiKV 里内部的模块 match-template 相似的功能。

虽然 match-template 模块的代码不过几百行,不过 Andy 没有想着简单拷贝代码,而是希望 TiKV 社群能够把这个模块 promote 成一个顶级项目,并且在 Rust 的中央资源库 crates.io 上发布。

•Transfer components/match_template to tikv org[2]

这个提案得到了其他 maintainer 的支持。作为 TiKV Infra Team 的在编人员,我自然很乐意帮忙完成相关设定和发布的工作。在一个简单的社群投票之后,我花了一个小时左右的时间把新仓库创建、match-template[3] 库发布和相关权限设置的工作都做好了。隔天,Andy 就在 Databend 的 PR-6712[4] 里用上了这个库。

Andy 其实比我还要晚毕业一年,不过我们都是从刚一毕业甚至还在学校的时候就开始参与开源社群的。开源社群广泛合作的理念根植在这样环境里成长起来的新一代开发者,对于他们(我们)来说,上游优先是再正常不过的事情了。

Pulsar Flink Connector

这个例子里,我同时拥有公司员工和上游维护者两顶帽子[5]

一方面,作为 Flink Committer 的我是 Flink 社群的维护者,拥有合并补丁的权限。另一方面,作为公司员工的我因为 Flink 的经历自然地想要帮助公司业务依赖的 Pulsar Flink Connector[6] 和上游更好的协作。

在我和公司同事 Yufan 的合作下,我们把 Pulsar Connector 的端到端测试覆盖、一系列缺陷修复和新功能实现推到了上游。由于公司的客户和 Pulsar 软件的用户不都是使用最新版本,我们还把缺陷修复和端到端测试的部分推到了上游维护的其他过往版本。

这可能是公司员工角色的开发者一个典型的特征。作为个人开发者,往往没有太多版本依赖包袱,只需要最新版本里有自己提交的补丁,追到最新版本就行。但是在公司里许多历史问题累积的应用系统的环境中,激进地升级版本可能会带来其他问题。因此他们做上游优先的反馈的时候,可能会更加关注修复能否被 backport 到自己使用的版本上。

通过与上游的紧密合作,Pulsar Flink Connector 成为了 Flink 官方维护和发布的 Connector 的一部分,让 Flink PMC 为这一软件背书,从而使得用户采用的倾向性更强。同时,代码进入上游跟随上游迭代,添加的相关测试保证 Connector 功能的测试被上游回归测试所包含。如果上游在核心模块做了影响 Connector 的改动,可以提醒开发者相应调整关联代码,或者至少维护这个 Connector 的 Yufan 能够知悉。

这也是我时隔一年以后重新参与 Flink 开发活动,并间接导致了阅读代码的过程中发现和解决了上面提到的 Spotless 的问题。可以看到,存在一定用户基数的开源软件的生命周期相对都比较长,作为上游维护者,有可能因为公司上游优先的活动而重新回到社群。

这里值得一提的另一个例子是 Gyula Fora 和 Márton Balassi 发起的 Flink Kubernetes Operator[7] 项目。

Gyula Fora 和 Márton Balassi 是 Flink Streaming API 的核心作者,在 2014 年向 Flink 提交了几乎改变项目性质的重要改动并成为 PMC 成员之后,他们从 2016 年起几乎就从上游社群消失了。

今年一月份,这两位开发者一起加入苹果公司并开始用 Flink 搭建数据流水线,在生产部署的场景里遇到了需要 Flink Kubernetes Operator 的需求。由于上游没有提供相应的软件,加上苹果公司的数据流水线只是成本的一部分,并不需要依靠 Flink Kubernetes Operator 来提供商业竞争力,他们于是在公司内部实现了初版以后,就在上游社群提交议案发起新项目。

目前,Flink Kubernetes Operator 已经发布了 1.2.0 版本,并且持续快速迭代中。这个软件现在不止是苹果自己在用,蚂蚁集团和阿里巴巴集团也开始关注和整合这部分代码,回推公司内部的实现,避免内部实现和上游软件产生方向上分歧。

References

[1] Databend: https://github.com/datafuselabs/databend
[2] Transfer components/match_template to tikv org: https://github.com/tikv/community/issues/181
[3] match-template: https://crates.io/crates/match-template
[4] PR-6712: https://github.com/datafuselabs/databend/pull/6712
[5] 两顶帽子: https://www.apache.org/foundation/how-it-works.html#hats
[6] Pulsar Flink Connector: https://github.com/streamnative/flink
[7] Flink Kubernetes Operator: https://github.com/apache/flink-kubernetes-operator

猜你喜欢

转载自blog.csdn.net/weixin_44723515/article/details/127255640
63
今日推荐