【伯乐在线导读】:对程序员而言,参与开源有着难以置信的回报,比如有一个自己的出色开源项目,在技术面试能增色很多,极大加分。所以,越来越多的人在参与到开源运动中来。但对应很多新手来说,如何参与开源做出第一个贡献,如何发起一个新项目,却成了一个问题。 2月14日,GitHub 官博发文宣告正式推出「开源指南」,旨在方便想参与到开源的个人和组织。「开源指南」是一个系列集合,内容简洁明了,分了 10 个方面。伯乐在线在本文中翻译了首篇。 怎样为开源做贡献想为开源做贡献吗?这是一份写给新手和老手的开源贡献指南。 第一部分:为何要为开源做贡献?
为开源做贡献是学习、教学和在你能想象的任何技能上积累经验的有益途径。 为什么人们为开源做贡献?有许多理由! 提升现有技能不管是写代码、用户界面设计、平面造型设计、写作,或是规划,如果你在寻找实践机会,在开源项目中总有适合你的任务。 结识爱好相似的人拥有热情而友好的团体组织的开源项目使人们在多年以来常常回访。许多人通过参与开源成了一辈子的好朋友,无论是在会议中碰面还是深夜里线上聊玉米煎饼。 找到导师和教导他人在共享的项目中与他人一起工作,意味着你必须解释你做事的方式,此外还要寻求他人的帮助。学习和教导,对参与其中的所有人都是一种满足的活动。 开发公开作品,帮你提升声望(和事业)根据定义,你的所有开源工作都是公开的,这意味着你得到了免费的样本,可以带到任何地方,作为你能做事情的证明。 学习交际能力开源提供了练习领导才能和管理技能的机会,比如解决冲突、组织不同团队的人,和给工作排优先级。 人人都可以参与改变,不分大小你不一定要成为终生的贡献者才能享受参与开源的乐趣。你是否曾在网站上看到一个拼写错误,希望某人会修正它?在开源项目中,你就能做到这点。开源帮助人们在他们的生命中和他们对世界的体验中感受到力量,这本身是令人满足的。 第二部分:贡献意味着什么如果你是一个开源贡献方面的新人,这个过程可能是令人生畏的。怎么找到合适的项目?不会写代码怎么办?某件事出岔子了会怎样? 不用担心!有各种各样的方法参与开源项目,并且有几个诀窍会帮你最大程度地运用你的经验。 你不一定要贡献代码关于为开源做贡献,一个常见的误解是你必须贡献代码。事实上,常常是项目中非代码的部分大多被遗漏和忽视了。通过参与提供非代码的贡献,你会给项目做出巨大的帮助!
即使你是一名开发者,非代码贡献也是参与项目并结识其它团体成员的极好方式。建立那样的关系,将给予你在项目的其它部分工作的机会。
你是否喜欢活动规划?
你是否喜欢设计?
你是否喜欢写作?
你是否喜欢组织?
你是否喜欢写代码?
你是否喜欢帮助他人?
你是否喜欢为他人的代码提供帮助?
你并不非得要在软件项目中工作!虽然“开源”通常指软件,但你可以在任何事情上协作。有书籍、食谱、清单和课程是作为开源项目开发的。 例如:
即使你是一名软件开发者,在文档项目上的工作也能帮你在开源方面起步。在与代码无关的项目中工作常常不那么令人生畏,而且协作的过程将增强你的自信和经验。 第三部分:熟悉一个新项目
对任何超过修正拼写错误的事情来说,为开源做贡献就像在社交聚会上走向一群陌生人。如果当他们正在深入讨论金鱼时,你开始谈论美洲鸵,他们可能有点奇怪地看着你。 在带着你自己的建议盲目投入以前,先从学习怎样观察聚会中的人,参与他们讨论的话题开始。这样做能增加你的想法被注意到和听取的可能性。 开源项目剖析每个开源团体都是不同的。 在一个开源项目中花了若干年时间意味着你已经了解了一个开源项目。转向一个不同的项目,你可能会发现词汇、规范和沟通方式完全不同。 即便如此,许多开源项目遵循着相似的组织结构。理解不同的团体角色和总体过程将帮你迅速熟悉任何新项目。 一个典型的开源项目有以下几类人:
大的项目可能还有下属委员会或工作组,他们致力于不同的任务,比如工具、分类(triage)、团体节制(community moderation)和活动组织。在项目的网站上寻找“team”页面,或者在仓库(repository)里寻找治理文档(governance documentation),来找到此类信息。 项目也有文档。这些文件通常列在仓库(repository)的顶层。
最后,开源项目使用以下工具来组织讨论。通读档案文件将为你很好地描绘该团体是怎样思考和工作的。
第四部分:找到一个要做贡献的项目既然你已经弄明白开源项目是怎样工作的,是时候找到一个要做贡献的项目了! 如果你之前从未为开源做过贡献,听听美国总统约翰·F·肯尼迪的建议,他曾经说:“不要问你的国家能为你做什么-问问你能为你的国家做什么。” 为开源做贡献在所有层面和不同项目间都能发生。你不必对你的第一个确切的贡献是什么,或它看起来是什么样想得过多。 相反地,从考虑你已经在使用的或想要使用的项目开始。你会积极地做贡献的项目正是你发现自己会回访的项目。 在那些项目里,无论何时你发现自己想到某件事可以变的更好或不同,按照你的直觉行动吧。 开源不是一个排外的俱乐部;它是由和你一样的人做出来的。“开源”只是一个花哨的术语,为了把世界上的问题都作为可修正的来处理。 你可能会细看一份自述文件,发现一个断开的链接或一个拼写错误。或者,你是一个新用户,你发现某样东西毁坏了,或是一个 Issue 你认为实际上应该在文档中。与其忽略它并继续,或请求其他人修正它,不如看看你能不能参与帮忙。这就是开源的真谛!
你也可以使用下列资源之一来帮你发现新项目:
做贡献前的一份检查表当你找到一个你想要做贡献的项目,做一个快速的浏览来确认该项目适合接受贡献。否则,你的努力工作可能永远得不到回应。 这是一份便于使用的检查表,用来评估一个项目对新贡献者来说好不好。 满足开源的定义
项目积极地接受贡献 看看主分支上的提交活动。在 GitHub 上,你可以在仓库的主页上看到此信息。
下一步,看看项目的 Issue 。
现在对项目的 pull requests做同样的动作。
热情的项目友好而热情的项目标志着他们乐于接受新的贡献者。
第五部分:怎样提交贡献你已经找到一个你喜欢的项目,并且你已经准备好作出贡献。最后!这里告诉你怎样以正确的方式作出你的贡献。 有效的沟通不管你是一次性的贡献者或是试着加入一个团体,与他人一起工作是你将在开源中发展的最重要的技能之一。
在你打开一个 Issue 或使用pull request,或是在聊天中提问以前,记住这些要点可以使你的想法有效地被别人理解。 给出上下文。帮助他人快速赶上进度。如果你遇到一个错误,解释你正准备做什么和怎么重现它。如果你提出一个新主张,解释为什么你认为它对项目有用(不只是对你!)。
事先做好功课。不懂没什么,但要表现出你试过了。在求助之前,务必查看项目的自述文件、文档、 Issue (开放的或关闭的)、邮件列表,并且在因特网上搜索答案。当你证明你在试着学习时,人们会表示赞赏。
请求要简短而直接。和发送电子邮件很像,每一个贡献,不管多简单或多有帮助,都需要某个其他人的审查。许多项目收到的请求比能提供帮助的人多。简明一点。你会提高某人能帮到你的可能性。
交流要对公众可见。尽管有点诱人,但不要私下联系维护者,除非你需要分享敏感信息(比如安全问题或严重的违反行为)。当你使对话对公众可见时,更多的人能从你的交流中学习并受益。讨论本身也可能是一种贡献。
可以提问(但要耐心!)。每个人在某个时刻都曾是项目的新人,而且即使有经验的贡献者查看新项目时也需要赶上进度。由此类推,即使长期贡献者也并非总是对项目的每个部分都熟悉。对他们表现出与你希望他们对你表现出的同样的耐心。
尊重团体的决定。你的想法可能与项目的优先考虑或愿景不同。他们可能提供反馈或决定不执行你的想法。你应该讨论并寻求妥协,而维护者必须花比你更长的时间适应你的决定。如果你不同意他们的方向,你总是可以致力于你自己的 fork 或启动你自己的项目。
最重要的是,要优雅。开源由来自世界各地的合作者组成。上下文在跨越语言、文化、地理和时区时会丢失。另外,书面交流使得传递语调或心情更困难。假设这些对话的意图都是好的。礼貌的把想法推后,要求更多的上下文,或进一步澄清你的态度,这些都是好的做法。使因特网成为比你发现它时更好的地方。 收集上下文在做任何事之前,做一个快速的检查,确保你的想法没有在其它地方被讨论过。略读项目的自述文件、 Issue (开放的和关闭的)、邮件列表和 Stack Overflow。你不一定要花几个小时检查一切,但对几个关键词的快速搜索会大有帮助。 如果你在其它地方找不到你的想法,你已经准备好开始行动了。如果项目在 GitHub 上,你多半会通过开启一个 Issue 或使用 pull request 来沟通:
在你开启一个 Issue 或 使用 pull request 以前,检查项目的贡献文档(通常是一个叫做 CONTRIBUTING 的文件,或者在自述文件里),看看你是否需要把特定的东西包含进去。例如,他们可能要求你遵照一个模版,或是要求你使用测试。 如果你想做一个实质的贡献,在着手以前先开一个 Issue 提问。一个有帮助的做法是,在着手进行可能不被接受的工作以前,先对项目观察一段时间(在 GitHub 上,你可以点击“Watch”来获取所有会话的通知),并且了解团体成员。
开一个 Issue通常,在以下情况下你应该开一个 Issue :
Issue 沟通的诀窍:
使用 pull request通常,在以下情况下你应该使用 pull request:
使用 pull reques 并不一定代表已完成的工作。在早期开一个 pull request 往往更好,这样其他人可以观察你的进展或给予反馈。只要在主题行里把它标记为“WIP”(进行中的工作)。以后你总能添加更多的提交。 如果项目是在 GitHub 上,这是怎样提交一个 pull request 的方法:
如果你第一次使用 Pull Request,查看“ 做一个 Pull Request ”,这是 @kentcdodds 创建的,可作为一个免费的演练资源。 第六部分:提交贡献之后会发生什么你做到了!祝贺你成为一名开源贡献者。我们希望这是许多次中的第一次。 在你提交贡献之后,会发生以下情形之一: 你没有得到回应。但愿你在做贡献以前检查过项目的活跃迹象。然而,即使对一个活跃的项目来说,也有可能你的贡献得不到回应。 如果超过一星期了你还没有得到回应,有理由在同一个线程(thread)中礼貌地回复,请某人做审查。如果你知道审查你的贡献的合适的人的名字,你可以在线程中@-提到他们。 不要私下接触那个人;记住,公开的交流对开源项目来说至关重要。 如果你做了一个礼貌的“碰撞”,还是没人回应,那可能永远也不会有人回应。这种滋味不好受,但不要因此气馁。每个人都经历过这种事!你没有得到回应可能有很多原因,包括可能不受你控制的个人境况。试着找到另一个项目或方式做贡献。如果有什么理由来解释为什么在其它团体成员投入这个项目此并作出回应前不要在贡献项目上投入太多时间的话,这就是很好的一个。 某人要求对你的贡献做改动。你常常会被要求对你的贡献做改动,无论是对你的想法范围的反馈,还是对你代码的改动。 当某人要求做改动时,要作出响应。他们花了时间审查你的贡献。开了一个 pull request 然后就走掉是不好的表现。如果你不知道怎样做改动,研究该问题,然后如果需要的话寻求帮助。 如果你不再有时间在该 Issue 上工作(例如,如果会话已经进行了几个月,你的境况发生了变化),让维护者知晓,这样他们就不再期待一个回应。其他人可能乐于接手。 你的贡献没被接受。最后,你的贡献可能会,也可能不会被接受。但愿你没有在那里面做太多的工作。如果你不确定它为什么没被接受,要求维护者的反馈和说明是完全合理的。然而最终,这是他们的决定,你需要表示尊重。不要争论或怀有敌意。如果你意见不同,始终欢迎你 fork 并在你自己的版本上工作。 你的贡献被接受了。好极了!你成功地做了开源贡献! 第七部分:你做到了!不管你刚刚完成了你的第一个开源贡献,或者你正在寻找新的贡献方式,我们希望你收到鼓舞并采取行动。即使你的贡献没有被接受,当维护者付出努力帮助你时,不要忘了说声谢谢。开源正是由像你一样的人造就的:选一个 Issue 、开 pull request 、评论,或逐一举手击掌。 看完本文有收获?请分享给更多人 关注「伯乐在线」,看更多精选 IT 职场文章
|
|