您是否为了寻找关于如何开始为开源项目做贡献的建议而点开了这篇文章?互联网上有很多这样的文章,不是吗?我相信您现在一定已经读过很多了,因为您一直在尝试开始贡献已经有一段时间了。也许您仍然感觉自己根本没有进步。
我理解这种感觉。几周前,我也处于完全相同的境地。让我来讲述我的故事。
在新手领域磕磕绊绊
我尝试为开源项目做贡献已经大约两年了。是的,两年。我可以非常肯定地告诉您一件事——这很吓人。入门很难。您必须学习如何在大型代码库中工作。您必须学习并遵守项目的编码风格指南。一切都毫无意义:控制流、不同模块如何交互、代码的组织方式以及原因——这一切都像一个巨大的迷宫。您需要鼓起很大的勇气去提问,深入到几乎一无所知的代码库中,并不断地与之抗争。(这是对某些项目如何运作的概括,但许多项目在使其项目易于新贡献者访问方面存在困难。)
我只是一个业余爱好者,尽力学习尽可能多的知识。所以,我尝试走简单的路:修复文档或代码注释中的错别字,以及进行明显的简单错误修复。我不想问太多问题,也不想理解代码库。每次我想贡献时,我都会去 GitHub 或错误跟踪器,搜索标记为easy、beginner、good first bug、low hanging fruit 的问题。在筛选了数百个问题后,我会找到一些足够简单的问题,无需任何重大帮助即可完成。
这种方法在一段时间内奏效了,直到我意识到我可以更好地利用我正在构建的技能组合。那时,我已经学到了很多新东西,但我不知道在哪里应用它们。光学习而不应用作用很小。我停滞不前,根本没有进步。然后发生了一件事,让我非常害怕成为一名新的贡献者。
我从一个大型的、流行的项目中挑选了一个看起来足够简单的问题。我以为最好在进行任何更改之前先提出澄清问题,以免搞砸,所以我发表了一条评论,说我是一名新的贡献者,并询问应该如何修改一段特定的文本才能解决这个问题。我得到的回复是:“如果您无法弄清楚如何进行更改,您就没有资格进行更改。”
哎呀!这个回复让我感到困惑。最终,它让我更害怕在我不理解项目中的某些内容时提出问题。
也许是因为我懂得不够,所以不受欢迎?也许我需要更多地提高我的技能,而不是向那些超级忙碌的经验丰富的人提出愚蠢、蹩脚的问题?这就是我开始寻找导师的时候,因为我觉得如果我认识一个我可以轻松提问的人,事情就会好起来,我可以让自己更有用。所以我给一群人发了电子邮件,请他们帮助我入门,因为在经历了上述经历后,我感到特别害怕。
我收到了很多充满鼓励的积极回复,但我仍然没有找到我真正想要的东西。我感觉自己好像撞进了开源世界中的一个封闭环境。
发现好的入门级错误
一天晚上,当我搜索要处理的问题时,我偶然发现了一个名为 web-ext 的 Mozilla 项目,这是一个帮助测试 Web 扩展的工具。我很高兴找到了一些标记为good first bugs 的问题,但没有一个像修复一个小错别字那么简单。天哪,我真高兴。
我开始处理其中一个问题,很快意识到如果我想解决这个问题,我必须 提问。我浏览了代码库,一旦我对正在发生的事情有了一些了解,我就要求获得更多指导。瞧!在获得我需要的所有相关细节后,我成功解决了这个问题。今天,我已经提交了四个拉取请求——一个已合并,另外两个正在合并的路上,并且一个补丁被 Firefox 接受。
我很高兴我迈出了这一步,并且我很高兴我在需要提出相关问题时没有退缩,即使这意味着冒着看起来很愚蠢的风险。我已经了解到,不知道一切是可以的,并且可以一次迈出一步来学习新东西。Mozilla 的同事在这些问题上指导我,他们一直都非常乐于助人和支持。他们一路指导我,抽出时间来分解事物并以令人难以置信的细节来解释它们。尽管事实上,他们本可以自己花几个小时修复这些问题,而不是花几天时间指导我找到自己的解决方案。
现在,我已经本地设置了 Firefox,并且每隔一天就会在 Bugzilla 上搜索错误。
本文改编自 Medium 上的原文,其中包含针对初学者的提示以及对维护者的致敬。
4 条评论