如何参与开源项目
每个人对于开源都有自己的理解,对于毕业前的我而言,参与开源的原因除了兴趣之外,当然也希望能丰富自己的简历。正是因为面向兴趣编程到面向收入编程的转变,刚开始工作的我有一些困惑,慢慢地才领悟到一个道理,技术对于商业运作而言只是一种工具。
所以我“开摆”了,将工作内外的编程解构为两个部分:「make money」 与 「make sense」。在工作一年后的今天,我对开源有了新的理解:在当前的社会环境下,它能够帮助你修正对于编程与自我价值的认知,感受你的输出对于世界发展的推动。
如何找到可贡献的点
一般来说,在使用的过程中发现了问题才会参与贡献,但我们也可以主动寻找“问题”。
这是 axios 仓库的主页:
这里我们只需要关注前四个栏目:
Code
:浏览源码文件Issues
:报告问题、提出可以改进的部分Pull requests
:请求合并源码Discussions
:探讨使用方法与未来发展方向
Issues
和 Discussions
的功能可能有些重合,官方对它们的解释是:
GitHub Discussions 是提问、分享想法、与他人沟通、制订 RFC、规划资源、发公告的最佳工具。
GitHub Issues 用于追踪明确存在起点和终点的可执行工作,包括添加新功能、修复漏洞、日常更新等。
Issues 和 Discussions 都可以帮助您提高工作效率和协作性。当它们一起使用时,您可以通过保留 Issue 和 Pull request 来追踪正在进行的事项,同时使用 Discussions 来进行对话、提问和社区讨论,从而提高效率。 还有另一个好处:您可以参考 Issue 对应的 Discussion,这可以为一个正在进行的事项提供背景和上下文。如果您在完成事项之前需要更多信息来进行决断,可以先将 Issue 转换为 Discussion。
以我的经验总结,Issues
这里被翻译为“事项”更合适,它用来跟踪需要“解决”的事情,例如漏洞修复与功能新增,而 Discussions
更多的是开发者提问使用方法以及讨论最佳实践。
不同的栏目有不同的参与方式:
Issues
这个栏目每天都会有新的问题产生,一些新手开发者可能会在这里提问,如果我们能作出解答并且提醒他在 Discussions
栏目提问更合适,就能帮助库维护者把精力放在更应该专注的问题上。
除了提问之外,剩下的内容通常可以分为 bug
和 enhancement
。对于缺少细节的 bug
,我们可以提醒他提供复现路径;对于已经提出过的问题,我们可以标记该问题重复并附上对应的链接。一些有经验的开发者除了提出问题之外,还会提供问题线索以及解决思路,我们可以通过这些信息来确认问题是否存在,并在明确问题与解决方向之后修改源码并请求合并。
Pull requests
这个栏目的内容都是请求合并源码,我们可以做一些基本的代码审查。
这是一个 pull request
:
从左到右依次是:
Conversation
:讨论的地方Commits
:查看 Git 提交历史Checks
:查看仓库对于该pull request
的检查Files changed
:查看文件的改动+346 -7
:绿色代表代码新增的行数,红色代表代码移除的行数
打开 Files changed
栏目,我们就能对文件的改动进行审查。如果我们认为其中某个部分存在疑问,可以点击行号右侧的蓝色按钮进行留言:
如果我们认为这个地方有重构的意义,也可以添加一条修改建议:
编辑完成后可以选择添加单条评论(Add single comment),或者继续审查其他代码(Start a review)。
Discussions
在这个栏目可以参与大家对于项目的讨论,或者解答其他开发者提出的问题。提问者可以将你的回答标记为正确答案,这样就能帮助到更多人,同时你的 GitHub 个人资料将会解锁 Galaxy Brain 成就!
如何贡献源码
在我们明确了问题与解决方向之后,最直观的参与方式当然是贡献源码。在一次完整的源码贡献中,我们在各个环节都应该遵守项目的规定,例如 axios 的贡献规范:https://github.com/axios/axios/blob/v1.0.0-alpha.1/CONTRIBUTING.md。
阅读了这些内容之后,我们就可以正式发起一个 pull request
:
- 分叉项目仓库并克隆到本地
我们在项目主页的右侧点击 Fork 按钮创建一个该仓库的分叉,完成后克隆这个分叉到本地。
- 创建分支
其实我们可以在主分支上直接修改源码并请求合并,但是创建分支可以让我们利用不同的分支并行解决不同的问题。
- 修改源码并推送到分叉仓库上
一般修改源码都需要添加对应的测试用例,但无论我们添不添加新的用例,都必须保证原先的用例能够 100% 通过,以证明本次修改不会影响到其他逻辑。
- 发起
pull request
我们进入项目仓库,就能看到 GitHub 提示我们可以发起 pull request
,点击按钮发起即可。
除非解决的问题和方式特别显而易见,否则我们应该在描述中讲明我们本次修改的用意,更好的做法是确保这个 pull request
有一个对应的 issue
用于说明问题。我们可以在描述中关联对应的 issue
,这样库维护者就能快速了解上下文,并且在代码合并后由系统自动关闭该 issue
。
- 修复漏洞
fixes (issue_link)
- 添加功能
closes (issue_link)
接下来我们要做的就是等待代码审查与代码合并,这次的贡献就算是完成啦。
写在最后
对于新手而言,可以先尝试从解答问题开始,慢慢加深对这个开源项目的理解。代码贡献也可以先从修正单词拼写错误或者完善文档开始,一步步成为项目的合作者甚至是团队成员。
感谢你看到这里,这是我从小到大写的第一篇正儿八经的文章,希望能对你有所帮助。
参考文章
本文的作者是小菜,来自 xxx 团队。