「龙蜥开发者说」第 15 期来了!开发者与开源社区相辅相成,相互成就,这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的,我们希望在这里让更多人看见技术的力量。本期故事,我们邀请了龙蜥社区开发者陈成来分享「 6 年前打开的开源“潘多拉盲盒”,如今都解了哪些未知数」。
欢迎阅读上期故事《众人拾柴火焰高!聊一聊我在社区的所思所想》。开发者说系长期活动,对于积极投稿、多次分享的童鞋,我们还有神秘大礼鼓励!诚邀开发者们分享真实体验,以文会友、共同学习、一起进步。
本期故事主角:陈成,系统运维 SIG Contributor、云原生 SIG Contributor,联通软件研究院软件开发工程师,主要负责云平台、容器化等方面工作。在龙蜥社区主要协助基于Anolis OS 8.2/8.4 的构建工作。
工作时间一长,有时会忘记我的开源路是从哪里开始的。但现在仔细想想,我第一次接触开源,还是在大学时期,当时是通过 Github下载样例程序,学习并行程序开发。
从求学时期接触开源代码,到工作中参与开源项目,其实时间算不上长,但是学到的内容不可谓不算多。遥想我第一次正式使用开源的项目,已经是 Apache 的 Hadoop。而第一次分享自己的开源项目也是涉及大数据可视化相关的工作。现在回想起来,这些都是 6 年前的事情了。
在我这些年的职业生涯中,逐渐接触了如 Mesos、Marathon、Kubernetes 等开源项目,和大多数的开发者一样,涉及到的内容更多是这些开源项目的集成和应用,并没有深入到提交 issue 和 PR。但还记得有一次我在使用 kubevirt 项目时,出现了挂载卷异常问题,当时我经过反复的测试确认,最终发现是由于代码中的一个 bug 导致了异常。发现问题后,我针对这个 bug 提交了 PR,最终代码被合入。虽然这次经历的问题很小,但我对开源代码的认识却因为这个小小的问题加深了许多,比如关于 PR 提交流程、issue 的书写方法等等。
很多时候,一些开发者也会抱着这样的想法:我对整个项目的代码并不熟悉,但在使用的时候发现了疑似是开源项目的 bug,我该如何甄别到底是改动哪里呢?其实这个时候我们就需要追踪项目源码。
源码是基础,是所有顶楼的地基
。接触了源码,就相当于开始了深入了解项目的过程。基于源码一步步追踪,找到最根本问题所在,找到最优解,并修改相关代码,就是我们需要做的事。一般开源项目都会有较为完善的回归测试,自动化的执行方式极大地加速了代码的提交和合入周期。以上面提到的kubevirt 项目举例,刚开始我处理这个 bug 时,以为要改动多个地方,最终经过反复确认后发现,仅需要简单地修改一个变量即可。
即使仅仅是一行代码的数据量,却可以修复一个明显的错误,这大概就是大家所说的,细节决定成败
。
2021 年,我因工作关系与龙蜥社区结缘,我们当下
正在构建基于龙蜥操作系统 Anolis OS 8.2 和 Anolis OS 8.4 两个版本的 CULinux 操作系统
。在这个过程中,我们借助的都是开源软件的力量。
其实一开始,我对操作系统构建并不熟悉,甚至对 CentOS 的编译也关注甚少,但这并不能成为阻碍工作前进的步伐。我查阅过许多资料,参与了龙蜥开源社区包编译体提交,也了解到龙蜥后台使用的固件环境是基于开源软件 koji 搭建的。这个过程中,团队伙伴给予了我很多帮助,
我们一起研究搭建起了内网的 koji 构建平台,并与代码仓库等联动起来,实现了内网 rpm 包的编译与 ISO 的构建
。
开源就像是打开了的“潘多拉魔盒”,将那些未知的东西完完整整地展示出来,使得参与者们可以共同增进、共享红利。
随着业务的需求增加,细粒度的观测、故障定位成为我的重点工作。通过了解社区的系统运维 SIG
(Special Interest Group)
,此 SIG 中的开源项目 sysAK 和 sysOM 正好符合我们的需求。经过一番努力,我也在 sysOM 和 sysAK 中增加了几个小功能:如在 sysOM 中,
支持对外暴露的 web 服务端口可自定义,sysAK 支持 CentOS 8.0
等等。这里要特别点赞社区的
系统运维 SIG 社群维护同学
和 T-One 测试平台,以及 Gitee PR 与 T-One 平台的联动集成,让我可以方便地观察测试进展、测试结果等等,同时也极大地提高了效率。
这一些小小的 PR,对社区项目而言或许微不足道,但对于我而言,却是在社区的勋章,它们包含了我在社区付出的努力,也包含了社区所有伙伴的认可与鼓励。同时,也激励我在龙蜥社区持续的贡献以及在开源的道路上不断的探索和前进,也希望通过自身不断的积累可以继续深度参与社区的工作,为开源事业贡献自己的一份力量。
系统运维 SIG 主页:
https://openanolis.cn/sig/sysom
云原生 SIG 主页:
https://openanolis.cn/sig/cloud-native
「人人都可以参与开源」活动链接:
https://openanolis.cn/community/activity
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。