从开源小白到 CNCF 大使

从开源小白到 CNCF 大使

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,不过早已不再维护了)。因为当时身边只有我一个在做开源这件事,当时也受到很多不务正业的质疑:为什么不卷一下学分?为什么不卷一下深造?不过可能因为性格原因,我喜欢的东西不会被他人影响和改变,所以坚持了下去,我觉得功利的带着目标的去做一件事,一定没有兴趣和热爱带你走的更远。

image-20231030214052446

这件事就像上天的眷顾,让我从开源中感受到了分享所带来的喜悦和成就感,我从小其实就很喜欢帮助他人,开源给我开了这扇窗,让我对生活重新有了目标和动力,陪伴我走过了孤独。

开源像一扇天窗,让当时的我看到了还有能够仰望的星空。

开源是一匹快马

实习期间,对我而言,开源是一匹快马,坐上它,助我快速的成长。

在深圳腾讯实习期间,工作内容是基于 Envoy 去构建 API 网关,而 Envoy 就是 CNCF 下的一个开源项目,为了更深入的学习技术,我选择了直接从开源社区中,读文档,读源码,从技术的源头解决剖析问题。

当时团队让我负责调研和设计 Envoy 基于 WebAssembly 的扩展机制,希望将这个能力落地到目前的网关中,但是这件事在当时没有相关的工业界实际落地案例,甚至英文参考文档都很少,对于一个还在校的大三学生而言,难度相当大,不过由于我一直喜欢挑战,所以毫无犹豫的接下了这件事。

2021年凌晨与 envoy 维护者的聊天

实际调研过程中,发现当时 Envoy 这部分能力其实还没有完善,遇到了许多问题,例如在 Envoy 如何实现路由级别的 WASM 插件编排的问题,所以处处碰壁,步履维艰。不过也是这个时候,我学会了在开源社区要善于和他人沟通和寻求帮助,记得当时在 Slack 上就和 Lyft 的工程师、 Envoy 的维护者 snowp 讨论了许多 WASM 以及 Envoy Match API 的问题,不过因为时差问题要和国外的维护者协作,基本需要凌晨才能一起讨论,所以也为此熬了无数的夜,也记得当时和 Google 的 Peter Bian,Istio 的维护者,在 Slack 上就 Istio 的 WASM 相关的 Filter (如 stats filter)有过很多讨论,这个过程中,我在社区中感受到了来自维护者的热情和责任,对我的帮助很大,也为未来的我做了优秀的示范。

2021 年在解决技术卡点后的朋友圈

为此熬了大半年的夜,最终完成了架构设计和方案验证,这一过程的辛苦,也只有当时的我才知道,但即使在那段时间里,我只感觉到的是挑战给我带来的动力,以及解决一个又一个问题所带来的成就感,同时在那段时间里也成为了 Istio 的 maintainer 以及 Kubernetes 的 member。到达了终点回头看,才发现走了这么远的路,学了这么多新的知识,自己也获得了大量的成长,最终也以此作为实习转正的答辩,也在激烈竞争中获得了转正机会,也感谢当时的团队,对我所有的支持和信任,给我了足够的成长空间和自由度。

开源像一匹快马,让我能够以惊人的速度成长。

开源是一座长桥

工作期间,对我而言,开源是一座长桥,跨域物理的距离,跨域国籍和文化,和不同的人进行交流和思想的碰撞。

在回到成都腾讯后,我的工作也紧密的和开源联系在了一起,我认为这个阶段,是参与开源量变引起质变的关键阶段,一个从停留表面的徘徊者,变成项目核心维护者的阶段。

我记得我所负责的第一个任务就是实现 service mesh 的控制面 metrics 可观测性,包括多维度的拓扑图、多维度的监控面板等, 而这件事开源项目 Kiali 其实已经做了,于是就围绕 Kiali 做了一套解决方案,在这个过程中也发现了 Kiali 和我们控制面架构有许多不兼容的地方,所以是带着问题去解决了很多问题,也在这个过程中积累了更多的知识,慢慢的参与到了社区的重要功能开发中,也是从那个时候开始参加 kiali 的社区迭代周会,和国外的朋友开始了交流,一开始还是很紧张的,但 Kiali 当时 Red Hat 的几位维护者都非常友好,在他们的鼓励下,慢慢的沟通也变的没有那么困难了。

在长期对 Kiali 的贡献后,我获得了第一个不太水的社区认可(以前的贡献主要还是集中在一些 trivial 的任务上,如文档类贡献),获得了所有 Kiali 当前维护者的投票同意。

image-20231030210544709

在这个过程中,我慢慢的深入参与了社区,认识到了,如果要深度参与一个开源项目,除了对开源本身需要有一些认识和参与之外,有两点很重要:

  1. 积累知识:首先一定要积累知识。知识越多,你能发现的问题就越多,贡献也就越轻松。

  2. 积极交流:同时和社区的维护者进行积极交流,也是重中之重。你需要积极参与社区讨论,社区会议,就我而言我会先在 slack 和社区维护者表达出,我有长久对项目贡献的意愿,希望社区能够渐进式的给我一些任务去解决,大部分维护者都会很开心的,也会积极的帮助你成长。不过这里我需要提一点的是,提问的艺术,一定要先思考再提问,不要为了一个答案去问问题,毕竟大部分开源维护者只是因为热爱参与到项目中的,他没有义务去像照顾小孩一样去照顾你,这样反而会让对方对你产生反感,和社区之间需要建立健康的沟通关系保持相互的尊重,不过对开源项目而言,得到社区团队的认可,更多还是要靠自己实实在在对社区的贡献,不是说和谁关系好,你就可以直接走捷径。

认识到这两点之后,我积极的在未来我参与的所有项目中坚持这两点,我发现参与开源项目变的如鱼得水,不管是提交代码还是和社区交流,就跟平时和工作里团队相处一样简单,像现在我投入较多的 Envoy Gateway,代码的提交量目前是排名第一:

image-20231030212535411

和国外的项目维护者的交流也是,就像朋友一样,甚至会聊聊旅游和爱好,聊聊人生啥的 : )

同时在这个阶段值得一提的是,我从开源之夏的学生,成为了开源之夏的导师,也作为演讲者参与了 KubeCon Shanghai 的演讲,这些都是在开源上的一个个里程碑,慢慢让我逐渐成长,我也从参与者变成了维护者,积极培养项目的贡献者,构建社区规则和文化。

到最终发现,开源其实是在和不同的人打交道,是在和不同的文化和思想进行交流,是合作与共赢,是思考和创造,是信任与友谊。

开源就像一座桥,是人与人的连接,是一种文化,它跨越了物理的距离,让我们不同国籍的人能聚在一起,让开源软件越来越好。

说到最后

对我而言,开源伴随了我自己的成长阶段,也在我的成长的同时,在我的思想中不断成长,不仅对我,我认为对于每个开源人来说,它也是一扇天窗,是一匹快马,是一座长桥。

总的来说,我从一个开源小白成长为 CNCF 大使的过程,是一个充满挑战和收获的旅程。我希望我的经历能够鼓励更多的人参与到开源中来,一起推动开源和云原生技术的发展,也希望我的一些经验总结能帮到想参与到开源的朋友。

作为 CNCF 大使,我也会积极传播云原生技术,在业余时间我会积极输出文章和视频教程,旨在让更多的人学习和了解开源技术。

comments powered by Disqus

Related Posts

Service 中的端口

Service 中的端口

本文简单对比 Service 几种类型

Read More
Envoy Gateway 架构设计与开源贡献

Envoy Gateway 架构设计与开源贡献

本文通过介绍 Envoy Gateway 设计与架构,提供开源贡献的指南

Read More
Envoy Gateway 1.0 发布体会

Envoy Gateway 1.0 发布体会

有幸参与 Envoy Gateway 从 0.1 到 1.0 的发展全过程

Read More