2021 年 8 月,微众银行开源的计算中间件项目 Linkis,全票通过了国际顶级开源组织 Apache 软件基金会 (简称 ASF) 的孵化器投票决议。自此,Linkis 项目多了一个新的身份:ASF 的孵化项目 – Apache Linkis (Incubator),这意味 Linkis 向国际顶级项目迈出了重要的第一步。
Linkis 项目最初由微众银行 WeDataSphere 团队在 2019 年 7 月开源,此后,项目社区陆续吸引了来自天翼云、Boss 直聘、萨摩耶云、荣耀和爱奇艺等公司的团队或个人参与共建,组成了初始的 PMC 团队。PMC 作为项目管理委员会,承担了规划 Linkis 项目的版本和计划,推动和治理 Linkis 开源社区的职责。
我们知道,每一个成功的开源项目背后都离不开一个活跃的开发者社区,如 Apache 社区就有来自全球各地上万名开发者的参与,才造就了今天的辉煌。反过来说,如何保持项目社区活跃,不断吸引更多的开发者加入进来,为社区提供新鲜血液,是一个开源项目可持续发展的关键,也是每一个项目管理者必须要考虑的事情。
近日,Linkis 项目团队就一口气官宣了 5 位优秀的新晋 Committer,他们来自不同的公司,拥有不同的技术背景,在各自擅长的领域为项目做出了杰出的贡献,帮助社区发展壮大。从他们身上,我们可以了解到在“Apache Way”治下的开源项目社区如何推广纳新;个人开发者又如何参与开源贡献,成长为被社区官方认可的 Committer,收获意义非凡的 Apache 域名邮箱,实现个人价值和社会价值的双向奔赴。
以下是 OSCHINA 与五位新晋 Apache Linkis Committer 的对话:
陆小龙:来自天翼云,目前在公司内负责数据中台的研发,主要擅长的领域是数据处理。与 Linkis 结缘源自公司内部业务需要,其所在团队也是国内最早在生产环境落地 Linkis 全家桶的团队之一。
徐杰:和小龙一样是来自天翼云的大数据工程师。去年刚刚入职,刚进公司接触的第一个项目就是 Linkis,因此与项目结缘。
张华金:目前在广州银行信用卡中心负责大数据开发的相关工作,拥有 14 年的金融行业软件研发经验,担任过数据开发、项目经理、业务顾问等岗位。同时也是一位开源爱好者,为人比较热心,热衷于技术研究和交流。在项目中面临大数据平台的搭建挑战,在商业软件和开源方案的技术选型中看中 Apache Linkis,从此与项目结缘。
陶克路:7 年大数据行业经验,曾就职于阿里云,目前在字节跳动担任大数据工程师,团队在做云原生计算方面的工作。最开始接触到 Linkis 是 Apache 大数据组件在这方面缺少一个开源的项目,看到 Linkis 是这个领域的第一个项目,感觉挺有意思的,就利用业余时间参与贡献并坚持了下来。
介龙平:2018 年毕业以来一直从事大数据相关工作,目前就职于爱奇艺的大数据部门,主要负责大数据存储相关的底层组件维护,也热衷于这些组件上层系统的开发。个人喜欢参与开源社区贡献,曾计划用业余时间开发一个面向所有开发者的一站式大数据 Web 平台。因工作业务需要接触到了 Linkis 项目,发现其技术与自己当初的设想非常契合,因此参与到项目的贡献中。业余爱好是摄影,希望能借此提升自己的审美鉴赏能力。
从新手到 Apache Committer 的升级之路
OSCHINA:看了各位与 Apache Linkis 结缘的故事,似乎是各有各的机缘巧合。当然,我们都知道从一名普通开源贡献者晋升为受 Apache 官方认证的 Committer 绝非易事,不仅需要长期的技术积累,还要深入参与到社区活动中去,才能获得项目团队成员的认可。
我们社区里也存在很多想要为开源项目做贡献,却不知道应该从哪里开始的开发者。各位能否结合自己的经验,为大家科普一下如何从 0 开始为开源项目做贡献,并一步步成长为 Apache Committer 的呢?
介龙平:我参与 Linkis 社区贡献一方面是兴趣爱好使然,另一方面,现实点来说就是想“混”一个 Committer 和一个 Apache 域名的邮箱。但就是有了这种动力,让我可以坚持贡献于开源社区。
所以我认为作为一名新人开发者想要参与开源贡献,找到自己的驱动力非常重要。
其实在参与 Linkis 项目之前,我就有过一些参与开源项目贡献的经验。早期的我还没有工作上的需要参与开源,这时我参与开源的形式是业余时间把自己写的一些项目放到 GitHub 上跟大家分享,也有别的公司的伙伴去使用我开源的项目。在这个过程中我就会享受到一种成就感,也能形成自己的一个驱动力,来贡献于开源社区。
至于如何从新人成长为 Apache Committer,结合我自己的经验,我是给自己划分了以下几个阶段:
初始阶段也就是小白阶段,首先要做的是就是对 Linkis 项目本身有一个尽可能清晰的了解。了解途径可以是它的官方文档,一些其他大佬写的项目技术博客,还有在 B 站上 Linkis 架构解密的视频等等。通过这些途径帮助我对 Linkis 项目有了比较清晰的认知。
第二个阶段就是使用阶段。在我们对项目有了清晰的了解之后,就要把项目真正的用起来。这个过程可以先是在自己搭建的一个测试环境中尝试部署这个系统,然后再逐渐在自己公司中的业务场景把这个组件引入进去使用。就 Linkis 来说,这个项目还是比较复杂的,它的底层基于微服务架构,包括 DSS 平台和其他组件服务加起来就有十几种。初期使用时我们的团队也遇到了比较大的挑战,所以早期在测试环境的模拟试用非常重要。
第三个阶段就是二次开发阶段,进入这个阶段后基本上就是比较成熟的贡献者了。这个阶段当自己对 Linkis 项目有一些好的想法,发现了项目的 bug 或者是可以完善的地方,就能提交一手,然后把代码克隆下来,修改完测试好之后再回馈社区,以这样的方式去参与项目的贡献。
回顾这三个阶段,其实在整个过程中难免会遇到各种各样的问题,所以还有很重要的一点就是要与项目社区保持一个积极交流的状态,碰到问题要及时反馈,这样也会更有利于我们在社区中的成长。
徐杰:分享一下我的经验。我毕业以后就是做 DBA(数据库开发工程师) ,那时在业界中商业数据库市场占比较大,DBA 使用的大部分也都是商业数据库,其实当时我们一直看不上开源产品,就觉得开源好像没什么前途 。但现在感觉是整个反了过来,自己也已经一头扎进开源社区。这其实也是一种供需关系的变化吧,开源就是这样,用的人多了,就不停地有人给你改 bug,然后软件就会变得越来越好。
至于要成长为一个 Apache Committer,我觉得首先要循序渐进。如果一个刚从事大数据的新人上来就搞 Linkis 的话,我觉得他直接放弃的概率会比较大,因为 Linkis 集成的东西对大数据新手来说还是非常困难的。应该先从一些比较常见的大数据组件开始学习,当你有了一定基础的时候,再开始尝试慢慢摸索 Linkis 这样的项目,就能从中发现不少的乐趣。
陶克路:我觉得大家要参与开源,还是要先明确一下自己想要从中获得什么东西。比如说参与开源是想把你的代码上传,给大家看到你的开发记录;还是说你想去达成开源界的一些“成就”,比如说获得 Apache 域名的邮箱之类的。我觉得这些都是参与开源贡献的常见理由,是可以支撑你往下走的动力。如果说前期没有一个正当理由的话,是很难往下去持续参与贡献的。
第二点,如果我们想要参与开源社区贡献的话,还需要有人带,我觉得这点也是非常重要的。在这个过程中,就需要大家不断地去跟社区的老成员交流,只有通过与他们的交流才能知道项目现在需要什么,有哪些东西是我们可以去做的。在这个过程中,我们就会慢慢发现社区里自己力所能及的事情其实非常多,比如对新人来说,最开始可能只是修一个文档或官网中的错别字,或者改一个小 bug 之类的,这些前期的简单工作能让你熟悉参与开源贡献的 pr 流程,以及对项目本身的慢慢熟悉。再深入之后你会发现有一些更大的事情,你也有了能力去主导,然后也可以去实现自己的想法。在这样一个由浅入深的参与过程中,会带给你很多正向的回馈,你的成就感会越来越强。
如果有人想参与 Linkis 的话,我建议可以先跟社区的同学交流交流,不要自己上来就钻进去蒙头搞,一旦遇到困难很难走下去。以上就是我觉得对于一个新人来说,参与开源社区比较重要的几点。
张华金:从我的经历上来看呢,我认为从零开始参与开源贡献需要有一个切入点,也就是克路老师说的,你想要的是什么。比如说我当时的一个切入点就是我们公司确实有建设平台的一个需求。然后我感觉就是你确实也需要对项目进行一些了解,龙平也说了非常多的一些了解项目的渠道,比如项目官网,比如说一些技术文档,以及 B 站上面的一些视频的资源等等。
我的建议是新手还得亲自去对项目实操,去进行一些编译、部署或者试用。在这个过程中,可能会碰到一些问题,比如说文档不是太完善,或者说可能会有一些进行不下去的情况。这个时候就可以跟社区里进行多一些交流互动,可以尝试参与完善这些文档或者修一些简单的 bug。有了一定的经验以后就可以尝试在自己擅长的领域里面对项目社区进行贡献,比如说容器化或者实现一些新的特性。
开源社区如何正确纳新?
OSCHINA:各位 Committer 虽然不是项目管理者,但从开发者的视角来看,Apache Linkis 社区在纳新方面做了哪些举措才吸引了各位的加入?在这个过程中 Linkis 社区的管理者或者老成员提供了哪些帮助?
介龙平:最早吸引我的是 Linkis 社区举办的一系列活动。让我印象最深的是上一届的技术征文,还有去年的 meetup —— 就是由各家公司的大佬分享他们用 Linkis 和 DSS 在自己团队内部的一些应用场景。还有 Linkis 公众号推送的文章,B 站上分享 Linkis 技术视频,这些我都反反复复看了好多遍。
就是这些案例分享让我得到了启发,因为我们平时在大数据平台方面也会遇到一些问题,而在这些案例分享中他们用 Linkis 和 DSS 解决了这些问题,这就会给其他一些团队或者公司带来启发。所以我觉得当时 Linkis 社区举办的 meetup 跟征文活动介绍的那些 Linkis 的应用实践,还是比较吸引外部团队参与进来的。
当初吸引我参与 Linkis 贡献的还有社区的魅力。Linkis 社区是一个非常活跃,包容性很强,同时汇聚了各方大佬的社区。我们团队之前在使用 Linkis 时,遇到过很多复杂的问题,比如引擎卡住等等,Linkis 社区的大佬就跟我们一起分析服务日志,寻找问题的根源,并最终帮助我们解决了问题。
社区的老成员也给我们提供了很多有用的建议。如果你是一个想参与 Linkis 社区开发的同学,但是你不知道从哪个功能点或者从哪个方面入手,社区群里面就有一个文档规划了各种各样的功能点,你可以在里面找到自己感兴趣、并可以参与贡献的功能模块,然后去参与开发。
我再说一下 Linkis 项目本身,与其他开源项目相比,Linkis 的代码和架构复杂度其实都是非常高的,底层代码涉及 java,Scala 等,然后里面各种设计模式,各种抽象封装,一些核心流程对新人来说也比较晦涩难懂。之前我在熟悉这些核心流程时,也是社区大佬给我提供了很多的帮助。同时我在这里也期待社区在源码分析层面上,可以有更多开发者贡献更多的文章或者视频,也希望社区大佬继续带带我们。
陶克路:Linkis 社区对新人的吸引就是有一个正向的反馈,这点好在让大家感觉到自己是在参与这个社区。比如说最开始大家可能只是修了很简单的几个 bug,社区就会送一件 T 恤之类的礼品表示感谢,这让大家感觉这个社区确实是对开发者很友好。
当时也是一位社区前辈问我有没有兴趣参与 Linkis,搞一个新的版本,其实我那段时间工作上比较忙,如果当时没有社区老成员的联系,可能后面就不一定会去参与这个项目了。
所以我觉得对一个项目社区来说,不管是给开发者提供正向反馈还是提供适当引导,都是对开发者友好的体现,给新人参与者整体的感觉就会非常好。
还有一点,平时在社区中,有时候讨论事情每个人会有不同的想法,这个时候如果说你去主导一个特性的话,你可能就要想一想,你怎么去说服别人了。这个过程也是挺有趣的,比如说大家的知识背景、工作背景、擅长的领域都不一样,你怎么从他的角度考虑去把这个问题解决,或者说怎么去从他角度让他认可你的想法,认可你制作的方案,我觉得这个过程还是挺有趣的。大家,可以参与到社区中来体验一下。
张华金:从我的角度来看,Linkis 的双周会,版本发布会等,这些可以让开发者直接跟社区的团队进行沟通的方式,是比较吸引我的。另外,Linkis 社区团队这边会定期整理一些比较容易修复的新手任务,这个也是对新手非常友好的举措。还有之前各位提到很多的,社区提供的大量文档跟指引,还有视频等资源,质量都比较高,这些都是开源社区能够吸引新人参与的优势。
另外,说到 Linkis 社区的老成员,他们确实给了我非常多的帮助。比如说他们会帮助我们在平时的开发过程中给出具体的一些方案,一些思路,或者讨论一些技术细节方面的问题。老成员们都比较平和,也很好相处。
陆小龙:正如几位所说,我觉得 Linkis 社区首先是对开发者真的非常友好。我们社区的群非常活跃,如果有人在群里提问,很多社区成员都会积极的去回答他的问题。2019 年的时候我刚加入社区,Linkis 当时对我来说部署的门槛还是有点高。一开始我都不好意思在群里提问,都是私聊社区里的大佬们,他们都用自己业余的时间来帮我耐心地解答,非常感激他们。所以后来我对 Linkis 熟悉以后,看到社区里有人提问,我都会尽力去帮大家解答。
如何平衡开源贡献与本职工作?
OSCHINA:我们在社区中常常听到一些声音,说在国内的大环境下,加班严重、996 盛行,很多人难以抽出时间参与开源。那么各位是如何平衡开源贡献与日常工作的。或者说如何说服老板支持我们搞开源,甚至在更高的公司层面使用和支持开源?
陶克路:我觉得确实没有特别好的办法吧,因为每个人时间精力都是有限的,如果想要做这个东西,肯定是有所取舍的。如果说你的工作时间是固定的,那么你就只能用娱乐的时间去做这个事情,这个是没有办法的,毕竟每个人时间都是有限的。
徐杰:确实如此,个人参与开源贡献最好是与工作内容结合,否则你的压力就太大了。如果说你是业余时间参与开源的话,那就是靠兴趣爱好支撑,就像刚才小龙讲的,Linkis 社区的一些老成员永远守在电脑旁边回答大家的问题,我觉得他们就是有着对社区的热爱,有了这份热爱才能坚持下来。所以如果说你工作中用不到,然后你也不是太喜欢这件事情的话,那的确也没什么太好的办法来平衡。
陆小龙:这块的话我觉得还是这样的,我们做的开源工作最好还是和公司业务方向一致会比较好。就像前面几位老师说的,人的精力还是有限的。以公司的业务为目标参与开源,对社区、公司、个人来说实际上是一个相互促进的过程,能达成三方共赢的状态。像我们现在的状态就是,公司在业务上确实需要 Linkis 这样的项目,我们在工作中也会给 Linkis 社区做出贡献。至于说完全出于个人爱好参与开源用爱发电,我觉得只要你感兴趣,那一切都不是问题。
Apache Linkis 项目详情:https://www.oschina.net/p/linkis
Apache Linkis 代码仓库:https://gitee.com/WeBank/Linkis