如果你是一名开发者,并且你拥有任何比特币,那么为比特币的核心做出贡献可能是你能做的最好的事情之一,这可以帮助你进行投资。在本文中,我将简要介绍如何为Core的开发做出贡献。
你想成为核心开发者
在我们进入为Core做贡献的实际细节之前,我们需要知道一些可以解决问题的注意事项。
首先,比特币核心是高标准的。作为一个菜鸟,不太可能会合并疯狂的工作量证明变更,将请求提交到核心中。像任何高标准的管理一样,你从零名誉开始,一步步往上爬。
好消息是没人在乎你的背景。无论你是14岁的印度人,还是45岁的世界500强公司首席技术官,唯一真正重要的是你的工作质量。
坏消息是,你必须愿意把自己留在门口。没人在乎你有多少年的经验,也没人在乎你有什么修复比特币的好点子。你的代码、注释、文档和测试的质量很重要。
其次,你应该相应地设定你的期望。著名的核心开发人员如Pieter Wuille、Cory Fields和Gregory Maxwell通过多年的汗水和泪水赢得了他们的尊重。加个PR纠正拼写错误不会赢得Pieter Wuille的尊重。好的工作会赢得你的认可和尊重,但前提是你已经生产了一段时间。
第三,这不是一条容易的路。成为X公司的顶级开发者并不一定就能成为优秀的核心开发者。这有很多原因,但总的来说,你的工作必须满足一些非常高的测试、文档和代码审查标准,即使是非常有能力的技术公司。
总之,如果你谦虚,追求卓越,Core的贡献会让你成为更好的开发者、代码评审者、记录者和测试者。
先决条件
你需要一些知识和技能来开始。
比特币有两种主要语言,C和Python。如果你想有所贡献,你很可能至少要学习其中的一些。
源代码控制由Git管理。最起码要知道怎么从origin获取,怎么创建话题分支,怎么rebase。如果您正在测试其他人的代码,您还应该知道如何将多个存储库添加到本地开发环境中,以便您可以获取和测试代码。
所有对Core的改动都是在GitHub上PR的基础上合并的,所以你需要一个Github账号。
最后,你需要知道如何在平台上安装和删除软件包。这些说明非常详细,但是它可以帮助您根据需要添加和删除ZMQ。
开始
一开始你要做的第一件事就是看一些文件。自述文件和投稿指南是一个很好的起点。
然后,转到doc目录并阅读那里的自述文件。doc目录中的所有文档都在README中有描述,如果你在任何时候迷路或困惑,可以参考它。
请注意,你不必知道我建议的每一个文档中的所有内容。如果你遇到不懂的东西,IRC、StackExchange、Slack上有很多非常优秀的人可以帮助你。
从源代码构建
既然您已经阅读了开发应该如何工作的基础知识,您应该首先从源代码构建比特币。首先,克隆比特币Git储存库:
git克隆git@github.com:比特币/比特币
一个
下一步将是设置您的开发环境。这很大程度上取决于你使用的平台,但是编译是你需要经常做的事情,所以把这部分放下来是很值得的。
此外,您还需要运行所有的集成测试,所以在执行下面的指令时,一定要打开GUI和ZMQ。
Linux/unix说明在这里。
操作系统描述在这里。
Windows说明在这里。
OpenBSD指令在这里。
当你设置环境的时候,如果有些东西是无效的,请在提交文档之前谷歌错误。前面说了,IRC,StackExchange,Slack都是很好的资源,但是请不要问简单的问题,消耗大家的时间。
试验
现在你已经编译好了所有的东西,下一步就是测试软件了。幸运的是,比特币核心有各种单元和集成测试来检查你刚刚编译的软件是否正常工作。
首先,运行位于此处的单元测试。这个单元是用其他所有东西编译的,所以您需要做的就是运行生成的二进制文件。检查是否所有测试都已通过。如果他们不这样做,他们可能会错过一些指示。
如果所有单元测试都通过了,请在这里运行集成测试。您将运行扩展测试。特别是,修剪测试需要很长时间来运行,所以您希望将来排除集成测试。
再次检查是否所有测试都已通过。在摘要最终显示之前,您会看到许多点。如果有些东西失败了,你可能会错过一些指令,虽然有时候,一些集成测试可能会因为RAM和CPU而变得有些浮躁。
贡献类别
现在你已经建立了系统,你可以开始做贡献了!
你可能觉得贡献就是加一堆代码,发PR,得荣耀。实际上,很多工作都围绕着别人提交的审查和测试代码。它有助于理解如何合并PR所涉及的步骤。
有人创建了变更并通过Pull Request(PR)提交了代码。
一个或多个用户查看代码。
一个或多个人的测试代码。
当足够多的人审查和测试代码时,维护人员会合并代码,只有少数人能做到。
大多数人认为对一个开源项目的贡献只是代码贡献,但实际上测试和评审对项目的成功更重要。正如我们在最近以太坊的奇偶校验中看到的,缺乏审查和测试通常是许多项目中安全漏洞的原因。
检查和测试也很关键,因为通常很难有一种涵盖所有情况的对抗心态。让许多人来查看和测试代码有助于发现利用代码的可能方式。
最后,评审和测试不仅对项目有好处,对你也有好处!审查和测试会迫使你对代码库有更多的了解,甚至比写代码更能让你理解。
开始
为了适应投稿流程,你不应该先加很多PR。相反,作为一个没有名气的新开发者,最好的做法是开始审查和测试别人的工作。审查和测试通常是瓶颈,所以你可以为社区做出贡献,同时赢得一些声誉。
值得一提的是,Greg Maxwell之所以在开发者中享有如此好的声誉,部分原因是他是一个非常好的评论家和测试者。当他找到破解它的方法时,他拥有世界级的天赋,他检查和测试的代码比编写的代码还多。我保证你自己复习测试了一些代码之后,会更加感激他。
况且代码一般只写一次,却要读很多次。因此,审查是一个非常重要的步骤,因为它揭示了代码的“可读性”。一般的经验法则是,对于您执行的每个拉请求,您应该检查大约3个拉请求。一开始,你可能希望这个评论比例高于pull请求。
如何评论?
通常,在知道代码在做什么之前,您无法正确地审计拉请求。正如他们在《编码》中所说,写比读容易得多,所以要花些时间真正理解代码。
通常,为了掌握PR中发生的事情,你必须查找正在使用的函数和方法,并仔细检查代码的上下文。如果你很困惑,而你正在审查的代码在IRC上,你可能需要直接提问。很多时候,公关写手都是很感谢审稿人的,也很愿意帮助你。
就像评论一篇文章或一本书一样,你应该注意许多事情,即:
代码做了它应该做的事情了吗?
代码是否经过了充分的测试?
围绕代码的注释都有用且准确吗?
代码是否清晰,后期可以轻松修改?
一般来说,如果你不认同某件事的完成,最好是假设你不知道是怎么回事,而不是开始长篇大论。感性和机警会让你在这里大有作为。记住,你是在用很多方式评论别人的孩子。问一些温和的问题,至少在开始的时候。通常,这些程序员不知道你或你的意图。当某件事是一个小问题而不是一个可能摧毁某件事的大问题时,要非常清楚。听起来让学生努力掌握提高的内容比偷听要好。
一旦你确定了代码想要达到的目标,你就可以评论它是否值得去做。在你建立一些声誉之前,请远离任何可能被认为是负面的评论。
审查代码后,请用适当的同行审查意见对PR进行评论。如果你想要NACK,请重新开始,并假设你不明白发生了什么。和作者谈,问问题,直到你确定这是一个糟糕的公关。即便如此,还是要和更有经验的人谈谈,以确保万无一失。
怎么考?
为了正确测试,您必须请求从pull下载代码,编译并再次运行测试。如果能想出一个办法,用某种方式手动测试功能,那就更好了,但也不是必须的。
在大多数情况下,拉请求将包括一个或多个测试。如果编码器没有提供测试覆盖,试着理解为什么,重构通常不是因为显而易见的原因。如果你觉得应该测试,可以在PR里写“这个需要测试”。更好的是,自己写测试,让作者知道可以在PR里挑出来!这是从您正在审查的代码的人们那里建立一些好感的好方法。
作为测试人员,您的工作是确保测试通过,并且它们完全覆盖了引入的功能。评论中的一个好评可能是“如果这样的情况可以通过一个测试覆盖来做到这一点,那就太好了”。
测试结束后,请务必在PR中注明您已接受测试。
更好的拉取请求
最终,当你觉得你在创造自己的拉动式请求时,你就会达到一定的水平。拉式请求可以是任何内容,从添加文档到就关键功能达成一致。无论发生什么情况,提出一个好的拉式请求的关键是让它不用回顾就能容易理解。
正因如此,请不要让你的PR一次提交3000行修改来折磨你的审稿人。将这些变更分成少于300行(或者少于100行)的易于评审的提交。)并对它们进行适当的分组。例如,您应该将格式更改放入一个提交中,并将实际编码更改为另一个提交中另一个代码块的大移动。
试着在每次提交中解释你在做什么,以及你所做的背后的原因。这部分我怎么强调都不为过。逆向思维让PR里的一切都变得简单易懂!如果你不这样做,你就不会让任何人审查你的代码。
当评论者对某事发表评论或提出修改建议时,请试着理解其中的原因。如果你不明白,请问,直到清楚他们想让你做什么。如果你同意,请做出适当的改变,并让你的审计人员知道,但如果不同意,请确保你与他们进行了成熟而机智的对话,以了解如何获得他们的确认。
一开始的公关概念
这里有一些你可以立即提供的公关创意(请记住,请检查你提交的PR的3倍!)
使文档,尤其是与设置相关的文档清晰。
为尚未测试的东西编写单元测试或集成测试。
用未文档化的代码写注释,帮助别人找到自己的路。
结论
比特币核心使用的软件开发实践通常不会在其他环境中得到遵循。大多数进入Core开发的人都觉得这个过程太严格,限制太多。我保证每一步都是有原因的。
记得要有礼貌,温柔,委婉。抱着谦虚的态度进来,渴望学习,这不仅会让你成为更好的开发者,也会让你成为比特币社区的优秀力量。
#欧亿OKEx##比特币[超级对话] #