自 2016 年 1 月正式开源,ShardingSphere 的开源之路已走过了 6 年多的时间。在这 6 年中,有越来越多的开发者不求回报主动参与到 ShardingSphere 项目建设中来,推动着项目与社区的繁荣。同时 ShardingSphere 社区的成长,也离不开社区成员在代码、案例、文档等诸多方面的持续贡献,尤其是社区中 18 位 PMC 成员,他们不仅是在各个岗位上的团队核心,也是热衷于维护 ShardingSphere 社区的技术中坚力量。
2022 年 7 月,Apache ShardingSphere PMC 团队迎来了一位新成员–端正强,目前就职于 SphereEx,担任高级中间件工程师。主要负责 ShardingSphere 内核模块的研发,对于海量数据的分库分表有着丰富的实践经验。
自 2018 年接触到 ShardingSphere 社区后,端正强从最基础的文档翻译工作开始,一步步深入到 ShardingSphere 能力的核心。在他看来,因为热爱,所以坚持。对于编程和开源的热爱,正是推动他走上代码这条『不归路』最核心动力。
一、比起“被动索取”我在“主动付出”的过程中收获更多
工程师接触开源大多是源于工作需要,由于在工作中使用了某些开源软件,为了更好地掌握这项技术,就需要深入学习项目源码的核心原理。一步一步,了解得越多,所做的贡献也越来越多。
端正强也是如此。起初他主要负责公司内部 SASS 系统商品中心的维护,后面随着公司业务的快速发展,商品数据不断增长,数十亿的商品数据给单机 MySQL 数据库带来了巨大的压力,为了提升系统的稳定性和查询性能,他主导了公司内部商品系统分库分表的选型和落地。在对市面上多款分库分表工具的考虑后,综合考虑社区活跃度和功能完善度,最终毫无悬念地选择了 ShardingSphere。但是在落地 ShardingSphere 的过程中,他发现其中仍然有不少 SQL 无法支持。为了解决这些问题,减少整体业务改造的成本,端正强选择亲自参与到 ShardingSphere 社区中来完善这些 SQL,并最终将成果反馈到社区中。
在参与过程中,来自社区的干预是极少的,这最大化发挥了每个人思维层面的不同的优势,这也是开源项目往往会越来越庞大的原因。但,自由度高并不意味着没有方向。
社区之所以被称作社区,协作、互助就成为离不开的关键词,对于一个活跃的社区来说,更是如此。端正强对于社区印象最深刻的就是社区前辈耐心地指导和帮助,事无巨细。从完成最初一个 Scaling 文档翻译并提交后,多位社区的 PMC 和 Committer 留下了多条 review 建议。这种认真的态度,在不求回报的开源社区中,是弥足珍贵的。
二、『热爱』是我坚持开源最核心的动力
和大多数开发者参与开源的经历一样,端正强也循着由浅入深、从入门到精通的路径。在个性深处,也有着那么一股子『轴劲』。
在大学地理科学的地理信息系统、遥感分析等课程中,需要编写代码对系统进行二次开发,以及使用算法对遥感影像进行分析变换,编程能力在其中发挥出了相当重要的作用。后续他又参与了数学建模、可视化数据分析等编程实践比赛,这些经历都帮助他打下了良好的编程基础,也埋下了代码的种子。最后选择走上工程师的道路,也是由于对编程的热爱,希望将自己的兴趣和工作结合到一起,不断地追求进度和突破。
最开始参与 ShardingSphere 项目,端正强是从最基础的文档和单元测试开始,然后逐步学习内部实现。有了一定积累之后,又参与了接入端 API 的改造,进而了解到 ShardingSphere 内核的逻辑。后续在社区的配合下,通过深入学习内核逻辑,逐步贡献了 INSERTSELECT, REPLACE INTO 等 SQL 语句的支持。这些,都得益于端正强自己能在社区中坚持下来。
很多工程师都会愿意参与到开源社区中来,一次两次图个新鲜还可以,但时间一长,相较于如此大基数的开发者群体来说,能坚持下来的无疑就属于凤毛麟角了。
当然也可以理解,开源对于大多数人来说都是一次『图新鲜』的过程,长期不求回报的奉献无异于个人『苦修』。最开始的无人问津、没有回报等个中滋味并不好受。如果不是发自内心的热爱和认同开源,一定很难坚持下来。
端正强认为自己之所以能持续投入到开源项目中来,最主要还是源于一名理工男对编程的喜爱以及对开源文化、开源模式的认可。此外,『Apache』在开源领域也是一块『金字招牌』,能够为 Apache 旗下的顶级开源项目贡献核心代码,对于技术人来说这种荣誉感是不言而喻的。
三、社区与公司:如果能做同一件事就最好不过了
一个人可以走得很快,但一群人可以走得更远。而这,也是端正强选择加入到 SphereEx 的原因。
2021 年,Apache ShardingSphere 作者张亮创立了商业化公司 SphereEx。作为一家由全球顶级开源项目 ShardingSphere 脱胎而出的商业化公司,SpereEx 比任何人都清楚开源对于工程师的价值,不仅在公司层面非常倡导工程师加入开源,在日常工作层面更是为员工提供了全职做开源的机会。因此,在加入到 SphereEx 后,所做的事情和之前并没有太大差异。截止目前,在端正强的日常工作中,有很大一部分是依然负责 ShardingSphere 内核模块的维护和研发,包括数据分片、加解密、读写分离、联邦查询等功能。
开源理念和 ShardingSphere 技术布道,已经成为端正强日常工作中非常重要的一部分。正是因为 ShardingSphere 和 SphereEx,极大扩展了端正强本身的技术视野,也让他能够有机会迈入到分布式数据库这个新兴领域。
在参与开源的过程中,许多人会感觉到迷茫,难以了解这个项目的全貌。对于端正强来说也是如此,他在向 ShardingSphere 贡献的过程中遇到的最大困难就是对于项目的把控不足。由于对项目缺乏整体理解,往往可能“只见树木,不见森林”,解决一个问题可能会在其它方面引入一个新的问题,对项目缺乏整体把控一度让他非常苦恼。而这也是 SphereEx 公司成立的价值所在。
在 SphereEx 公司成立后,相当于 Apache ShardingSphere 项目本身拥有了更加稳定的更新团队,项目管理和发展路径也更加科学。
四、从 Committer 到 PMC:荣誉与责任并举
从项目 Committer 到 PMC,也就意味着从参与者变成了管理者,这种角色的转变,更多体现在内心责任感层面上。作为项目的 Committer,可能只需要关注自己认领的任务并将其实现就可以了。但对于 PMC 而言,不仅需要参与功能的研发,还需要时刻关注社区的发展,积极引导新的开发者参与社区,让社区有源源不断的新人加入进来,保持社区长期的活跃度。
而作为新晋 PMC,面对开发者,端正强也给到了自己的建议:
-
首先应明确自己感兴趣的方向,ShardingSphere 中含有 200 多个模块,可以选择一个自己感兴趣的模块作为起点进行参与;
-
阅读该模块的功能和设计文档,文档能够帮助快速建立起你对功能的整体认识;
-
在社区认领标记为 good first issue 的任务,通过这些入门级任务可以熟悉参与开源的流程规范,通过单元测试的阅读,也能够加深对代码逻辑的理解;
-
积极参与相关 bug 的修复,不用担心自己所做的会不会有问题,ShardingSphere 社区的导师也会在 review 过程中提供建议,帮助大家更好地融入社区;
-
在对某个模块有比较深刻的理解之后,可以延伸到其它模块,了解不同模块之间的关系,逐步对 ShardingSphere 整体建立全局认识。
最后,作为一个包容、开放的全球开源社区,ShardingSphere 欢迎越来越多的小伙伴加入进来,共同完善 ShardingSphere 周边能力与数据库生态。