大家好,我是鱼皮的小老弟阿巴,大家也可以叫我小阿巴。
我也对编程非常感兴趣,但还是小白一枚。这几天放假来哥哥家玩,本来想着鱼皮哥哥学计算机、设备多,会带我打打游戏什么的。结果没想到刚到他家,就问我编程学的怎么样了,甚至还想拉着我敲几天代码。
第一天,鱼皮哥哥就问我知不知道一个叫 GitHub 的网站。这我怎么会不知道,世界上最大的代码开源平台呗,可以在上面找到很多对学编程有帮助的项目。他之前写过一篇怎么找优质项目的文章:【硬核干货】如何高效找到优质编程项目?,我还是认真看了的。
然后他接着问我有没有参与过开源项目、贡献代码什么的。这我还真没试过,虽然一直在 GitHub 上看项目,但从来没有想过自己参与项目。一方面是担心自己实力不够,觉得能给开源项目贡献代码的都是大神;另一方面是不知道如何给项目贡献代码、从何处下手。
没想到鱼皮邪魅一笑,说:“其实贡献代码没那么难,让我来教你吧!”
完了,这下整个假期估计就只能敲代码了。
不过没想到,在鱼皮哥哥的指导下,很快我就学会了如何给开源项目贡献代码,还实际操作了一波!
我做了些笔记,下面分享给大家,帮助每位学编程的同学参与到开源项目中。
相信很多同学和我一样,对参与开源项目望而却步,主要是因为这两点:
下面推荐两个方法,分别解决这两个问题。
其实,GitHub 上就有一个现成的教程项目 first-contributions
,为初学者带来一个简单的方法来学习及参与开源项目。
如该项目作者所说,没有什么学习方法能比实际动手做更好,因此,这个项目不是简单的图文教程、更没有繁杂的理论知识,更像是一本有趣的说明书,一步步引导你去使用 GitHub 的 Fork、Clone、分支、代码提交、代码发布、提交 Pull Request(合并请求)等完整的项目代码提交流程。
作者非常慷慨,允许大家直接拿这个教程项目来实战学习,并接受大家的合并请求。由于这个项目的 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
标签、适合初学者解决的问题,以及一份仓库贡献指南:
这些问题通常解决难度不大、成本不高,而且非常具有学习意义。
强烈建议先 阅读贡献指南,然后学习下别人解决问题的思路,再自己动手尝试!
当你解决的问题越来越多,或者对项目足够熟悉后,你可以给整个项目开发新功能,甚至加入项目的核心团队!当然,这是后话,从编程小白逆袭为开源大佬,不敲个几十万行代码,我觉得不行。
好了,就分享到这里。
虽然这个假期被鱼皮哥哥拉去敲了几天代码,没有打成游戏,但还是 点个赞 感谢他吧,以后多给开源项目贡献代码,俺的水平不得起飞了啊!
发现项目:https://www.code-nav.cn/rd/?rid=28ee4e3e604f7ce60ad166027f272d9e
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。