一位新手磕磕绊绊的寻找一些好的错误

5 位读者喜欢这篇文章。
annoying bugs

Opensource.com

您是否为了寻找关于如何开始为开源项目做贡献的建议而点开了这篇文章?互联网上有很多这样的文章,不是吗?我相信您现在一定已经读过很多了,因为您一直在尝试开始贡献已经有一段时间了。也许您仍然感觉自己根本没有进步。

我理解这种感觉。几周前,我也处于完全相同的境地。让我来讲述我的故事。

在新手领域磕磕绊绊

我尝试为开源项目做贡献已经大约两年了。是的,两年。我可以非常肯定地告诉您一件事——这很吓人。入门很难。您必须学习如何在大型代码库中工作。您必须学习并遵守项目的编码风格指南。一切都毫无意义:控制流、不同模块如何交互、代码的组织方式以及原因——这一切都像一个巨大的迷宫。您需要鼓起很大的勇气去提问,深入到几乎一无所知的代码库中,并不断地与之抗争。(这是对某些项目如何运作的概括,但许多项目在使其项目易于新贡献者访问方面存在困难。)

我只是一个业余爱好者,尽力学习尽可能多的知识。所以,我尝试走简单的路:修复文档或代码注释中的错别字,以及进行明显的简单错误修复。我不想问太多问题,也不想理解代码库。每次我想贡献时,我都会去 GitHub 或错误跟踪器,搜索标记为easybeginnergood first buglow hanging fruit 的问题。在筛选了数百个问题后,我会找到一些足够简单的问题,无需任何重大帮助即可完成。

这种方法在一段时间内奏效了,直到我意识到我可以更好地利用我正在构建的技能组合。那时,我已经学到了很多新东西,但我不知道在哪里应用它们。光学习而不应用作用很小。我停滞不前,根本没有进步。然后发生了一件事,让我非常害怕成为一名新的贡献者。

我从一个大型的、流行的项目中挑选了一个看起来足够简单的问题。我以为最好在进行任何更改之前先提出澄清问题,以免搞砸,所以我发表了一条评论,说我是一名新的贡献者,并询问应该如何修改一段特定的文本才能解决这个问题。我得到的回复是:“如果您无法弄清楚如何进行更改,您就没有资格进行更改。”

哎呀!这个回复让我感到困惑。最终,它让我更害怕在我不理解项目中的某些内容时提出问题。

也许是因为我懂得不够,所以不受欢迎?也许我需要更多地提高我的技能,而不是向那些超级忙碌的经验丰富的人提出愚蠢、蹩脚的问题?这就是我开始寻找导师的时候,因为我觉得如果我认识一个我可以轻松提问的人,事情就会好起来,我可以让自己更有用。所以我给一群人发了电子邮件,请他们帮助我入门,因为在经历了上述经历后,我感到特别害怕。

我收到了很多充满鼓励的积极回复,但我仍然没有找到我真正想要的东西。我感觉自己好像撞进了开源世界中的一个封闭环境。

发现好的入门级错误

一天晚上,当我搜索要处理的问题时,我偶然发现了一个名为 web-ext 的 Mozilla 项目,这是一个帮助测试 Web 扩展的工具。我很高兴找到了一些标记为good first bugs 的问题,但没有一个像修复一个小错别字那么简单。天哪,我真高兴。

我开始处理其中一个问题,很快意识到如果我想解决这个问题,我必须 提问。我浏览了代码库,一旦我对正在发生的事情有了一些了解,我就要求获得更多指导。瞧!在获得我需要的所有相关细节后,我成功解决了这个问题。今天,我已经提交了四个拉取请求——一个已合并,另外两个正在合并的路上,并且一个补丁被 Firefox 接受。

我很高兴我迈出了这一步,并且我很高兴我在需要提出相关问题时没有退缩,即使这意味着冒着看起来很愚蠢的风险。我已经了解到,不知道一切是可以的,并且可以一次迈出一步来学习新东西。Mozilla 的同事在这些问题上指导我,他们一直都非常乐于助人和支持。他们一路指导我,抽出时间来分解事物并以令人难以置信的细节来解释它们。尽管事实上,他们本可以自己花几个小时修复这些问题,而不是花几天时间指导我找到自己的解决方案。

现在,我已经本地设置了 Firefox,并且每隔一天就会在 Bugzilla 上搜索错误。

本文改编自 Medium 上的原文,其中包含针对初学者的提示以及对维护者的致敬。

User profile image.
我是一名来自印度的计算机科学专业的学生,对软件开发有着浓厚的兴趣。

4 条评论

关于您的故事,还有一点很有趣的是,一个项目失去了一个潜在的贡献者,而另一个项目却获得了它。

我很高兴您分享了这个故事,我特别钦佩您的礼貌,您明确地避免提及之前粗鲁对待您的开发人员的后果。但是,由于我不是这个故事的参与者,我将自己解决这个问题。

您所经历的是开源文化中具有代表性的一部分中最大的问题之一;一种普遍的攻击性态度,这种态度让许多人感到自己无能或受到冒犯,从而将他们拒之门外。公平地说,这不仅仅是计算机编程领域独有的问题。许多工程领域都培养了一种基于个人知识的傲慢态度。您无需走远就能在计算机编程中看到很多这种情况。加入关于此主题(甚至是一般计算机)的论坛或 IRC 频道,您就会意识到许多成员的这种不必要的攻击性或不宽容的态度。

这个问题主要与我们的教育系统有关。世界上大多数软件工程课程都不教授协作,也没有将软件开发与基本的社交技能联系起来。

当然,从中绝对没有任何收获。正如您的故事所证明的那样,有人失去了一位有价值的贡献者;一位真正希望学习和贡献的人,我可以告诉您,这种情况很少见。

尽管人们对开源有很多说法(而且我们正在经历一个纪念时期,因为我们刚刚纪念了软件自由日),但开源社区中有很多深层次的错误,许多人在没有真正理解开源和协作的确切含义的情况下就进行了开源。在许多方面,许多开源项目都被其关键成员的反文化所扼杀,这些成员根本没有真正开源。他们甚至不代表闭源软件的价值观,闭源软件的价值观特别注重团队协作原则。他们只代表自己;作为具有攻击性的开发者,他们不关心他人,倾向于将项目理解为自己的财产,并且完全不理解与软件工程相关的所有重要社交技能。

这太棒了;祝贺您提交了拉取请求!

非常鼓舞人心的信息。

Mario Figueiredo

那么这让像我这样的人怎么办?我正在尝试学习 Python 并更有意义地参与开源社区?我很乐意成为一个帮助处理错误和代码之类的人,但是如果我向某人提问时被当作烦恼对待怎么办?我不会留下来再次经历这种情况!编程行业是否有一些“行为准则”?如果没有......难道不应该有吗?就像在更改 Linux 发行版的代码和 GPL 时有一套规则一样......难道不应该有一些指导方针供所有软件工程师......程序员......开发者......等遵循吗?我问这个问题不是因为我想惹麻烦,我实际上很好奇想知道......我也意识到,即使制定了行为准则,也不是每个人都会遵守甚至承认它,但这总是一个开始,不是吗?最终,那些以如此糟糕的方式对待他人的人将会“出名”,那么如果他们必须独自工作,他们可能会发现很难完成项目,因为没有人会因为他们糟糕的态度而与他们合作。就像我说的那样......这将是“清理”许多人拥有的这种糟糕心态的开始......

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.