本文由 简悦SimpRead 转码,原文地址 stackoverflow.blog
开始为一个开源项目做贡献可能会让人望而生畏。但只要稍加研究,......
为开源项目做贡献可能会让人感到害怕和困惑,这取决于你正在做的项目。更重要的是,大多数大型开源项目都有一个陡峭的学习曲线。然而,从开源的广泛程度来看,即使你是个新手,也有很多机会闯入其中并获得成功。
开放源代码指的是在许可证下向公众提供查看、使用、修改和分发的源代码。它通常是由其用户组成的社区合作开发和维护的。一些著名的开源项目包括Django、Postgres、MongoDB、Vue、Go、Ruby、TypeScript、Git 等等。
尽管开放源码项目的主要意义在于创造有价值的、可获得的开放源码软件,但个人贡献者可以从贡献中获得大量的个人利益。你帮助维护你使用的软件,同时磨练你的技术能力。当你申请工作时,你可以指出你在开放源码软件上的工作,作为你技能的证明。
通过与他人合作开发你所使用的开源软件,你可以成为一个社区的一部分,在这里你可以锻炼你的软技能,如沟通,给予和接受反馈,情商等。这些社区还为你介绍了大量可以与之建立联系的人,这些人反过来又会为你提供有价值的机会。
下面,我们将探讨一些你可以用来打入开放源码的策略。为了说明问题(也因为我在那里做了一些贡献),我将使用Angular项目来解释你如何为开源软件做贡献。虽然大部分的例子都是Angular项目的,但所有这些描述的策略都适用于许多开源项目。
贡献于开源的方法
你有很多方法可以参与开源。作为一个初学者,你可以识别并修复项目中的bug。例如,Angular项目接受指出错误的问题,甚至是修复错误的拉动请求。在这些项目中,你可以提出建议,帮助设计,并从事新功能的开发。例如Angular接受大型功能的建议和小型功能的拉取请求。大型功能需要更多的社区参与,有些社区要求你在进入功能开发之前先修复bug,赢得声誉。
你的贡献不一定只限于代码。你可以通过对现有的代码和API进行评论来帮助一个项目,为项目增加背景,并为项目编写文档。举个例子,Angular在Github上有两个专门写文档的项目,你可以查看一下这里和这里。
了解一个项目是如何工作的
不是所有的开源项目都以同样的方式运作。有些项目允许任何人做出贡献。有些则要求你通过努力获得贡献的权限。有些项目有很多人参与管理。其他的则是由一个人负责,即所谓的仁慈的终身独裁者。
贡献指南帮助你了解如何对待你对项目的参与。它将解释如何接触贡献,提供交流bug和建议功能的模板,列出维护者需要的工作,项目目标等。一个很好的例子是Angular贡献指南,它为新的贡献者列出了各种有用的信息,如他们的提交信息指南、编码规则、提交指南等,非常详细。
除了贡献指南之外,一些项目还会有行为准则。它通常概述了社区规则和行为期望。它的目的是帮助你知道如何成为一个友好的、专业的贡献者和社区成员。例如,Angular有一个很棒的行为准则,列出了他们认为不专业的行为,他们对社区的责任,以及在有人违反准则时如何联系。
大型项目可能会有管理政策和团队文件,概述了社区、团队、小组委员会、贡献工作流程中的具体角色,讨论如何进行,以及谁可以承诺。这类文件对于理解社区的运作方式至关重要。例如,Angular.io的关于页面列出了所有核心团队成员、他们的角色以及其他贡献者。在Github上,他们也有一个docs文件夹,包含了关于贡献的政策。
即使你看完了文档,你可能仍然需要向社区的活跃成员提出问题。尽管你做了研究,但你可能仍然对项目的某个方面感到迷惑。为了与其他贡献者互动,加入社区交流工具,如Slack、IRC等,注册新闻简报,并订阅他们的邮件列表。Angular使用Gitter作为其社区交流工具,并引导有问题/困难的贡献者到Stack Overflow,在那里他们可以使用angular标签获得帮助。与社区成员联系,并与他们建立关系,因为这将使你接触到你可能不知道的项目的各个方面。
掌握项目的技术层面以及项目的组织方式对于做出符合项目标准的贡献至关重要。要了解项目的技术部分,可以参考项目的README、维基、教程和文档。例如,Angular有文档解释他们的Github流程、构建和测试、他们的编码标准、调试、PR审查等。再往前走一步,看看过去的功能集成和合并拉动请求中的错误修复,这些都是其他贡献者的讨论,可以成为丰富的背景来源。随着项目的发展,关注它,经常关注问题、特性、讨论、拉动请求和错误修复,不断学习它是如何工作的。例如,贡献者可以关注这个Angular功能请求讨论的例子关于表单的API,以更好地了解Angular表单是如何工作的,包的大小管理等。
开源项目有点像你可能在任何公司工作的项目;会有一个内部编码风格、团队文化和完成事情的工作流程。不同的是,开放源码项目可以而且会有一群不同的人在工作。
寻找可以工作的项目
寻找项目工作的一个方法是寻找你经常使用和喜欢的开源软件。是否有一种工具、软件包、框架或语言是你经常使用并喜欢使用的?通过检查它的许可证以及它是否接受贡献并处于活跃状态来了解它是否是一个开源项目。在你已经使用的东西上工作,会让你在贡献时有优势,因为你已经相当熟悉它的工作方式,并且有使用它的经验。作为奖励,你可以解决一直困扰你的问题,或者提出你希望软件具备的功能。如果你要为项目贡献代码,要确保你能用它所使用的语言工作。
如果上述方法可能不适合你,可以尝试使用Github探索页面来寻找接受贡献或积极寻求帮助的项目。Github会根据你所关注的人和资料库,推荐你可能喜欢的项目。另一个寻找项目的方法是使用Github的搜索工具,输入适合初学者的贡献标签,如好的第一个问题、好的第一个bug、适合初学者、容易、低垂的果实、只针对初学者等。过滤搜索结果,以返回处于开放状态的问题和你想用的语言。还有大量的其他工具、平台和程序可以让你找到开源项目,我将在本文末尾列出,以帮助你搜索。
为了有一个积极的贡献经验,尽量避免那些对初学者有敌意和普遍存在问题的社区。例如,如果在你做完研究后试图提出合理的问题时,你收到的是不屑一顾和好斗的评论或侮辱,最好是远离。另一个需要注意的迹象是社区内不专业的行为模式。一些开放源码软件项目已经因这种事情而臭名昭著。所以在做出贡献之前要做调查。
挑选工作问题并做出贡献
项目可以在任务、错误和问题跟踪器中列出需要完成的工作。例如,Angular使用Github的项目管理功能来概述和分配任务并跟踪其进展。如果一个项目有这样的功能,就去访问它。
作为一个经验法则,先从最容易和最小的贡献开始,花最少的工作量来建立你的信心和可信度,然后再尝试更难的贡献。编写文档和修改错别字是一个好的开始。寻找那些用前面提到的标签为初学者标记的问题。
在你选择了一个你认为你能完成的任务后,做你的研究。阅读与该任务相关的文档、代码和讨论,以更好地了解该怎么做。如果你在研究后仍被卡住,可以向社区求助,寻求帮助、澄清或指导。然而,请确保你公开讨论与任务有关的问题,以便社区的其他成员能够从你的学习中受益。例如,在Github上公开讨论一个问题,而不是在Slack的私人直接信息中讨论。一旦你觉得你对某项任务有足够的了解,并且知道如何去做,就写一些代码并提交一份PR。Github有一个很好的检查表,说明在你为项目做贡献之前应该检查什么,这样你的努力就不会被浪费。
提交你的工作
在你完成了你的贡献之后,按照贡献指南提交它。有时,你的提交可能在合理的时间内也没有得到回复。在这种情况下,请恭敬地请求审查或与其他贡献者联系以寻求帮助。审查后可能会被要求修改。尽量尽快进行修改,以便你的贡献能及时被整合,不至于过时或被遗忘。如果你的贡献被拒绝,要求反馈以了解原因。当审稿人提出问题、评论或反馈时,要有反应,并定期检查你的工作是否有更新。像对待其他工作一样,要专业、有礼貌、尊重他人。
你还在等什么?
开源贡献可以是一个惊人的学习经验。它允许你回馈并成为建立有价值的开源软件的社区的一部分。它使你能够使你使用的软件变得更好。虽然开始时可能很困难,但一旦你掌握了它,它就会有巨大的回报。你不必对一个项目了如指掌才能做出贡献。挑选一个项目和一个支持新贡献者的社区,找到导师,然后做出你的贡献。你可能会遇到一些臭名昭著的社区。远离它们,因为它们可能会让你完全放弃开放源代码。
这里有一个资源清单,可以帮助你启动你的开源事业。
- 开放源码初学者的好帮手
- Bugzilla
- 代码分流
- Contributor.ninja
- 首次贡献
- 仅限初来乍到者
- Hacktoberfest
- Gauger.io
- Issuehub
- 开放源代码手册
- 开放源码程序
- 开放源码.指南
- 拉动请求轮盘赌
- 你的第一个PR
标签。开放源代码