开源贡献新手指南
对于任何职业生涯早期的开发者来说,为开源软件做出贡献似乎都相当艰巨。也许你从未与其他开发者合作过项目,又或许你认为自己不具备做出有意义贡献的技能。
去年是我为开源软件做贡献的第一年,在开始之前,我确实感受到了这两点。尽管我心存疑虑,但我还是做出了贡献,并想让你们知道,你们也可以做到!
如果您对开源感兴趣并且遇到类似的担忧,请继续阅读有关如何开始的建议。
⌛ TL;DR
- 即使作为初学者,您也可以为开源软件做出有意义的贡献!
- 除了代码之外,还有更多的贡献方式。
- 具有明确标记问题和行为准则的详尽记录的项目是欢迎初学者的项目的良好标志。
- 在贡献时,请仔细阅读文档以了解对代码贡献、PR 等的期望。
- 只要你努力尝试,你就很棒了!
对读者的假设:
本文假设您熟悉 Git 之类的版本控制系统,并且了解开源的含义。如果您对其中一项或两项都不熟悉,以下是一些不错的入门资源:
请记住,贡献的方式不仅仅局限于代码!
关于开源软件的一个常见误解是,要想做出贡献,就必须懂得编写代码。这完全是错误的。根据这项研究,开源项目涉及大量任务,包括(但不限于)问题跟踪和标记、用户体验设计和文档——而这些往往被忽视。
如果您不愿意通过编写代码来做出贡献,您可以研究其他一些方法来帮助项目!
值得注意的是,项目新手也可能是一笔宝贵的财富。作为一名拥有全新视角的人,你可以更轻松地发现代码库中的错误或文档中的缺陷,而熟悉项目的人可能不会注意到这些缺陷。
例如,您可以尝试在本地运行项目,并使用当前文档进行指导。如果您发现遇到文档中未解决的问题,可以发起拉取请求,以便其他可能遇到类似问题的人能够及时更新文档。
找到合适的项目
选择适合您的开源项目可能取决于许多因素,并且最终是个人选择;但作为首次贡献者,您可以通过以下一些方法缩小最适合开始的项目的范围。
寻找问题明确且文档齐全的项目
作为开源新手,寻找文档齐全的项目,或者拥有活跃沟通渠道、欢迎新贡献者提问的项目绝对有益。您可以寻找以下一些值得关注的绿色信号:
- 关于项目和设置的详尽自述文件。
- 关于对贡献的期望的 Wiki 页面或资源。
- 行为准则。
- 标记清晰的问题(尤其是标记为“初学者”或“适合初学者”的问题)。
- Slack 频道或同等的交流论坛,欢迎人们提问或寻求指导。
根据语言/技术栈决定
如果您一直在使用某种特定的语言或框架,并希望找到利用这些语言或框架的项目,您可以使用CodeTriage等网站来查找根据您的选择过滤的项目。
根据你的兴趣选择项目
另一个考虑因素是选择一个符合你兴趣或价值观、能引起你共鸣的项目。也许你喜欢游戏,想为一款开源游戏做贡献;或者你发现了一个对你非常有用的库,想贡献一份力量以表达你的感激之情。尤其考虑到你的贡献通常是在自己的空闲时间完成的,选择一个你真正关心的项目会更有动力,也会让你更有效地利用时间。
寻找开源项目的资源
这里有一些网站可以帮助初学者找到好的首次贡献项目:
- https://github.com/MunGell/awesome-for-beginners
- https://www.firsttimesonly.com/
- http://up-for-grabs.net/#/
- https://firstcontributions.github.io/
做出您的第一笔贡献
一旦确定了想要从事的项目,下一步就是确定想要如何做出贡献。
找到贡献的方式
如前所述,您可以做出贡献的一种方式是在设置项目时更新遇到的缺失或不正确的文档。
此外,您可以参考项目中现有的“问题”列表,并选择一个未解决的问题。请记住,问题已被认领并不意味着它无法处理。
例如,您可能遇到一个问题,该问题已被所有者认领,但所有者很长时间没有处理该问题。您可以考虑联系他们,询问您是否可以接管该问题的所有权。
另一种情况是,你可能遇到某个问题,有人已经开始解决了,但你也对此感兴趣。同样,你可以考虑联系他们,看看能否一起解决!
提交拉取请求
选定要处理的部分并完成之后(无论是代码、文档还是其他内容),您都需要提交拉取请求 (PR) 来审核您的更改。
提交之前,您需要检查以下几点:
- 确保您遵循提交 PR 的指南(如果有)。
- 如果贡献代码,请确保您的代码不会破坏任何现有测试。
- 如果贡献代码,请确保您的代码经过测试(如果必要/适用)。
- 确保您的分支没有合并冲突。
此外,重要的是要记住,你不是你的贡献,任何关于如何改进它的建议都不能反映你作为一个人或贡献者的价值!
庆祝!
最后但同样重要的一点是,无论你的拉取请求是否获得批准和合并,你都应该为自己尝试做出第一个开源贡献而感到自豪!🎉
关于封面图片:
你知道吗?海狸是群居动物。它们会一起筑坝和储藏食物!由于这篇文章是关于开源的,我觉得配上一张海狸的插图很合适。
感谢 Jennifer Tran (@botanical)提供的插图!