我对开源存储库的第一次尝试是一个悲惨的失败。我选择了一个我已经在使用的Java存储库(Glassfish Jersey),为一个现有类创建了一个单元测试,提交了一个修补程序(那时还没有拉取请求),然后…它被合并了。我感到兴奋,又提交了一个新的单元测试。毫不奇怪,存储库所有者要求我停止胡闹:显然,他们不需要单元测试仅仅为了做单元测试。我很快失去了对对他人代码进行修改的兴趣,转而开始专注于自己的项目。
不要重复我的错误!成为现有代码库的贡献者是进入开源世界的更快途径,也更有回报。以下是一些要记住的事项,以使您的成功之旅更快——尤其是如果您只是一个初学者,正在提交第一个拉取请求。
研究现有文件。存储库所有者通常为他们的代码感到骄傲,无论它看起来多丑陋。不要试图用您独特的格式或命名风格给他们留下深刻印象;这只会让他们感到恼火。相反,研究他们编写的一些文件,尽量模仿他们的风格。这样更安全。一旦合并了几十个拉取请求,您就可以变得更有创意。但现在不行。
不要问问题,提交问题。您不是第一个贡献者,也不会是最后一个。在您之前,许多人问了无数问题,但是并没有写一行代码。存储库所有者,尤其是在大型项目中,对于教导您或解释他们的代码如何工作并不热情。不要在Telegram中麻烦他们提问题;这只会表现出缺乏纪律。相反,将每个问题制定为一个新问题,指出,例如:1)缺乏文档,2)设计不一致,3)复杂性高,或者其他任何使您无法快速理解代码并贡献的问题。这样的问题本身就是一个有价值的贡献。
做出小的改变。对于维护者来说,没有比来自陌生人的大型拉取请求更令人沮丧的事了。原因很简单:首先,陌生人通常写出糟糕的代码;其次,当告诉他们他们的代码糟糕时,他们经常会感到失望。因此,投入时间审查来自新贡献者的大型拉取请求是有风险的。与此同时,看到潜在的优秀代码最终被丢弃是令人悲哀的。给大家一个方便,从小处着手—每个拉取请求不超过50行代码。这种方法将导致更高质量的审查和更快的合并。
选择最简单的问题。不确定要做出什么贡献?扫描他们的待办事项列表,找到最容易解决的问题。不要试图通过显示自己多聪明来给他们留下深刻印象,通过第一个拉取请求快速找到一个低 hanging fruit,修复它,并使其合并。在大型、高质量的项目中,真正重要的是您能否通过检查器、linter和审阅者流程。您解决的问题越简单,您的解决方案就越快被接受。
编写测试。听起来很简单:您进行的每个更改都应该基于一个失败的单元测试,证明代码在之前是错误的。作为一个新手,如果您修改了所有者编写的代码,必须有一个非常好的理由。当他们审查您的贡献时,他们的第一个问题将是:“为什么你这样做?”最有说服力的论据是一个失败的单元测试。您甚至可以考虑首先提交一个仅包含一个失败测试(禁用)的拉取请求,将其合并,然后提交另一个修复测试的拉取请求。
看起来像一个人。您的拉取请求看起来可疑,因为您是一个陌生人。在人工智能时代,一些拉取请求可能来自机器人,而这一趋势只会增长。您必须证明自己是一个值得信赖的人类:设置一个体面的头像,在个人资料中填写真实姓名,填写所有必需的字段,等等。
解释您的更改。在提交拉取请求时,有一个文本区域用于描述。如果您留空或只写了几个字,那听起来就像这样:“嘿伙计们,我写了一些代码。现在轮到你们去弄清它是什么,为什么重要,以及如何工作了。我要去睡觉了,因为我受够了你们的代码库。祝好!”毋庸置疑,这不会帮助您的拉取请求很快被合并。
追求质量。研究表明,大多数开源拉取请求被拒绝是因为格式和风格错误,而不是功能错误。记住这一点。注意您如何格式化代码,如何记录更改,以及您为每个新方法或类添加的注释数量。这是审阅者首先看到的。这将构成他们对您的最初印象。
有礼貌且坚持。您提交代码到的人可能会很粗鲁。不要往心里去。他们面对数百名写出质量低劣代码并认为其美丽的新手。无论他们听起来多么侵略或怨恨,都要保持礼貌和专业。在第一个负面评论后不要走开。坚持认为您的拉取请求值得合并。关注他们说什么,而不是他们如何说。最终,您要让您的代码通过。您不想成为他们的朋友;您想让您的代码被合并。
您可能还想观看我最近向伊诺波利斯大学的BSc学生教授的课程“开源最佳实践”:八个视频讲座。在这些讲座中,大多数以上提到的主题都会详细讨论。
Translated by ChatGPT gpt-3.5-turbo/42 on 2024-12-15 at 18:15