专访|Karmada 周仁天:非科班也可以做好开源

开源之夏专访持续开放中,欢迎已从开源之夏毕业或正在参与开源之夏活动的学生、导师一同加入专访行动,扫描文末二维码填写专访问卷,与大家分享你眼中的开源之夏!
本期采访人物是开源之夏2023活动Karmada社区中选学生周仁天同学,他所承担的项目是Karmada namespace删除保护机制。
项目链接:https://summer-ospp.ac.cn/org/prodetail/235c40372

# 关于周仁天
OSPP:请简单介绍一下自己。
周仁天:我叫周仁天,现在在湖北文理学院-教育学院-教育技术学读大四。刚刚成为Karmada(Kubernetes多云、多集群解决方案)社区和Hwameistor(Kubernetes存储)的Member。
我读的专业其实和计算机关系不大,属于是那种纯自发性、非典型、完全基于兴趣的Coder。在初中的时候,我从“我的世界”这个游戏阴差阳错的入门了编程,当时如果想开一个自己的游戏服务器,就需要自己去学习PHP、服务端核心的相关内容,从而编写自己想要的插件。
在通过PHP入门计算机之后,我又去学习了前端、MySQL、Linux等技能。从写自己的插件,到写自己的博客和网站,跟随兴趣和自己的需要去学习知识。目前主要在参与Kubernetes+Go方向的开源和学习。
# 参与开源
OSPP:据了解,你很早(初二时)就开始接触计算机,并通过自学掌握了多种技术栈,大学时就有了相当丰富的项目开发经验与计算机赛事参与及获奖经验,你的自驱力是什么?这些经历在学习或其他方面给你带来了什么?
周仁天:我认为我的自驱力有很大的运气成分。在一开始时,只是想给我的玩家们有一些不一样的体验,给游戏增加一些不一样的规则,让他们感到开心并且喜欢我的服务器。在这个过程中有部分玩家会对服务器赞助,虽然金额很小,但对于初中的我来说是很大的正反馈。
在这种正反馈下学习就会很容易、很轻松。这些经历让我很早就有了自学的能力和习惯,并且明白如果想坚持下去就要一直有正反馈,所以在初高中时期学习的都是比较容易出结果的技术栈(网页/全栈方向),从而让自己有坚持学下去的兴趣和动力。
OSPP:最开始是如何接触到开源的呢?在你眼中开源是什么样的?
周仁天:最早是在大概高一时期接触开源,并且创建了自己的第一个repo(简易的PHP MVC框架,大概七年前)。

当时的我并不是很明白Issue、PR等具体的概念,只是将Github作为一个仓库和分享自己代码的渠道,直到大学转向Go语言的时候要学习一些新的库和框架。
在第一段实习(Edgenesis,云原生IoT初创公司)期间参与公司的开源项目才认识到开源的整体和流程。在第二段实习(Daocloud道客云,存储组)中,公司对开源的激励+组内开源项目+OSPP2023的加持下让我对开源越来越感兴趣,并且更加深入的参与到开源之中。
在我眼中开源实际上是对所有人(包括用户和开发者)都有益的一种做法,我认为开源实际上也是计算机行业和其他行业最大的不同。在其他行业中,各个公司都有自己独门的秘密/配方/技术等,但是在计算机行业,每个人都可以几乎零成本的接触到自己领域最顶级的项目以及他的源代码,并且每个人都可以参与其中,或是寻求社区的帮助,这在许多行业是不太现实的想法。
在成为技术大牛的路上,开源一定是一条捷径,甚至是必要的。
# 参与开源之夏
OSPP:最开始是如何了解到这个活动的?又为何决定参与这个活动?
周仁天:最开始是在一个实习交流群中了解到开源之夏活动,抱着试一试的心态在了解了很多Kubernetes相关的社区后,最后选择了Karmada作为目标。在申请项目时我也尝试提前去了解Karmada社区和项目,以及提Issue和PR,这些努力也帮助我拿到了项目的最终名额。
OSPP:请简单介绍一下你在本届开源之夏活动中承担的项目任务,目前项目进展如何?
周仁天:我承担的是提供一个针对Namespace的删除保护的特性。这个任务在每一次会上讨论的时候都会有新的想法和新的设计思路,目前仍在Proposal阶段,还未开始开发。虽然任务目前还在Block中,但我在这段时间仍贡献了很多其他内容,提交了数个Issue和十个PR,并成为了社区的Member[1]。

OSPP:在你眼中Karmada是一个什么样的开源社区?之后是否打算继续参与开源社区或开源项目?为什么?
周仁天:Karmada是一个氛围非常好的社区,在这几个月的接触中,我明显感觉到社区的活跃度非常高,每个PR或Issue都能够迅速得到不同成员的回应和建议。并且每周都会有一次英文或中文的社区会议,在社区会议上每个人都可以添加自己的议题,每个议题都会得到有效的沟通和进展。在之后我打算继续参与Karmada社区,争取可以成为Reviewer和Owner,并且参加今年的KubeCon活动以及参与到Hwameistor和Karmada的展台中。

小编说:此次开源之夏也将作为社区合作伙伴亮相峰会并设有展台,欢迎大家关注打卡。
关于 Karmada 开源社区
Karmada (Kubernetes Armada) 是一个 Kubernetes 管理系统,它使您能够在多个 Kubernetes 集群和云平台中运行云原生应用程序,而无需更改应用程序。通过使用 Kubernetes 原生 API 并提供高级调度功能,Karmada 实现了真正的开放式、多云 Kubernetes。Karmada 旨在为多云和混合云场景中的多集群应用程序管理提供即插即用的自动化,具有集中式多云管理、高可用性、故障恢复和流量调度等关键功能。
官网:https://karmada.io/
OSPP:在开发项目的过程中,社区和导师为你提供了怎样的帮助?
周仁天:在开发项目的过程中,社区会在每周的会议上对我的Proposal提出一些疑问,以及一些新的设计思路。在大家的帮助下Proposal越来越完善、合理。常震导师带着我了解了Karmada社区的一些会议和制度/流程,并且给我指明了任务的具体方向,以及成为Member的路线。

OSPP:现在很多高校学生更热衷于参加一些竞赛类项目,你觉得与之相比,参与开源能为学生开发者带来什么不一样的收获?
周仁天:与参加竞赛项目相比,我更倾向于鼓励同学们投入更多的时间参与开源项目。在国内的许多竞赛上,能给到个人的激励和提升其实比较有限,并且评分标准、比赛含金量、投入产出比都比较优秀的竞赛其实是很少的。参与开源(包括开源之夏)我认为是选择了对大多数人来说更容易有产出的赛道,也能在这个过程中接触到最前沿的技术和来自五湖四海的人。
# 寄语
OSPP:对于新手或非科班的同学来说,你认为应该如何入门开源、选择开源项目并坚持下去?
周仁天:对于想参与开源的同学来说,不管是不是科班出身,我认为最重要的是在开始时对某个项目抱有兴趣,在使用了某个项目/库一段时间后,可能会注意到一些不正常或是可以变得更好的地方,这个时候就可以尝试提出自己的第一个Issue。

在和社区成员讨论后,如果认为自己可以解决这个问题,就可以Assign给自己,在Merge了第一个PR后就会有非常大的成就感。

通常来说第一步都是最难的,因为你要熟悉社区和项目,这其中甚至需要有一些运气成分。在做完了第一步后,其实坚持下去就成了最简单的事,只需要在自己空闲时去逛一逛Issue,多熟悉一些代码,后面的PR就会很容易Merge到库中。每一次Merge都代表着你的代码贡献给了所有的用户,这是一种非常大的正反馈。
OSPP:有什么话想对计划参加开源之夏活动的学弟学妹们说?
周仁天:我认识的许多朋友其实都很想参与到开源中,但是开源之夏实际上还是存在一些门槛的(根据社区的不同难度会相差非常大),甚至可以说开源之夏实际上是从0.3到1,而不是从0到1。
如果大家想参加开源之夏,最好是可以提前找到自己想要报名的项目,并且提前参与到社区之中,就算不贡献代码,只是提出自己的Issue也是非常有帮助的。在这个方面大家一定要勇于去尝试,很多东西其实都是在你做的时候才会去学到的。

[1] https://github.com/karmada-io/community/issues/52
END
专栏编辑:大梦
校对:校大山、周仁天
制图:GoodWhite

专栏投稿请联系开源小助手:kaiyuanzhixia 或专栏编辑:Hungryfish34(备注“专栏投稿”加速通过),或填写下方专访信息收集问卷。


