logo

开源初学者指南(一):如何开始为开源项目做贡献

作者:OSCHINA2021.09.16 10:23浏览量:247

简介:你是否曾经想为一个开源项目做贡献,但不知道从何开始?

原文:The Beginner’s Guide to Open Source, Part 1: How to Start Contributing to Open Source Projects 作者:Vi Tran,编译:御坂弟弟

大多数现代软件开发人员都严重依赖开源工具和库,但只有相对较少的人对开源做出了回馈。其实,支持这些开源项目并不困难,每一个贡献者的努力都将对软件的质量产生切实的影响。

你是否曾经想为一个开源项目做贡献,但不知道从何开始?许多人都会在 GitHub 上想要参与开源时,却由于项目的复杂性而退缩。其实为开源做贡献并没有那么“困难”。成功的开源项目之所以能茁壮成长,离不开来自各种编码技能和水平的人的广泛贡献。任何时候,只要有人修复了一个编译器警告,关闭了一个错误,或者增加了文档,都意味着取得了进展。把这些贡献集中在一起,就会有伟大的事情发生。

接下来将介绍如何参与开源项目。首先,思考能够为经常使用的开源项目做什么贡献。对于程序员来说,很大可能正在使用开源项目。不仅像 Ruby 和 Python 这样的语言以及 React 和 Node.js 这样的框架都是开源项目,许多开发工具也是开源的,比如 Atom 编辑器、Eclipse IDE、Nginx、Apache Web 服务器、Tomcat、Jetty Java servlet 容器等等。事实上,开源已无处不在。

从为日常使用的项目做贡献开始,因为最熟悉的项目最容易参与。以下介绍 5 种参与方法。

  • 向项目的问题跟踪器报告 bug

向项目的问题跟踪器(如 GitHub Issues)报告问题是支持你所使用的开源项目的最简单方法之一,大多数开源项目都有 iso 跟踪器。当人们发现软件中的一个 bug 时,大多数都会选择绕过。这无可厚非,但一定要在你还记忆犹新的时候尽快报告这个错误,描述所有关于该 bug 行为的细节,并解释它,就像你希望用户向你解释一个 bug 一样。

有时候,bug 不是在代码中,而是在文档中。也许你遇到的是一个过时的功能引用,而这个功能已经不存在了。甚至也许只是有一个错别字。这些文档中的 bug 和代码中的 bug 一样需要在问题跟踪系统中被报告。

但大多数开源项目收到的 bug 报告都很糟糕。他们往往是仅用一句话含糊地描述了一个问题,并没有提供关于它是如何发生的细节,包括在哪里发生的(哪个浏览器,哪个操作系统,什么类型的设备等等),或者提供任何重现 bug 的步骤。

这是两个很好的机会,让你能以一种被关注的方式做出贡献,并真正帮助项目。

首先,如果你在使用的开源工具中遇到了一个 bug,请尽可能地详细记录下来,包括操作系统、浏览器、设备类型(手机/台式机/笔记本电脑)等细节,重现 bug 的详细步骤,截图(如果可能的话)等等。

其次,按照你报告自己的错误时的步骤,尝试重现、验证和记录其他人发现的错误,看看是否有新的信息可以添加。比如,你可以添加一个评论, “我发现calcScreenResolution() 只在 Chrome 浏览器中显示这种行为,而不是 Firefox “。这样的细节对于致力于解决问题的开发人员来说是一个巨大的帮助。这就把可怕的 bug 报告变成了项目的开发人员可以使用的详细、可操作的信息。

如果项目接受你的一个 bug 为有效问题,你应该提出修复它,并询问他们在单元测试方面的期望,以验证该 bug 是否已修复。这可能是向项目贡献你的第一段代码的时机,因为你不仅仅是报告一个问题,而且还提供了解决问题的方法。

  • 志愿编写文档

很少有开发人员热衷于编写文档,但文档对开源项目的成功至关重要。当你探索一个新项目时,你首先要找的是什么?文档。而你在文档中首先要找的是什么?使用范例。

人们很难在刚加入一个开源项目时就立即贡献代码,因为这首先需要你花时间了解代码库、它的编码习惯和测试要求。而编写文档可以帮助你学习代码库,因为编写文档需要你阅读并理解试图描述的代码,这可以让你加深对项目和代码的了解。因此文档是一个很好的起点,而且它是许多开源项目的痛点。

此外,不要忽略编写文档在社交方面的帮助。开源项目通常都有高级开发者,而他们拥有项目的部分代码库。这些开发者并不总是对外人友好。因此编写文档可以让你有机会了解在项目中工作的开发人员,也让他们有机会了解你。

所以,如果你从编写文档开始,那么当你做出你的第一次代码贡献时,对于项目团队来说这已不是来自外人的提交,团队的其他成员将很乐意帮助你的第一个代码拉取请求被接受。

  • 参加(虚拟)见面会

对于知识的传递来说,没有比面对面的见面会或用户组会议更有效的途径了。如果你离一定规模的城市很近,那么其附近很可能有几个见面会或社区活动。聚会通常是免费参加的,涵盖了各种技术主题。你所在的城市越大,你就越有可能找到更标准的主题,而小城市则会有更多的一般性见面会。

然而,在 2020 年,人们不得不迅速适应一个无法亲自见面的世界。

这是挑战,也是机遇。人们虽然不能面对面见面,但可以参加虚拟见面会。虚拟见面会提供了与来自世界各地的项目贡献者交谈的机会,这种机会在以前并不常见。虚拟见面会让你可以向项目的贡献者介绍自己,你将有机会表达你对贡献的兴趣,介绍你的技能,并请求项目成员建议从何开始。

一般来说,询问项目的领导者他们需要什么是最好的开始方式,而虚拟见面会是最理想的地方,因为这是与项目领导直接沟通的最简单的方式。也可以在网上发消息,但你的问题很容易在繁忙的论坛中被忽视,或者遗失在项目负责人满溢的电子邮件邮箱中。

  • 在网上写博客、发微博、回答问题

你不一定要直接为一个项目做出贡献来帮助它。

大多数开发者都会选择用开源库来解决他们所面临的棘手问题。如果你也经历这种情况,写一篇博客文章,介绍你是如何解决的。你可能不是唯一遇到这个问题的人,所以分享你的解决方案可以帮助其他使用库的人。

在博客中写一些关于你如何使用软件的内容,特别是关于你遇到的问题和你如何解决它。把你的问题和解决方案写出来,即使它不是项目官方文档的一部分,也可以增加项目的知识体系。

接下来,在像 Stack Overflow 这样的网站上查看人们询问关于开源库的问题,Stack Overflow 是一个程序员互帮互助的问答网站。如果你的专业知识更倾向于服务器管理,那么 StackOverflow 的姐妹网站 Server Fault 也许更适合你。你应该在这种网站上回答任何你能够帮助的问题。

当然,许多项目都有自己的专用论坛、邮件列表、IRC 和 Slack 频道,你也可以参与其中。你今天帮助的新手可能会贡献一些你将来最终会用到的东西。

最后,如果你发现了一个你喜欢的开源库,或者一个能帮你节省大量时间的开源工具,请在 Tweet 上介绍一下。让世界知道,并帮助项目发展其用户群体。

  • 从新贡献者的问题开始

有些开源项目非常有规划,特别列出了一些适合新贡献者的 bug 和功能请求。

浏览那些有很好的初学者问题列表的项目,然后选择一个你能找到的最简单的 —— 即使它看起来太过简单,解决它很可能会比你最初以为的更复杂。表达你对解决这个问题的兴趣,然后等待项目把它分配给你。

在你开始写代码之前,一定要彻底审查项目的编码标准和测试要求。在项目的源码树中寻找名为 “README” 或 “CONTRIBUTING” 的文档,它们是针对贡献者而写的。尽一切可能让你的第一次拉取请求尝试轻松通过代码审查。项目维护者更重视贡献者的态度,很多拉取请求都会因为一些粗心大意而被拒绝,比如缺少单元测试。

一旦你确信自己了解了需要怎么做,就可以开始着手修复问题。

不要害怕沟通

一个项目总是需要各种方面的帮助,从更新项目网站上的 HTML 到写文章再到更新网站设计,甚至是简单的机械性工作,比如更新源文件中所有的版权日期。如果项目没有把这些事情在文档中列出,你可以公开表示你想要帮忙,并请求大家指点。

让项目中的其他人知道你是有时间的,并让他们了解你的能力。加入项目的开发者邮件列表,访问相关的 Slack 或 IRC 频道,甚至是自己的 Twitter 账号。无论你的背景或经验水平如何,你都有可能为你喜爱的开源项目提供帮助。从一些小的步骤开始,很快,帮助开源社区就会成为你作为一个软件开发者生活的一部分。而开源软件也会因为你的贡献而变得更好。

但不同的项目有不同的需求。如果你对一个开源项目感兴趣,首先应该花一些时间沉浸在它的社区里,感受一下项目的工作方式,然后确定开始贡献的最佳方式。

最重要的是:享受其中!你在回馈开源社区,并培养自己的技能。如果你打算长期做下去的话,要学会享受对开源的贡献。

相关文章推荐

发表评论