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

0 阅读7分钟

引言

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

什么是开源?

开源含义

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

开源项目的许可证

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

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

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

常见的开源项目

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

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

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

数据库MySQLPostgreSQL这几个大哥位我就不再强调,还有腾讯的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:社区成员的地位都是平等的

image.png

开源之夏

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

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

活动流程

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

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

image.png

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

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

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

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

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

总结

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

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