从开源小白到深度参与者
2025 年 4 月 22 日、7 月 6 日,经 Apache IoTDB 社区投票,陈哲涵、彭俊植成为时序数据库 Apache IoTDB Committer。他们的经历有很多“异曲同工”之处:都是第一次参与开源社区,都无比认可 IoTDB 的发展前景,都认为参与开源带给他们的成就感是无可替代的。今天,请来听听他们的心理历程。
陈哲涵
我是清华大学毕业的陈哲涵,从大三下学期开始进入实验室做 IoTDB,至今大概三年。平常除了写代码,也有一些别的爱好,例如写作、钢琴、街舞、唱歌、游戏(王者、魔兽、炉石……)。
关于 Apache IoTDB
最开始你是怎么了解到 Apache IoTDB 这个项目的?
最开始是大三下学期的暑期课程在 IoTDB 做项目,从那之后,我就发现自己有不断参与开源贡献,帮助数据库系统越做越完善,性能越来越好的兴趣,然后就一直工作到现在。
是什么让你最终选择参与到 Apache IoTDB 这个项目中?
还是因为兴趣,因为我发现了自己享受这种一点一滴“做任务”,参与开源完成贡献的感觉,感觉到系统在我手里越来越好,我就特别有成就感。除此之外,我也看到 IoTDB 在很多重要的工业场景中得到应用,能够间接参与到很多国计民生相关的项目中,为“国产化”出一份力,也让我觉得我的工作很有意义。
在 Apache IoTDB 中主要负责哪一部分的内容?
我主要负责流处理、元数据管理部分的工作,参与研发了流处理和表模型元数据管理的整体框架,并且参与实现了跨网闸数据同步功能,完成了对 OPC UA、DA 协议的适配。
在参与 IoTDB 项目建设的过程中,有哪些收获?
感觉自己的整体思维能力,尤其是思维的严密性和全面性提升了,能够全面地对问题的背景,实现思路等等环节展开清晰的分步思考,并且写代码时除了新功能的需要,还能考虑到运维难度、稳定性等方方面面,防止意料之外的问题。
有什么参与贡献过程中的故事分享?
当时为了实现流处理同步元数据的功能,我在整体架构上投入了大量时间反复推敲,很多细节也都做了详细的设计,真的想了很久,在这个过程里能力也提升了很多。当然,考虑到维护难度,有些细节并没有实际研发,我们的团队投入精力去完成更关键的功能,所以就做了适当的修改。不过,最后能够看到核心流程跑通,效果也符合预期,真的特别有成就感。那算是我第一次独立设计一个比较复杂的架构,并且真的把它实现了出来。
是什么让你能一直坚持参与 Apache IoTDB 项目,最终成为 Committer 呢?
我特别喜欢看着一个系统逐步演进、变得越来越完善的过程。老的 Bug 会一个个被解决,新的功能又不断加入,这个进步的过程我也参与其中,就能够坚持参与下去。尤其是当新功能上线,真的能帮用户解决问题时,那种成就感特别强烈。
关于开源社区
之前有过参与开源社区的经验吗?对开源/开源社区有什么新的认识吗?
之前没有相关经验。参与 IoTDB 之后,我切身感受到开源社区为数据库软件带来的价值。来自社区的参与者们提供了大量实际建议,使得 IoTDB 能够在很多应用场景中快速落地,投入使用。而这种广泛的实践反馈,又促进了 IoTDB 本身的迭代与成熟。开源作为全球创新模式,能够带动不止 IoTDB ,而是整个软件行业的进步。
你觉得开源社区对 Apache IoTDB 的“加成”是?
开源社区不仅帮助 IoTDB 扩大了知名度、建立了更开放、可信的 IP 形象,还能够收获用户和开发者的反馈,通过他们源源不断地提出实际使用问题和需求,能够极大地加速 IoTDB 的功能演进和生态完善过程。
有没有给想要参与 Apache IoTDB 开源社区贡献的小伙伴一点小建议?
虽然 IoTDB 整体的架构是比较清晰的,但是代码仍然有一定的复杂度。如果要进入社区开始贡献,可以先从比较简单清晰的小活干起,邀请别人 revert PR 得到一些可靠的意见,再慢慢负责大的模块。一步一步来,你会的会越来越多,角色也会越来越重要!
成为 Committer 的感言!
成为 Committer 过后,最直接的感受就是终于可以自由的跑 CI 和合 PR,整个贡献流程顺畅多了。加入 IoTDB 起,就收到过很多前辈的耐心指点,让我的代码能力有很强的提升。而现在成了 Committer,我也开始慢慢尝试去帮助其他人,把这种协作和成长的感觉传递下去。
非常推荐那些希望扎实提升代码工程能力的同学加入 IoTDB 社区,一起来感受这种边贡献、边成长的氛围。
彭俊植
大家好,我是彭俊植,就读于清华大学软件学院,Github ID 是 Pengzna。我是从 2023 年 5 月开始接触 Apache IoTDB 并为之贡献代码的。
关于 Apache IoTDB
最开始你是怎么了解到 Apache IoTDB 这个项目的?
本科的时候对分布式数据库感兴趣,希望研究生能在这个方向继续深造。而 Apache IoTDB 作为国内高校主导发起的第一个 Apache Top-Level 项目,一方面有扎实的产学研融合背景,另一方面本身也是十分优秀的分布式时序数据库产品,很自然就吸引了我去关注和参与。
是什么让你最终选择参与到 Apache IoTDB 这个项目中?
一方面,在工业物联网和大数据的时代,我认为 Apache IoTDB 作为工业数据基座,有非常广阔的发展前景。
另一方面,当时恰逢 Apache IoTDB 推进分布式 1.0 大版本迭代,我在社区 PMC 谭新宇学长的博客中了解到了 Apache IoTDB 开放包容、精益求精的社区氛围,也看到了社区雄心勃勃的技术发展方向,心向往之,非常希望能参与进来。
最后,我们本科就有很多优秀的学长在 Apache IoTDB 实验室深造,后来我也很幸运地在张洪胤学长的介绍和帮助下,参与到社区做贡献。
在 Apache IoTDB 中主要负责哪一部分的内容?
我的主要工作集中在三个方面:一是 JVM 内存与 GC 的监控和调优,二是 Metric 框架的重构和性能优化,三是新一代高性能共识协议的研发。除此之外,平时我也会参与维护 Pipe、RPC、Procedure 等框架的相关工作。
在参与 IoTDB 项目建设的过程中,有哪些收获?
我的收获可以总结成三个方面:
第一,是对基础软件工程多了一份敬畏之心。在社区里,我有机会完整参与一个功能从设计、编码、测试到发布上线的全过程。我们写的每一行代码,不仅会在社区内部经过多轮严格测试,最终还会真实运行在用户的生产环境中,因此产出代码的过程应该是极为严谨的。
第二,是提升了与开源社区开发者、用户沟通协作的能力。通过 Code Review、技术文档或者线上会议,清晰表达设计思路,并与大家高效讨论、达成共识,成为了我在这段时间锻炼出的重要能力。我也越来越熟悉如何在开放、透明的社区中高效推进项目。
第三,是融入了一个高质量的技术圈子。我最珍贵的收获,是结识了一群真正热爱技术、能力出色的开发者。和他们一起解决真实世界中的难题,这种纯粹的归属感和共同成长的快乐是任何工作都难以替代的,也是我持续投入的最大动力。
有什么参与贡献过程中的故事分享?
让我印象最深的是一个耗时近半年才最终定位和修复的 bug。
2023 年下半年,冯(庆新)老师发现 JDK 从 11 升级到 17 后, 某场景有明显的性能下降。当时我们一众小伙伴从 CPU、GC、内存等角度,使用火焰图、JMH 等各种工具进行排查,都没能定位到根因。这个问题也暂时成了当时的“悬案”。
直到 2024 年上半年,我在一次优化 JVM safepoint 和偏向锁的实验中,观察到了类似的性能下降情况。那时我突然联想到半年前的那桩“悬案”,结合偏向锁的技术权衡以及历史演变,我意识到 JDK 17 默认取消偏向锁很可能是问题的关键。经过验证,果然在 JDK 17 中手动打开偏向锁后,性能恢复到了预期水平。之后我们又结合业务代码与偏向锁的 trade-off 做了复盘,最终确认了这个结论。
这次经历,颇有“山重水复疑无路,柳暗花明又一村”的技术浪漫。回过头看,这半年间技术见识的增长、与老师同学的多次讨论,都在冥冥之中形成了解决问题的“伏笔”。这次经历也加深了我们对于 JVM 底层机制的理解,让人印象深刻。
是什么让你能一直坚持参与 Apache IoTDB 项目,最终成为 Committer 呢?
能坚持下来,首先是因为看到代码能真正落地、解决实际问题时那种强烈的成就感;同时,能与社区里志同道合的伙伴们并肩作战,让我参与社区的整个过程充满乐趣,不再孤单。更重要的是,我始终坚信 IoTDB 项目本身在物联网时代拥有广阔的发展前景,这份对未来的信心,让我觉得所有的付出都非常值得。
关于开源社区
之前有过参与开源社区的经验吗?对开源/开源社区有什么新的认识吗?
没有,Apache IoTDB 是我第一个全身心投入的开源社区。这段经历让我真正理解了 Apache “社区大于代码” (Community Over Code) 的理念。开源的核心不仅在于共享代码,更在于开放的协作和知识的传递。在社区,你不仅能提升技术能力,更能学会如何与全球的开发者高效沟通,共同推动项目向前,这是一种更珍贵的成长。
你觉得开源社区对 Apache IoTDB 的“加成”是?
我觉得主要体现在这三个方面:
第一,汇聚真实场景。来自全球用户的多样化需求,让 IoTDB 能解决最实际的使用问题,保持项目的生命力和实用性。
第二,保障技术品质。社区开放且严格的 Code Review 机制,让每一行代码都经过充分讨论和验证,从而确保系统更加健壮和可靠。
第三,构建繁荣生态。社区吸引了世界范围内的开发者共同参与,持续丰富周边工具与应用案例,这种协同共建的生态效应,是单一的任何公司都难以实现的。
有没有给想要参与 Apache IoTDB 开源社区贡献的小伙伴一点小建议?
有三个小建议:
第一,从小处着手,可以从标记为 good first issue 的任务开始尝试,比如修复文档、补充测试,都是很好的起点,最关键的是勇敢迈出第一步。
第二,大胆提问。IoTDB 社区氛围非常友好,遇到任何问题都欢迎直接在邮件列表或 Issue 中提出,清晰的提问本身也是对社区的贡献。
第三,贡献不止于代码,你可以积极参与技术讨论、分享使用经验、帮助解答用户问题等等,这些非代码的贡献同样重要,也能让你逐渐成为社区中不可或缺的一员。
成为 Committer 的感言!
成为 Committer,对我而言既是一份荣誉,更是一份责任。非常感谢社区的信任,以及各位老师和朋友们的一路以来的指导和帮助。这对我来说不是终点,而是一个新的起点。我将继续以热情投入贡献,积极回馈社区,并努力帮助更多的新人参与到社区建设中。
Apache IoTDB 有一个真正开放、充满机遇的社区,也诚挚欢迎更多伙伴加入我们,一起成长、共同前行!