这是关于开源项目入门的系列文章的第三部分。在接下来的几周内检查新零件。
为开源项目做出贡献是令人兴奋的。这是一个展示技能的机会,同时学习如何构建流行的项目、框架和库。成为一名贡献者可以扩展您的能力,向您介绍充满激情的开源贡献者的新社区,并帮助您思考如何在开放环境中协作。
然而,贡献并不总是那么容易。例如,如果您不遵循contributor指南或style指南,您的请求(PR)可能不会被接受。
在这篇文章中,我们将介绍六个技巧,帮助您为开源项目做出有价值、有重点和有效的贡献。
1.确保捐款是必要的
当你开始做你的第一份贡献时,从项目的问题板开始。看对于一个简单的问题,你知道你有时间奉献和展示你的技能。小心那些已经存在太久的问题。通常,旧问题已经解决,但没有标记为已解决。如果您不确定,请联系维护人员,询问是否仍需要解决该问题。
保持开源项目的健康不仅仅是新特性或修复bug。项目维护人员还负责审查合作者PRs。根据项目的不同,这可能意味着大量的提交。如果您的提交被拒绝,不要气馁!如果您想向项目推荐新功能,请在提交PR之前创建一个问题来讨论您的建议。一旦您获得项目成员的批准,您的提交很可能会导致与维护人员的更多协作,从而简化流程。
另一件需要记住的事情是,开源项目的成员将标记对初学者有好处的问题。例如,在Node.js项目的投稿页面,它们标记了推荐的初学者友好问题:
2.一次解决一个问题
维护者喜欢协作和质量。确保你的项目触手可及,你的贡献不仅为项目提供价值,而且也是你有信心完成的事情。
如果您正在处理较大的提交,请尝试将您的问题分解为多个问题,每个问题创建一个分支,然后分别提交以供审阅。范围狭窄的小变化会增加您的PRs在合理时间内被审查和接受的机会。
此外,给你的公关一个简单而有意义的标题;例如:
- 修复票据#741:名称验证应该不区分大小写
- 在涵盖国际化的常见问题解答中添加三个条目
- 更改所有出现的
xopen()
到yopen()
现在将它们与下面的进行比较:
- 修复问题#741:名称验证应不区分大小写。另外,澄清调用记录器时错误消息的措辞。
后者可能会被拒绝,因为它结合了两个不相关的任务:修复名称验证和更正错误消息。
团队中的每个人都必须清楚您的贡献意图。通过给你的PRs提供有意义的标题和简洁的描述来保持有效的沟通,解释你改变了什么以及为什么。
如果项目有样式指南,请随意使用,并遵循维护人员建议提交项目的方式。
3.了解项目指南
在做任何工作之前,花时间阅读项目的贡献指南和风格指南。指导方针描述了项目团队对新贡献者的期望以及他们在每个步骤中应该如何进行。
这包括从贡献者规范到技术细节的说明,如创建分支和拉请求、编码风格、提交消息和测试需求。
但是,如果没有这样的指南,请确保您的代码和测试与项目的总体标准和实践保持一致。
4.以全面测试覆盖为目标
维护人员总是关心代码质量和健壮性。一些项目要求对所有拉请求进行100%的测试覆盖,而另一些项目则没有那么严格的规则。该信息通常在项目的出资指南中说明。
无论测试需求如何,始终以完全测试覆盖为目标。对现有测试在本地运行您的更改,并创建新的测试,以便完全覆盖您的代码。另外,确保您的更改不会中断现有的项目功能。一旦您对测试项目感到满意,您甚至可以为其他贡献者提交的测试覆盖不足的代码创建新的测试。
5.别忘了那些文件
记住,不仅要将您的更改传达给其他团队成员,还要传达给整个社区。更新项目文档,如自述文件,以清楚地描述您在PR中包含的错误修复、新功能和其他更改。如果有帮助,请提供代码片段和屏幕截图,以便更好地说明您的描述。
在文档更新方面,贡献常常落后。可能会在文档或wiki中添加一两句话,但这就足够了吗?FAQ也应该更新吗?文档的其他部分是否会从更新中受益?文档在两个不同的地方对同一功能说了两种不同的话,这是软件中最令人沮丧的事情之一。
6.要求审查
在您提交您的公关,请别人校对它。这个人甚至不需要熟悉这个项目,他们只需要对你正在做的事情有一个大致的了解。可能您没有清楚地解释PR,或者您的测试用例看起来不够广泛。在发布PR之前,额外的一双眼睛可能有助于发现任何问题。
有些项目有一个评审员列表,所以您可以联系他们中的一个,并要求同行评审。
做好成功的准备
如果您采取简单的步骤,并且小心谨慎,那么参与开源项目会更容易,也更令人愉快。要考虑到其他团队成员的时间——这是一个项目维护者会欣赏的习惯。
从初学者到资深工程师,开源社区中的每个人都从开源项目中受益。为他们做贡献是回馈社区的一种极好的方式。
我们在本文中讨论的技巧并不是做出巨大开源贡献的唯一方法,但它们是一个良好的开端。
想为NewRelic的开源项目做贡献吗?检查NewRelic开放源码今天就开始做贡献。
本博客所表达的观点是作者的观点,并不一定反映NewRelic的观点。作者提供的任何解决方案都是特定于环境的,不是New Relic提供的商业解决方案或支持的一部分。请在探索者中心加入我们(亚博直播平台discussion.newrelic.com)有关此博客文章的问题和支持。此博客可能包含指向第三方网站内容的链接。通过提供此类链接,New Relic不会采纳、保证、批准或认可此类网站上提供的信息、观点或产品。亚博最新版直播