首页 > 第一次给知名项目贡献代码,有点紧张
头像
程序员鱼皮
编辑于 2021-04-20 16:19
+ 关注

第一次给知名项目贡献代码,有点紧张

大家好,我是鱼皮的小老弟阿巴,大家也可以叫我小阿巴。

我也对编程非常感兴趣,但还是小白一枚。这几天放假来哥哥家玩,本来想着鱼皮哥哥学计算机、设备多,会带我打打游戏什么的。结果没想到刚到他家,就问我编程学的怎么样了,甚至还想拉着我敲几天代码。

第一天,鱼皮哥哥就问我知不知道一个叫 GitHub 的网站。这我怎么会不知道,世界上最大的代码开源平台呗,可以在上面找到很多对学编程有帮助的项目。他之前写过一篇怎么找优质项目的文章:【硬核干货】如何高效找到优质编程项目?,我还是认真看了的。

然后他接着问我有没有参与过开源项目、贡献代码什么的。这我还真没试过,虽然一直在 GitHub 上看项目,但从来没有想过自己参与项目。一方面是担心自己实力不够,觉得能给开源项目贡献代码的都是大神;另一方面是不知道如何给项目贡献代码、从何处下手。

没想到鱼皮邪魅一笑,说:“其实贡献代码没那么难,让我来教你吧!”

完了,这下整个假期估计就只能敲代码了。

不过没想到,在鱼皮哥哥的指导下,很快我就学会了如何给开源项目贡献代码,还实际操作了一波!

我做了些笔记,下面分享给大家,帮助每位学编程的同学参与到开源项目中。

第一次参与开源

相信很多同学和我一样,对参与开源项目望而却步,主要是因为这两点:

  1. 不知道如何贡献代码
  2. 找不到合适的项目参与,不知道贡献哪些代码

下面推荐两个方法,分别解决这两个问题。

如何贡献代码

其实,GitHub 上就有一个现成的教程项目 first-contributions,为初学者带来一个简单的方法来学习及参与开源项目。

如该项目作者所说,没有什么学习方法能比实际动手做更好,因此,这个项目不是简单的图文教程、更没有繁杂的理论知识,更像是一本有趣的说明书,一步步引导你去使用 GitHub 的 Fork、Clone、分支、代码提交、代码发布、提交 Pull Request(合并请求)等完整的项目代码提交流程。

fork 仓库

作者非常慷慨,允许大家直接拿这个教程项目来实战学习,并接受大家的合并请求。由于这个项目的 star 数也接近 2 万,所以只要你跟着教程给这个项目做贡献,也可以说是参与了一个知名项目啦!

发起合并请求

找到自己能贡献的代码

学会了贡献代码的操作方法后,到哪儿去找适合自己的项目去参与和贡献呢?

建议首选自己熟悉的项目,在熟悉的项目中再优先选择自己用的比较多的功能,先试着贡献一些小的修改。通常先从修复一些文档的 bug、或者补充文档和代码注释开始。比如现在很多 GitHub 的成熟项目发展飞速,但可能成员都去开发新功能了,导致文档年久失修,如果你正好用到了这个项目,发现了文档的错误,不妨试着修复一下,虽然工作不大,但相信会给你带来很大的成就感。

很多项目的文档都有编辑链接

通过阅读和修改文档,你可以进一步熟悉项目,了解他的设计思想和技术架构。平时如果在使用项目功能时遇到 bug,可以 提个 issues(不是只有提交代码有价值,提出问题也是在做贡献),然后可以试着自己修复这个小 bug,有些可能只需要改几行代码,但影响会很大,成功修复也能得到很多同学的认可,从而激励你进一步优化和完善这个功能,提升自己的水平。

哪怕自己没有遇到什么项目的 bug,也可以直接到项目的 issues 页面 查看其它同学遇到的问题,很多问题其实并不麻烦,只是官方无暇去解决,这往往就是我们参加开源的最佳时机。

比如阿里的 Ant Design 项目,还有近 600 个待解决的问题!

这么多的 issues,怎么选择适合初学者解决的问题呢

其实非常简单,直接访问 github.com/<owner>/<repository>/contribute 地址,就能够查找出指定仓库中适于初学者参与的议题。

比如 Ant Design 项目,就访问地址:https://github.com/ant-design/ant-design/contribute,进入到仓库贡献页,其实就是在仓库后面加个 contribute 而已。

然后你就能看到很多打上了 good first issue 标签、适合初学者解决的问题,以及一份仓库贡献指南:

仓库贡献页面

这些问题通常解决难度不大、成本不高,而且非常具有学习意义。

试着解决 issue

强烈建议先 阅读贡献指南,然后学习下别人解决问题的思路,再自己动手尝试!

当你解决的问题越来越多,或者对项目足够熟悉后,你可以给整个项目开发新功能,甚至加入项目的核心团队!当然,这是后话,从编程小白逆袭为开源大佬,不敲个几十万行代码,我觉得不行。


好了,就分享到这里。

虽然这个假期被鱼皮哥哥拉去敲了几天代码,没有打成游戏,但还是 <stron> 感谢他吧,以后多给开源项目贡献代码,俺的水平不得起飞了啊!</stron>

发现项目:https://www.code-nav.cn/rd/?rid=28ee4e3e604f7ce60ad166027f272d9e

全部评论

(1) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期精华帖

热门推荐