Web开发编程网
分享Web开发相关技术

如何为开源软件做贡献

如何为开源软件做贡献

如果您像我一样,则想为开源软件做点贡献,但又太吓人了,无法将您的第一个拉取请求发送到另一个团队的存储库。

在本文中,我将分享我对大型开源项目的首次尝试。我的希望是,这将有助于消除与另一个团队的代码一起工作的威慑因素,并向您展示在更大的社区中工作有多么酷。

在本文中,我将专门讨论对Microsoft的.NET文档项目的拉取请求。我提供的工作流程,工具和示例将特定于该项目以及维护该项目的团队,但是广泛的概念应适用于您遇到的许多项目。

寻找一个有助于的项目

毋庸置疑,为了做出贡献,您需要选择一个想要贡献的项目。

上周末,我得知我已被.NET Foundation录取。对于一生的Microsoft粉丝(和2001年以来的.NET粉丝)而言,这是一笔大事,这让我想找到方法为与.NET相关的任何内容做出更多贡献。

碰巧的是,我在Twitter上发现了一个引起我兴趣的帖子

我决定听取他们的建议,并查阅.NET文档项目。毕竟,撰写有关技术问题只是点点在我的驾驶室。

选择一个好的第一期

选择存储库后,您将需要找到一种入门方法。

有时您会对需要更改的内容有强烈的意见。在其他时候,您可能只是想帮助团队解决问题。

如果您想贡献一些特定的内容,则可以跳过本节的大部分内容,而继续实际使用代码。就是说,如果您除了修正错误或使示例代码正确编译之外,还需要做出其他贡献,那么您真的应该在他们的存储库中为您将要完成的工作创建一个问题。这样可以确保需要您的工作,并且在您花费时间讨论主题之前,存储库所有者可以对它的实施进行评论。

如果您不知道要做什么,请转到存储库的“发行”选项卡,然后查看可用的标签。您想查看当前已打开且已应用“良好的第一期”,“抢劫”或类似标签的问题。

微软的文档团队对他们的积压工作进行了彻底的审查和评论,对于我来说,找到可用的问题是一件轻而易举的事情。

现在,您需要查找一个看起来像您感兴趣的问题和可能对存储库新手很容易混合的问题。

就我而言,我选择了对 C#和VB .NET中的INotifyPropertyChanged示例的改进。照原样运行的代码很好,但是.NET随着时间的推移而发展,并且随着它的发展,出现了更好的做事方法。这是我分享我所擅长的领域的最佳实践的机会,因此我抓住了这个机会。

了解问题

每当您发现现有问题时,都需要仔细彻底地阅读说明以及其历史记录中的每条评论。存储库所有者和问题创建者可能在某种程度上出于对代码的尊重而参与进来​​,您应该在解决问题的方式中了解问题及其意图和关注点。

就我而言,这对.NET文档团队来说是非常典型的,该团队已经对问题进行了彻底的审查和讨论,并且我有一些非常有帮助的意见可以依靠。

我也发表了评论,宣布我打算在此问题上进行工作以及打算进行的更改。这部分是为了确定团队是将问题分配给我还是要求我处理其他问题,但是没有答复。

分叉并克隆存储库

尽管您可以在不分叉存储库的情况下在本地克隆存储库,但除非先分叉存储库,否则您将无法发出拉取请求。

幸运的是,分叉非常简单。只需单击GitHub上的“ Fork”按钮,它将引导您创建该存储库的副本。

分叉存储库后,按照GitHub的提示将分叉存储库克隆到您的计算机。

作为Git客户端,我是GitKraken的忠实拥护者,因此我复制了URL并使用该URL从GitKraken进行了克隆,但是命令行或您选择的其他应用程序也同样适用。

了解团队的工作流程

下一步将根据您正在处理的项目和团队而有所不同。首先,您需要弄清楚应该基于哪个分支进行更改。接下来,您将要了解团队是否在分支机构周围选择了专门的git工作流程或命名约定。

值得庆幸的是,您无需在大多数存储库中猜测这些事情,因为社区已经标准化了创建contributing.mdreadme.md文件的操作,该文件将引导您逐步了解如何开始使用存储库,包括分支结构和git工作流程。

如果没有相关文档,请保持警惕,因为团队可能不欢迎新的贡献者。

就我而言,.NET团队提供了非常有用的帮助指南,但您可能没有得到。您可能需要通过查看过去的提交来推断事物,以识别模式,甚至自己与存储库所有者联系。

在开始使用编辑器之前,建议您根据适当的开始分支在git中创建一个分支(请参见前面的讨论)。确保检查先前的分支和contributing.md/和/或readme.md文件以了解分支命名约定。

分支名称并不是世界末日,因为您稍后要向另一个存储库提交拉取请求,但是它可以帮助您感觉自己属于一个一致的名称。

定位自己

好的,现在您已经在本地有了代码,您需要使用所需的语言在任何编辑器中打开项目。

就我而言,该编辑器应该是Visual Studio,但是.sln在存储库的根目录下找不到文件,因此我认为该项目旨在成为Visual Studio Code工作区。

我很高兴在Visual Studio Code中打开该文件夹,以提示工作区与一组建议的扩展相关联,并询问我是否要安装它们。当然,我接受了这一点,Visual Studio Code对其自身进行了配置,该方式可以像维护人员一样帮助我查看代码。

您不太可能与像Microsoft文档团队这样出色的团队一起工作(如果您这样做的话,我相信他们很乐意听到他们可以改进的内容)。

即使有了这个有用的指导,您仍然需要找到解决项目结构的方法。虽然contributing.md可能有助于理解某些文件夹,但通常我在项目中的第一步只是打开文件夹和子文件夹,直到我开始看到重复的组织模式为止。

一旦开始识别模式,我便开始寻找与将要更改的代码相关的文件。

以我为例,Microsoft通过在GitHub上的问题中指出它们,再次使操作变得异常容易。

因此,针对每个问题,我查找how-to-implement-property-change-notifications.md并查看了markdown文件中包含要更新的代码示例的部分。

我发现令人惊讶:

而不是包含示例的页面,它引用了团队维护的另一个git存储库中的示例:Samples存储库。

因为我不得不分叉并克隆该存储库,然后在该项目的结构中找到我要查找的文件,所以这有点麻烦。


对我而言,第二个存储库是整个体验的最大缺点。嵌套的存储库设计使我很难调整自己的方向,也使我更难以对自己的工作充满信心,因为我无法轻松地看到修改后的降价。

我相信Microsoft以这种方式设计事物可以使想要下载示例并在本地使用它们的开发人员更容易,因此团队为了更大的社区而牺牲了自己的生产力。

进行并测试您的更改

一旦知道您在正确的位置,就需要进行必要的修复或增强,测试并提交有问题的文件。

构建,运行测试,运行linter(如果适用)以及以其他方式验证您的代码非常重要,这对于在更大的社区中成为负责任的软件工程师来说,是很大的一部分。

值得庆幸的是,大多数大型项目都将自动检查内置到拉式请求过程中,以确保您的代码符合团队标准,但是这样可以节省一些麻烦,以确保在创建拉式请求之前本地代码可以正常工作。

提交代码后,请确保将其推送到存储库的分支版本。为了创建拉取请求,此步骤是必需的。

创建您的拉取请求

现在,您已经推送了更改,您可以返回到派生的存储库,并通过单击适当的提示来创建拉取请求。

左侧的分支和存储库指示您要合并到的存储库和分支。该存储库应该是项目的主存储库,分支通常与您分支的分支库相同。右侧的分支和存储库将是您刚才使用过的分支存储库及其分支。

现在已经设置了目标,请遵循团队命名请求的约定。就我而言,我将提交的描述性标题和发行编号放在括号中。

该团队还有一个模板,可自动填充拉取请求正文的内容,我使用markdown语法编写了所做更改的详细列表。

请注意,最后一个喜欢说Fixed dotnet/docs#10675

这是GitHub解析的魔术字符串,用于将我的提交与docs存储库中的正确问题(#10675)相关联(回想一下,我正在对samples存储库进行更改)。

如果您对要使用的存储库的拉取请求中放入什么内容有任何疑问,请花一些时间查看过去的拉取请求,其内容以及对这些请求的任何评论。

准备好后,请点击Create pull request

接下来发生什么?

恭喜,您刚刚为开放源代码软件社区做出了一点贡献。然而,旅程还没有结束。

在检查代码之前,您的代码可能需要通过自动检查(通常是内部版本和某些代码分析)。此外,项目维护人员将需要查看您的更改并通过将其合并到源存储库中来选择是否接受它们。

就我而言,第二天早上对更改进行了审查,我收到了一条友好的消息,并收到一条通知,告知我请求请求已被接受,问题已解决。

我所做的更改在当天生效,这意味着在我分叉他们的存储库,进行更改以及对这些更改进行审核,批准并部署到生产之间,甚至没有经过24小时。

总结思想

正如我所说,我一直是微软的终生粉丝。但是,当我收到此消息时,我没想到会感到骄傲。我的变化很小,团队的变化对我来说很容易实现,但是以小小的方式为我关心的事情做出的贡献却是巨大的。

我强烈建议您尝试为开源软件做贡献。查找您关心的项目。找到您感兴趣的东西。如果找不到任何东西,请像我一样尝试使用Microsoft的文档,或者在Twitter上发布一些内容,说您正在寻找帮助项目的小方法。

从小处着手,看看结果如何,然后按照自己的喜好进行工作。

社区很棒,如果您尊重人们的流程,代码和工作流程,那么即使您的代码或注释并不完美,他们通常也会非常有帮助,并感谢您的帮助。

开源软件开发非常了不起。它所需要的只是您的一点帮助。

未经允许不得转载:WEB开发编程网 » 如何为开源软件做贡献
微信扫码关注微信公众号

WEB开发编程网

谢谢支持,我们一直在努力

安全提示:您正在对WEB开发编程网进行赞赏操作,一但支付,不可返还。