开源究竟有什么魅力?听完这 4 个故事你也许会明白

558a85e7c8585907139b2374577147c5.gif

导语

如今,「开源」在国内外已不是一个新名词,随着数字化转型、云原生、各路玩家的加入,开源生态日新月异。

除了早年已建立起庞大社区和丰富生态的 Docker、Nginx、Kubernetes 等开源项目,近年来,也涌现出一批优秀的开源项目,比如 Apache APISIX、Apache SkyWalking、TiDB 等,吸引了一大批有技术热情、喜欢开源文化的同学。

Apache APISIX PMC 成员王院生如是说,「参与开源,让我觉得自己终于与这个世界融为一体,不再是孤立的个体。」

87fd356e0d2fb30555fdf14240f77945.png

两周前,院生以「我的第一次开源贡献给了 Apache APISIX 」为题,邀请了部分 Apache APISIX 的开源贡献者,回顾了他们与 Apache APISIX 开源网关项目的缘分,以及从新人成长为社区贡献者的心路历程。

他们当中有能独当一面的程序媛,有爱捣鼓的在校大学生,也有大年初一还在提交 PR 的技术狂热爱好者;他们或因公司项目结缘 Apache APISIX,或因纯粹喜欢开源社区的技术氛围而深度参与、持续贡献;他们有人曾经在开源上走过弯路,认为开源只是公开一段代码,后来才发现 The Apache Way 的文化是「社区大于代码」,社区赋予了贡献者价值,贡献者也赋予了社区价值。

徘徊在开源门口的你,可能想不通开源社区有何魅力,能吸引天涯海角素不相识的你我齐聚一堂,产生技术上的联结、思想上的碰撞,甚至结出难能可贵的友谊?如果你也对开源感兴趣,想一探究竟,请跟随这几位开源贡献者直击开源现场,听他们娓娓道来,揭开「开源给予个人的价值」、「我能为开源社区做何贡献」、「开源新人如何参与开源」这几个问题的谜底。

曦冉:首位女性 APISIX PMC 成员

fda32f422f82816b7d589c70dad11162.png

1

加入 APISIX 的契机

时间来到 2020 年 8 月,当时我们团队计划基于开源项目做 API 网关。经过调研后我们选择了 Apache APISIX 开源项目,主要考虑到三点,一是 APISIX 功能匹配度较高且灵活,二是 APISIX 性能表现比较优秀,三是有 Apache 顶级项目的背书。

选定 APISIX 开源项目后,我们发现 APISIX 在不断向前迭代,社区在不断往前走,我们要如何使我们的内部项目快速跟上开源社区的脚步,把 APISIX 的迭代功能更好、更快地集成进来,使我们开发的代码更兼容 APISIX?

相信这是基于开源项目做二次开发的团队都会遇到的共性问题。思来想去,我们选择采用上游优先的方式来开发。在开发通用功能前,我们会先到社区提 Issue,发起充分的社区讨论,再形成方案,最终把代码提交到社区。如此一来,我们的内部产品就可以和社区向前迭代、协同进步。

2

上山打虎,过关斩将

初次接触开源的我,既不懂网关,也不懂开源社区。所幸社区中有很多非常耐心的 Mentor,比如致远,引导我了解项目,熟悉社区。我的第一个 PR 和 Apache APISIX Dashboard 国际化有关,原以为挺简单的项目,没想到困难重重。

难住我的主要有两点,一是社区沟通,二是测试用例。社区沟通方面,如何以英文书面的形式,在社区提 Issue,清晰且有逻辑地表达观点,并有效参与社区讨论,最终形成方案和落地?这对我来说是个挑战。

此外,我没有和陌生人远程协作的经历,再加上语言问题,怕引起误解,导致语言组织非常耗时。而且社区沟通是异步沟通,发起问题后不一定能得到及时的反馈,有时需要漫长的等待。

CI 方面,主要是 CI 跑不过,环境起不来。虽然我们都认为「CI 是个魔鬼」,但慢慢地,我们明白了,开源项目由全球开发者共同参与、共同贡献,要保证质量,需要靠 CI/CD 和社区的流程机制。

3

主动出击,不放过任何一个贡献机会

进入社区后,我发现一个特别好的贡献机会,Dashboard 上有个插件在路由和消费者两个模块都有配置页面,和技术文档明显不符。嗅到机会的我觉得这是个 Bug ,修复起来可能比较简单,必须把握住这次机会。

但因为对项目的了解程度不够,我没有把握住问题修复的方向。后来在社区大佬的引导下,通过投票,我们最终选定、落地了一个相对较好的方案。

整个过程下来,我感受颇深。一是就产品而言,我解决了一个 Bug,优化了产品,非常有成就感。二是就社区合作而言,仅仅通过一个开源项目,我就收获了很多志同道合的朋友。

泽平:年纪最小的 PMC 成员

4b0a40fca2aded8d237a1b3201e7f922.png

1

闲不住家里蹲后,偶遇 APISIX

大家好,我是白泽平,商学院在读大四学生。遥想当年,2020 年 4 月,新冠病毒横行,我只能家里蹲,闲来无事,瞎捣鼓些小项目。因为要用到网关,所以接触到 Kong、APISIX 等开源网关项目。项目部署完,发现 Dashboard 有些问题,v1 版本的 Dashboard 有两个功能不完整。我当即提了个 PR,把它补充完整,这就是我在 APISIX 社区的开始。

后来 Dashboard 不断演进,进入到 v2 版本,我也做了些微小的工作。成为 Apache APISIX 的 Committer 后,我开始尝试贡献 APISIX 的插件,比如已经开发完的 Open Policy Agent 插件。

2

人气高但依旧低调行事的六边形战士

进入社区后,我从 Dashboard 的前端 JS 写到 Manager API 的后端 Golang,还用 Lua 写了 APISIX 项目和 Nginx 模块。

在社区中,我一直顶着「bzp2010」的 ID,解答大家的问题。院生问我:你帮了那么多人,社区中很多人都感谢你,你自己是什么感受,有没有飘?

我想说的是,我也是从开源新人慢慢成长起来的,从参与开源、加入社区,到现在,我从社区用户问题中发现了自己不少的知识盲区。在社区回答大家的问题,我很开心,既帮助了大家,又不断更新了自己的库存,慢慢地,懂得就多了。

就像院生说的,愿意泡在社区里的人,能力想不强都不行。因为社区在不停地问你那些比较重要的问题。你把这些问题解决了,时间长了,你就会觉得这些问题很简单。你只能被迫去看更高级的问题,社区在强迫我们做提炼。

阿杜:春节都不放过的狂热爱好者

e9fd40d4cccdbd4bef26f09a331a9090.png

1

观察许久才迟迟出动

我和 APISIX 的缘分其实早就开始了,当时我在 OpenResty 的 QQ 群里潜了很久,看到院生发了个链接,我马上就加进去了。看着 APISIX 开始发展,插件越来越多,人也越来越多,逐渐发现了一些问题。但很长一段时间,我只是作为一个旁观者,没有实际参与。

后来我提交了第一个 PR——Kubernetes 服务发现插件,当时我公司的内部项目有同样的需求,只是用的语言不同,公司内部用 C++,APISIX 开源项目用 Lua。对我来说,这个功能在逻辑上没有太大难度,只是需要学习下 Lua 的语法。

2

人类的悲欢不相通,但相似

虽然第一个 PR 在代码逻辑上没有太大难度,写代码也没花多少时间,但整个过程并不顺利,可以说是一波三折。从 21 年 7 月 8 日开始提 Issue,8 月提交 PR,大部分时间,我都在解决 CI 的问题。主要有以下三点:

  1. 第一,在不同环境跑测试用例,因为环境差异,且没有 Docker 或容器,无法跨文件系统读取文件,导致个别环境通过不了。

  2. 第二,IDE 工具的格式和社区的代码格式规范不一致,导致提交的代码常有空格、空行等格式问题,CI 跑不过。

  3. 第三,APISIX 的插件较多,安装依赖多,导致内存不足,机器宕机,测试过程超时。

相信大家在参与社区贡献时,或多或少都遇到过上述问题,但开心的是,在社区的帮助下,这些问题最终都能迎刃而解。

3

对开源新人的分享

基于我的开源经历,我有两点感受可以和大家分享。一是要勇敢一点,不要一直做旁观者。APISIX 刚开源时,其实有很多功能和 PR 可以做,但我一直没有参与,现在想想有点遗憾。

二是参与开源项目,一定要注意现有的代码规范。不要以为代码跑起来了,CI 过了,就万事大吉。当时院生给我指出了风格和代码结构上的一些问题,包括文件定义,随后我对代码逐渐调优,收获很大。

金卫:二话不说直接捐项目的大佬

a0674fb4b9f552e04a62c4195bbdf7a7.png

1

第一个 PR 贡献给了 Apache APISIX

我的经历和大家类似,在原公司做网关技术选型时,我们选择了 Apache APISIX。因为在架构上,etcd 配置管理中心比关系型数据库更友好。在大流量场景下,不管是性能还是稳定性,Apache APISIX 的表现都更强大。

加入社区后,我的第一个 PR 贡献给了 Apache APISIX,做了一些 APISIX 的原生周边项目,比如 Apache APISIX Ingress Controller,负责 Ingress 项目的编写和落地实现,这个项目后来捐赠给了 Apache 社区。

2

参与开源的三种渐进式喜悦

从在门外,到跨进门内,再到成为 PMC 成员,我体验了三种不一样的喜悦:

  1. 当我在 Github 上提 Issue,社区成员答复了我的问题时,我会很开心;

  2. 当我开始回复其他成员的 Issue,帮他人解决问题时,我会觉得自己被需要;

  3. 当我提出的方案被采纳或设计模式被肯定,我感觉自己深深地融入了社区。

3

新人如何参与开源

参与开源其实没有想象中的那么难。首先要摆正认知,认知到开源不只是 Open Source,Apache 有个概念叫 「社区大于代码」。有了正确的认知后,可以尝试参与 Apache 等开源社区的顶级项目,从 Good First Issue 入手,建立起项目的知识体系,参与社区的互动交流。

其次是为开源做贡献,除了改 Bug、补全功能、优化功能、开发新特性或插件等代码贡献,还有非代码贡献,比如回复 Issue、更新维护或创作文档、布道宣传、修改 Typo、参与邮件列表讨论。

4

开源给予个人的价值

社区提供了一个开放共享的环境,当你在开源社区中,你会发现你远比自己想象得更「出名」。因为社区连接了你我他,为有共同需求或兴趣的我们提供了一个开放协同的创作平台。

我们可以在社区里贡献价值,并与其他成员共享价值。你会发现社区模糊了我们和技术大牛之间的距离感,我们有更多机会扩大个人的技术圈和人际圈。

小结

有些贡献者因为公司业务或项目需求与 Apache APISIX 相遇,有些贡献者因为个人兴趣与 Apache APISIX 相识。虽然大家和 APISIX 有不一样的缘分,但像我们本文中没有提到的兴望、刘朋、军旭、正松等其他贡献者一样,我们因社区积极向上的互动氛围,因为一句老话「饮水思源」,因为社区带来的归属感、价值感、成就感,因为热爱,加入了社区,留在了社区,依然活跃在社区。

社区也正是因为有了这些可爱的贡献者,才有一个健康的生态系统。大家可以在其中从事有意义的工作,快速成长,并且有动力、有能力持续成长,帮助维持社区的长久成功。这是一个相互被需要的过程。

听完这些开源贡献者的切身感受,想必徘徊在门口的你对开源社区有了更深入的了解,与其徘徊不定,不如跨进门看一看,身体力行。■

腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。

f04f3a84ab84a8f29374cb1b5bc783b8.png

想了解更多 Apache APISIX 相关内容,欢迎关注公众号「APISIX 云原生微服务网关」

期待你的「在看」👇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值