从开源小白到 CNCF 大使
- Xunzhuo
- Open source
- October 31, 2023
Table of Contents
今年,我有幸成功申请并成为了 CNCF(Cloud Native Computing Foundation)大使,这是我在开源领域的一次重要里程碑。在此,我想分享一下我从一个对开源一无所知的小白,到成为 CNCF 大使的心路历程。
浅谈开源
在聊我的故事之前,让我们来简单了解一下什么是开源。
开源是一种软件开发和分发模式,它鼓励任何人都可以查看、使用、修改和分发软件源代码。开源的起源可以追溯到上世纪70年代的 Unix 操作系统,而现在,开源已经成为了全球软件开发的重要组成部分。开源的精神是自由、开放和协作,它鼓励我们共享知识,一起解决问题,一起创新。
开源对个人和社会的意义重大,它推动了软件技术的创新和发展,同时也为个人提供了学习和成长的机会。当前世界的大部分软件技术都构建在开源之上,这是因为开源能够提供更高的灵活性、透明度和可靠性。许多现代的技术趋势,如人工智能、大数据、云计算等,都有许多重要的开源项目作为基础。
接下来,我们来谈谈什么是 CNCF。CNCF 是一个致力于推动云原生计算的开源软件基金会。CNCF 的由来和理念都与开源精神紧密相连,它致力于构建和推动开源的云原生技术和生态系统,以帮助开发者更好地构建和运行可扩展的应用程序。而 CNCF 大使是 CNCF 评选出来的社区领导者和活动家,他们在全球范围内推广和传播云原生技术。
开源与我的故事
但对我来说,开源不仅仅是一种软件开发和分发模式,在接触开源的五年时间里,我对开源的理解和认识经历了三个阶段:天窗、快马与长桥。
我想和大家聊一聊我与开源的故事。
开源是一扇天窗
大学期间,对我而言,开源是一扇天窗,透过它,可以看到浩瀚的星空。
我试图回忆最初为什么接触开源,可惜时间太久远,想了半天发现实在记不清了,打开了 Github,看到注册账号的时间是在 2019 年 3 月 21 日,心里微微一震,如果我没算错,那个时候是大一下期,原来如此…
记得大一上期,对于刚刚进入大学的我,对大学的生活还是非常抱有憧憬和期待的,积极地参与学校各种活动:学生会,社团,运动会,歌唱比赛,但在大一下期开始之前,家里发生了一个意外,我的情绪陷入了深深的黑洞,每天就宅在寝室里,不太愿意和别人接触,也不太想说话,所以在学校里基本没有去上任何课,对我来说人生是迷茫的,对几乎对所有事物无法提起兴趣。
断开了大部分的社交,我能感受到的是深深的孤独,但还好我面前还有一台电脑。高考结束选择专业的时候,因为浓厚的兴趣,我毅然选择了计算机这个专业,同时初中参加数学竞赛,高中参加信息竞赛的经历,也让我明白,我很享受和擅长自我学习。所以我打开电脑,尝试着在网络世界中,寻找是否有对计算机软件专业的学生最佳的学习平台,尝试在自我学习中找到内心的平静。
首先我找到了大学生 MOOC(幕课),看了一下发现显然对我来说不是最佳答案,这些视频教程和以前一样,都是老师嚼好了喂给你的,并没有什么不同。最终找到了 GitHub,因为我听说很多知名项目的源代码,都是公开的,并且就是在 GitHub 上托管的,我觉得这件事很酷,抱着好奇心,我注册了 Xunzhuo 这个账号,开始在这个开放的代码世界中自由的探索。
对当时的我而言,我的知识面很窄,所以无法直接深度参与到开源项目的代码开发中,但开源神奇之处在于,它的世界太大了,总会有适合自己的事。当时我发现 GitHub 上有很多中文项目,主要是做一些技术总结和分享,首先我通过这些项目快速的学习了很多知识,我感到了知识总结和分享的魅力,于是我当时也创建了一个项目 Algorithm-Guide,得益于以前算法竞赛的经历,我系统的总结了算法和数据结构的知识,惊喜的是,项目在公开之后,得到了大量的关注,一度成为了 GitHub Trending 项目,对于刚刚接触开源的我而言,是一个莫大的鼓舞(截止目前,已经积累了1600+ stars,不过早已不再维护了)。因为当时身边只有我一个在做开源这件事,当时也受到很多不务正业的质疑:为什么不卷一下学分?为什么不卷一下深造?不过可能因为性格原因,我喜欢的东西不会被他人影响和改变,所以坚持了下去,我觉得功利的带着目标的去做一件事,一定没有兴趣和热爱带你走的更远。
这件事就像上天的眷顾,让我从开源中感受到了分享所带来的喜悦和成就感,我从小其实就很喜欢帮助他人,开源给我开了这扇窗,让我对生活重新有了目标和动力,陪伴我走过了孤独。
开源像一扇天窗,让当时的我看到了还有能够仰望的星空。
开源是一匹快马
实习期间,对我而言,开源是一匹快马,坐上它,助我快速的成长。
在深圳腾讯实习期间,工作内容是基于 Envoy 去构建 API 网关,而 Envoy 就是 CNCF 下的一个开源项目,为了更深入的学习技术,我选择了直接从开源社区中,读文档,读源码,从技术的源头解决剖析问题。
当时团队让我负责调研和设计 Envoy 基于 WebAssembly 的扩展机制,希望将这个能力落地到目前的网关中,但是这件事在当时没有相关的工业界实际落地案例,甚至英文参考文档都很少,对于一个还在校的大三学生而言,难度相当大,不过由于我一直喜欢挑战,所以毫无犹豫的接下了这件事。
实际调研过程中,发现当时 Envoy 这部分能力其实还没有完善,遇到了许多问题,例如在 Envoy 如何实现路由级别的 WASM 插件编排的问题,所以处处碰壁,步履维艰。不过也是这个时候,我学会了在开源社区要善于和他人沟通和寻求帮助,记得当时在 Slack 上就和 Lyft 的工程师、 Envoy 的维护者 snowp 讨论了许多 WASM 以及 Envoy Match API 的问题,不过因为时差问题要和国外的维护者协作,基本需要凌晨才能一起讨论,所以也为此熬了无数的夜,也记得当时和 Google 的 Peter Bian,Istio 的维护者,在 Slack 上就 Istio 的 WASM 相关的 Filter (如 stats filter)有过很多讨论,这个过程中,我在社区中感受到了来自维护者的热情和责任,对我的帮助很大,也为未来的我做了优秀的示范。
为此熬了大半年的夜,最终完成了架构设计和方案验证,这一过程的辛苦,也只有当时的我才知道,但即使在那段时间里,我只感觉到的是挑战给我带来的动力,以及解决一个又一个问题所带来的成就感,同时在那段时间里也成为了 Istio 的 maintainer 以及 Kubernetes 的 member。到达了终点回头看,才发现走了这么远的路,学了这么多新的知识,自己也获得了大量的成长,最终也以此作为实习转正的答辩,也在激烈竞争中获得了转正机会,也感谢当时的团队,对我所有的支持和信任,给我了足够的成长空间和自由度。
开源像一匹快马,让我能够以惊人的速度成长。
开源是一座长桥
工作期间,对我而言,开源是一座长桥,跨域物理的距离,跨域国籍和文化,和不同的人进行交流和思想的碰撞。
在回到成都腾讯后,我的工作也紧密的和开源联系在了一起,我认为这个阶段,是参与开源量变引起质变的关键阶段,一个从停留表面的徘徊者,变成项目核心维护者的阶段。
我记得我所负责的第一个任务就是实现 service mesh 的控制面 metrics 可观测性,包括多维度的拓扑图、多维度的监控面板等, 而这件事开源项目 Kiali 其实已经做了,于是就围绕 Kiali 做了一套解决方案,在这个过程中也发现了 Kiali 和我们控制面架构有许多不兼容的地方,所以是带着问题去解决了很多问题,也在这个过程中积累了更多的知识,慢慢的参与到了社区的重要功能开发中,也是从那个时候开始参加 kiali 的社区迭代周会,和国外的朋友开始了交流,一开始还是很紧张的,但 Kiali 当时 Red Hat 的几位维护者都非常友好,在他们的鼓励下,慢慢的沟通也变的没有那么困难了。
在长期对 Kiali 的贡献后,我获得了第一个不太水的社区认可(以前的贡献主要还是集中在一些 trivial 的任务上,如文档类贡献),获得了所有 Kiali 当前维护者的投票同意。
在这个过程中,我慢慢的深入参与了社区,认识到了,如果要深度参与一个开源项目,除了对开源本身需要有一些认识和参与之外,有两点很重要:
积累知识:首先一定要积累知识。知识越多,你能发现的问题就越多,贡献也就越轻松。
积极交流:同时和社区的维护者进行积极交流,也是重中之重。你需要积极参与社区讨论,社区会议,就我而言我会先在 slack 和社区维护者表达出,我有长久对项目贡献的意愿,希望社区能够渐进式的给我一些任务去解决,大部分维护者都会很开心的,也会积极的帮助你成长。不过这里我需要提一点的是,提问的艺术,一定要先思考再提问,不要为了一个答案去问问题,毕竟大部分开源维护者只是因为热爱参与到项目中的,他没有义务去像照顾小孩一样去照顾你,这样反而会让对方对你产生反感,和社区之间需要建立健康的沟通关系,保持相互的尊重,不过对开源项目而言,得到社区团队的认可,更多还是要靠自己实实在在对社区的贡献,不是说和谁关系好,你就可以直接走捷径。
认识到这两点之后,我积极的在未来我参与的所有项目中坚持这两点,我发现参与开源项目变的如鱼得水,不管是提交代码还是和社区交流,就跟平时和工作里团队相处一样简单,像现在我投入较多的 Envoy Gateway,代码的提交量目前是排名第一:
和国外的项目维护者的交流也是,就像朋友一样,甚至会聊聊旅游和爱好,聊聊人生啥的 : )
同时在这个阶段值得一提的是,我从开源之夏的学生,成为了开源之夏的导师,也作为演讲者参与了 KubeCon Shanghai 的演讲,这些都是在开源上的一个个里程碑,慢慢让我逐渐成长,我也从参与者变成了维护者,积极培养项目的贡献者,构建社区规则和文化。
到最终发现,开源其实是在和不同的人打交道,是在和不同的文化和思想进行交流,是合作与共赢,是思考和创造,是信任与友谊。
开源就像一座桥,是人与人的连接,是一种文化,它跨越了物理的距离,让我们不同国籍的人能聚在一起,让开源软件越来越好。
说到最后
对我而言,开源伴随了我自己的成长阶段,也在我的成长的同时,在我的思想中不断成长,不仅对我,我认为对于每个开源人来说,它也是一扇天窗,是一匹快马,是一座长桥。
总的来说,我从一个开源小白成长为 CNCF 大使的过程,是一个充满挑战和收获的旅程。我希望我的经历能够鼓励更多的人参与到开源中来,一起推动开源和云原生技术的发展,也希望我的一些经验总结能帮到想参与到开源的朋友。
作为 CNCF 大使,我也会积极传播云原生技术,在业余时间我会积极输出文章和视频教程,旨在让更多的人学习和了解开源技术。