如何为开源做出贡献?
贡献机制
为开源做出贡献可以分为 4 个步骤。
- 寻找机会
- 分叉存储库
- 在你的 fork 上进行更改
- 提交拉取请求
前三个步骤已经讲得够多了。如果你对创建拉取请求的机制感兴趣,Kent C. Dodds 创建了一个很棒的资源,教你如何提交你的第一个 PR。
提交拉取请求的机制很遗憾,比较简单。无论你是谁,无论你为哪个项目做贡献,流程都一样。真正的魔法发生在第一步:找到机会。
寻找机会的两种方法
有抱负的 Web 开发者热衷于为开源做出贡献,因为他们认为这会让他们在未来的雇主眼中更有面子。我在 Twitter 上做了一个简短的非正式调查,想知道事实是否如此。得到的回复很有趣,甚至有点出乎意料。
本·海尔曼@hyrmn
@raddevon @venikunche是的,我会看。对我来说,他们能帮上忙,而且不会造成任何伤害(比如,我不会因为初级员工的代码“不好”而责怪他们)。如果是他们自己做的,而且内容“充实”,我就能了解他们现有的优势和兴趣。2018年11月19日下午14:02
布雷特@bzmw_
@raddevon @venikunche除非简历上写明,否则我不会去看。即使写明了,也有很多事情需要考虑:他们只是在更新文档吗?他们是否做出了有意义的贡献?这个项目是否“严肃”?2018年11月19日 下午19:51
看起来,至少对于大多数回复者来说,开源贡献并不是他们考虑的因素。对于一位表示会考虑的回复者,我感觉如果你没有为开源做出贡献,你也不会被取消资格;如果你做过贡献,那只是个加分项。
即使在求职过程中可能不被重视,为开源做出贡献也是值得的。你可以帮助开发者社区,提升自己的曝光度,并解决一些自身的问题。以下是两种可以帮助你找到新开发者贡献方向的方法。
寻找机会
这是大多数新开发者采用的方法,因为他们想在面试中强调自己的贡献。根据我的经验,这种方法对新手来说比较难。理想情况下,你应该选择一个你以前用过的库,这样你至少对它有一定的了解。然后,浏览代码库的未解决问题,找到一个你认为可以解决的问题。
如果您想贡献代码,首先需要熟悉代码库,这样您才能知道需要在哪里进行工作才能添加所需的功能或修复目标错误。对于新开发人员来说,这是一个相当大的要求:找到一个问题,弄清楚代码库,然后编写一个拉取请求来解决这个问题。阅读代码并非易事,但却是这个过程的重要组成部分。
如果您要走这条路,这里有一些想法和资源可以让您的生活更轻松。
- 如果你想为一个你不熟悉的库做贡献,最好从文档开始,而不是代码。这对你来说很自然,因为你无论如何都会使用文档来学习这个库。你肯定会发现一些缺陷。当你发现它们时,请将它们清理干净,以便下一个阅读文档的人使用。
- 库通常会提供标签来识别适合新手的问题。例如,React 有一个名为“ good first issue ”的标签。查找这些标签,找到你可以解决的问题。
- 许多网站都为新手提供了为开源做出贡献的好机会。看看Up For Grabs或Awesome First PR Opportunities 仓库,就能找到一些不错的示例。由于 Awesome 列表本身就是 Github 上的一个仓库,你实际上可以通过添加你发现的其他优秀新手机会来为其做出贡献。太厉害了!
- Hacktoberfest是一年一度的盛会,鼓励大家为开源项目做出贡献。活动将帮助你找到绝佳的机会,并奖励你一件 T 恤!
因为这是最难走的路,而且似乎对你的工作前景没有太大影响,所以我会避免这种方法,而倾向于采用更“有机”的方法来寻找为开源项目做出贡献的机会。
等待“有机”机会
当你不再强迫自己做事时,你会发现为开源项目做出贡献变得容易得多……尽管机会可能需要更多的时间才能出现。
我的第一个合并拉取请求是针对一个名为Telescope(现为VulcanJS)的库。它是一个基于MeteorJS构建的框架,旨在轻松搭建类似 Reddit 风格的链接投票社交网络。我当时正在使用该框架为独立游戏开发者构建一个名为 GameDev News 的新闻分享网站。
Telescope 让我的生活轻松了很多,但它缺少一个我真正需要的功能:它没有通过 API 公开评论。当你发出请求时,你会收到帖子,但看不到评论。
出于一些原因,这对我来说是一个开始为开源做出贡献的好机会。
- 我已经熟悉了代码库。我已经用这个框架搭建我的网站几个星期了。
- 它解决了我自己的问题。这给了我很大的动力去深入研究别人的代码并做出贡献。
- 我不需要去寻找机会,机会自己会主动找上门来。
我写了几行代码来添加这个功能,并提交了拉取请求。维护人员回复了我,说他在审核时发现了一个问题。我修复了这个问题,然后这个拉取请求就被合并了!
我所有的贡献都符合这个模式。有一次,我找到了一个库,听起来好像能满足我的要求。但问题是,它根本没用。它根本没能做到它声称的功能!我检查了代码,想看看能不能找到问题所在。其实很简单:这个库正在寻找一个返回真值的函数,但这个函数什么也没返回。
我用两行代码修复了这个问题,并提交了一个拉取请求。这个请求仍然没有被合并(这个库似乎已经被彻底废弃了)。不过,我能够在我正在做的项目中使用这个修复的分支。
如果您坚持建设并保持警惕,您会发现许多这样的机会,让您可以解决自己的问题,同时也为开源做出贡献。
需要一些帮助来引导这一切,并增加你成为专业 Web 开发者的机会吗?那就安排一次免费的指导课程,我们将一起规划你的下一步!
我希望帮助你在 Web 开发事业上迈出新的一步。欢迎加入我的免费指导课程,我们将携手共进,助你不断进步!立即在Rad Devon报名。
不要纠结于时机
如果我的推文回复能说明什么的话,你很可能不会因为贡献而得到工作。这意味着时机并不重要。与其强求,不如让为开源项目贡献的机会自然而然地来到你身边。这是一个很棒的目标,但你不必今天就实现它。
鏂囩珷鏉ユ簮锛�https://dev.to/raddevon/how-to-contribute-to-open-source-l87