如何开启第一次开源贡献之路?


文章目录


引言

大家好,我是maple,这篇文章主要是给想做开源但是不知道从何下手的小伙伴一点思路,开源的路径有很多很多,并不一定按照我说的去做才是开源,我这里只是从我个人的角度出发谈谈如何入手去做,如果你有更好的想法,也欢迎在评论区补充,谢谢你❤️

什么是开源?

开源含义

"开源"(Open Source)是指一种软件开发和分发的模式,其核心特点是源代码公开,允许任何人查看、使用、修改和分发该软件。这种模式强调透明、协作、社区驱动和自由共享。

开源项目的许可证

但是不同的项目遵循不同的开源许可证,常见的有:

  • MIT 许可证:非常宽松,几乎允许任何用途,只需保留原作者版权声明。
  • GPL :要求衍生作品也必须以 GPL 发布("传染性"条款)。
  • Apache 2.0:允许商业使用和修改,但对专利有明确授权条款

许多开源项目由 Apache 软件基金会(ASF) 、Linux 基金会 或 CNCF(云原生计算基金会) 等组织托管,这些项目通常具有良好的治理和社区支持

常见的开源项目

这里我按照常见的分类给大家列举几个:

操作系统:Linux,华为的openEuler等等。其中最大名鼎鼎的就是Linux,它可以说是真正的开源鼻祖,开源精神最为耀眼的一个(hhh,这里个人喜爱色彩太过了,不喜勿喷)

网关:nginx,Apache shenyu,Higress等等,其中Higress因为有ai基因,现在特别火

数据库 :MySQL ,PostgreSQL这几个大哥位我就不再强调,还有腾讯的openTenbase,Apache Hugegraph等等

云计算与容器平台:k8s及其衍生中间件

RPC框架:dubbo,Trpc等等

其他中间件 :Apache RocketMQ,Apache Seata等等,这些都是业内非常知名的项目,值得关注

还有很多很多非常好的项目,由于篇幅就不一一列举。

如何开始自己的第一次开源经历?

自己到底喜欢什么方向

做开源并不是盲目去做,一开始的时候,我建议都是深耕一个领域,比如你是喜欢网关方向,那就去了解网关的相关框架;假如你喜欢RPC框架,那就去了解这里的相关知识。

我想说的是,不要强迫自己去干一件自己不喜欢的事情,这在开源这种事情上更是如此,开源绝大多数都是为爱发电。

如何开始第一次pr

ok,确定好自己想做什么方向之后,接下来就是确定自己想去了解的项目,然后根据项目文档去逐步深入它,看源码。

我建议是先了解整体,然后单独对一个模块进行了解,然后再扩展到其他模块。

那么如何提pr呢?

1.做单测(UT)

对于一个刚刚上手该项目的新人来说,最简单的贡献就是给项目不同的模块提供单测,以提高单测覆盖率(很多项目都需要提高单侧覆盖率)。写单测不仅可以了解这里代码是怎么运作的,而且也是我认为提pr最简单的方法。

同时项目各个模块的单测也可能有不足之处,你去改进它也可以提pr

2.接issue

Github上的项目一般都会有issue,issue是用户在使用该项目时所提出的困惑或者bug,又或者是管理员希望项目所能具备的功能和改进,在上面发布的任务。

总之,你可以在上面接任务,就像是冒险者工会的公告栏一样。但是我不建议一开始就挑选难度大的,如果做不了feature,则可以选择optimize等等的。

做这个issue可以带你去深入了解项目的对应模块,是开展第一次pr的不错之选。

ps:请不要争抢issue,注意社区礼仪是第一位

3.主动发现,主动写pr

这个适用于对项目有比较清晰的认识,对这个项目了解比较透彻的同学。

一个项目总是会有隐藏的bug,你对项目足够了解,就可以发现并提出issue,表达自己想要解决这个问题,自己提pr即可。

4.社区共建

除了上述的方法,还有其他的贡献方式。

比如改进项目的ci流程,改进项目的相关插件等等。这些贡献虽然不太关乎项目本身,却也是为项目做贡献的,社区也非常欢迎这种方式进行贡献。

pr的过程

提pr后,会有reviewer或者committer来cr这个pr。如果是第一次提交pr,被打回重做是非常正常的,大家不要怀疑自己的能力有问题,请正视reviewer所给的建议,查看是否存在这个问题,这样改进是否正确。

有则改之,无则加冕。这是做pr的过程中的正确心态,且需要注意社区礼仪,不要和社区的人员发生冲突,大家都是为项目共同发展而共同努力的,没有利益冲突。

ps:社区成员的地位都是平等的

开源之夏

除了在开源社区做贡献以外,还可以参加开源之夏活动来进行pr贡献,而且这种活动往往伴随着活动奖励。

ps:一般只限于大学生参加

活动流程

简单来说,活动的流程一般就是学生选中项目,向项目导师发邮件沟通项目规划书,然后申请,中选则进行相关开发,最后进行评估是否结业。

不同开源活动流程或许有差异,但是大抵都是这样。

有什么常见的开源之夏活动?

下面我列举一些常见的开源之夏活动,大家可以自行查看:

  • GSOC(谷歌开源之夏):这个难度最大,但是所获得的奖励也是最大的。在简历上非常加分。
  • OSPP:这是中科院主办的开源之夏,难度不算很大,在我看来中选并不难,奖励适中。
  • GLCC: CCF开源发展委员会举办的面向全国高校学生的暑期编程活动,这个我不太了解,应该和ospp差不多
  • 腾讯犀牛鸟:由腾讯主办的开源之夏活动,但是这个项目不是一个人中选的,是好几个人一起入选一个项目,结业难度较大,奖励适中
  • ASOC:由阿里巴巴主办的开源之夏活动,这个我同样不太清楚,感兴趣可以了解一下。

还有很多开源之夏活动我可能没有列举到,自己感兴趣可以去找找。但是我在上面列举的已经是非常主流的常见的开源之夏活动了,如果能中选并成功结业,在简历上也是非常加分噢。

我推荐第一次参加开源之夏的人员参加OSPP,难度适中。

总结

做开源不是一蹴而就的,它一般是一个非常漫长的过程,如果你是以一种非常功利的心态,沉不下心去好好沉淀这个项目,那大概率也是竹篮打水一场空。

如果你拥抱开源,开源也会拥抱你。如果你能长期耕耘在一个社区,为其长期做贡献,那么可能就会从一个contributor任命为committer,甚至PMC。不过这都是后话了。

相关推荐
饭后一颗花生米1 分钟前
GitHub Actions 自动化:5 个真实运维提效案例
运维·自动化·github
十二同学啊3 分钟前
Python 工程化详解:项目结构、依赖管理、代码质量、测试与部署
java·开发语言·python
打工仔折腾 AI3 分钟前
鸿蒙移动端直连 Windows 远程桌面配置与性能调优实践
人工智能·windows·后端·python·华为·性能优化·harmonyos
YIN_尹7 分钟前
【git原理与使用】git基本操作及底层原理(一)
java·git·elasticsearch
秋饼15 分钟前
Redis 全面解析:从数据结构到主从/哨兵/集群、分布式锁与面试高频考点,代码到原理一次讲透
数据库·redis·分布式·面试·后端开发
程序员飞哥16 分钟前
AI 编程额度怎么用才不浪费?
java·前端·后端
二月夜17 分钟前
Redis 高频面试题全解:缓存三大问题、大 key 治理与分布式锁之争(2026 招聘 JD 真题复盘)
redis·分布式·后端·缓存
yh弓长21 分钟前
Spring MVC 的请求链路
java·spring·mvc
拆房老料22 分钟前
【第四部分:Agentic 智能体设计模式】17. Agent 路由模式详解:从意图识别到动态模型选择
java·设计模式·ai编程·策略模式
狂师24 分钟前
GitHub 上最值得装的 8 个 Agent Skill 仓库,亲测好用!
程序员·github·ai编程