你想成为一名核心开发者吗?

-图片源自上次 Ewasm 团队冲刺写码。其中核心开发者只能用 6 号字体写代码。-

虽然核心开发者的准确定义尚存异议,但这个术语一般是指为区块链底层技术(比如底层协议本身或底层密码学技术、 P2P 技术等)做开发的开发人员。至于以太坊,除了指实现各种客户端,还指基础层的基础设施,如扩容技术(分片、Plasma 等)、协议(如 Whisper 和 Swarm) 以及就我而言的 EVM。

我注意到有些社区成员倾向于为“核心开发者”这词赋予一定的威望和神秘色彩。我猜这和认知偏见有关,如确认偏误(校对注:confirmation bias,指个人选择性地回忆和搜集有利细节、无视不利信息,来支持自己的想法);这还和人类倾向有关,如幻想性错觉,这是一种凭空想象出一些图画和关系的倾向。这些倾向合在一起就使得有些人不知怎么把核心开发者看成是有点与众不同、独特的或是全能的——更极端一点的话就是想象他们一起密谋,然后私下做出了影响协议的决定。这是最离谱的想法了,于是我想澄清一下事实,并揭开这个职业的神秘面纱。

注意:我是在写我自己在以太坊社区中的经历。虽然我说的话不代表比特币或其他平台的核心开发者,但我猜很多也同样适用。

我是如何成为一名核心开发者的

我获得了计算机科学学士学位,并从事专业软件开发有近 12 年了。栈顶和栈底工作经验我都有:从对冲基金里的定量数据分析到 DevOps (配置数据库、虚拟机和容器、邮件和 DNS 服务器等)再到全栈网站和手机应用程序。我合伙创办了好几家科技创业公司,但是自从去年发现了以太坊这一平台后就离开了最后一家公司,转而全身心投入到以太坊中去了。

- Ewasm 团队在上月 ETHBuenosAires 的黑客马拉松上-

我为几个项目做了一些开源贡献后,才转而关注 Ewasm,即 Ethereum-flavored WebAssembly ,这是一项用基于 WebAssembly 虚拟机构建的升级版现代化引擎来取代 EVM (以太坊虚拟机) 的计划。这个项目让我感到很兴奋,因为我一直以来都对编译器和系统感兴趣,虽然我从读大学以来就没有机会接触任何底层的东西。我也想尽可能全面而透彻地了解以太坊,而且我相信,学东西要从栈底开始努力地一步一步往上走——而我们不可能找到比 assembly 和虚拟机更底层的东西了。当然啦,团队也是很关键的因素。我在去年的 Devcon 3 上遇到了 Ewasm 团队的多名成员,今年早些时候我参加了团队的其中一次冲刺写码。剩下的事情就大家都知道啦。

实际上我做些什么

我加入团队时就已经有很多 Ewasm 基础架构了,所以我就帮忙写测试并检测和修复漏洞,以备这些技术有一日派上用场。我大部分时间都在埋头苦干,写了很多 WAST (WebAssembly 文本),比如这个测试。我还开发 JavaScript 工具,如 evm2wasm,一个能让旧式 EVM 字节码在 Ewasm 引擎上运行的转译器;还有 Hera, 即把 cpp-ethereum 客户端连接到 Ewasm 后端上的 C++ “粘合代码(glue code)”。

-我常用的开发环境:用我老旧但可靠的 Macbook Pro 跑 iTerm2 和 zsh,在里面运行 tmux 内部的 vim 编辑器-

随着技术愈加成熟和稳定,随着我们接近 Ewasm 测试网的公开发布,我开始在稍微抽象一点的层次思考和工作。由于从事全栈应用程序开发多年,我对 JavaScript 很感兴趣,而且有个梦想,那就是用 JavaScript 或与之类似的其它东西如 TypeScript 来写以太坊合约。我朝着这个目标迈出了一步,用 AssemblyScript 编写完了我的第一个可以使用的概念证明合约,而且将继续开发这个工具链和文献。

- Ewasm 社区会议于 2018 年 1 月第一次团队冲刺期间在里斯本举行。-

除了写代码,我工作中还要出差去参加会议,去分享我们的工作、了解其他团队的工作内容、和我的远程团队会面进行面对面冲刺写码,并参与以太坊治理活动,如所有核心开发者的视频会议、Fellowship of Ethereum Magicians 和 #EIP。我希望日后可以把经验的归纳写作也逐步包括进来,并帮忙招募更多核心开发者。

治理、权力和责任

让我现在就拆穿认为核心开发者对以太坊协议有不正当影响这个迷思。虽然多数以太坊治理过程没有记录,并且是非正式的,但是 EIP(以太坊改进提案)过程有完整的文档记录,并进行了合理的制度化。

以下是极短版本:任何人在任何时候都可以提交一个方案(作为以太坊/ EIP 的 Pull Request),然后,在技术上达标的方案会被合并成草案(技术上未达标的方案可能在合并前要多次修订或完善)。这并不意味着方案一定会被执行,这只意味着根据 EIP 审议者们的判断,这个方案在技术上是达标的。之后,在核心开发者视频会议上,这个方案可能会被提出,核心开发者可能会决定同意并执行这提案,而提案激活以后,用户可能会选择下载并运行更新了的客户端软件。

考虑到这个过程技术含量很高,因此核心开发者在审查方案、保证其在技术上达标并讨论给定方案的执行细节及含义上发挥了重要作用。这整个过程都是在很公开的环境中进行的。所有 EIP 目前的状态及其讨论主题都可以在以太坊/ EIP 库中看到。以太坊魔术师协会论坛上公开讨论了很多方案。每次核心开发者电话会议的录音和笔记都可以从 ethereum/pm 中获得。

-以太坊的非正式治理进行中,巴黎,2018 年 3 月-

迄今为止,这个流程运作都很顺利。由于以太坊的重要性与日俱增,依赖网络的人、业务和应用程序的数量也越来越多,毫无疑问未来将会有更多涉及道德、哲学、经济和法律问题的有争议的事件出现(我写过一个这样的事件,而且我在这个视频里也讨论了这个话题)。在任何法律意义上,核心开发者都不是以太坊的“负责人”,但是就他们对技术方案有集体否决权这一点来看,他们是管理人。随着以太坊的成熟,这一责任会变得愈加复杂。现在也有人正在展开一场关于核心开发者角色演变的对话。

如何成为一名核心开发者

我先坦白一件事:成为一个核心开发者并不光鲜亮丽,而且并不是所有人都喜欢这个。你正在开发非常底层的基础设施,以致于普通人可能没注意到、或完全不了解。(如果你要给亲朋好友解释你的工作内容,那祝你好运!)工资也有点低,别人会靠你的工作致富成名,而你可能得不到任何赞许,你还必须得接受这一点。虽然 DX (开发者体验)非常重要,我们很少做接口方面的工作;而且,因为终端用户不会直接与我们的软件交互,我们也没什么机会去想 UX (用户体验)了。这是一种很需要自我驱动的工作。如果解决复杂的根本问题、写质量高且易于维护的代码以及建立一个有一天可能为上百万人服务的平台是你感兴趣的点,那成为一个核心开发者便是一个好的开始。

成为一个核心开发者没有秘诀。首先,理解并且热爱计算机科学和软件工程对你有很大帮助。核心开发者要处理计算机科学中重要又引人注目的根本问题,如设计更好的虚拟机、扩容技术、密码学和点对点协议。软件工程中的最佳做法如综合设计、测试和文献化对代码安全非常重要,这些代码可是要成为以太坊未来的基本层的。

不一定非要拿到计算机科学学位——毕竟也没有正式的工作申请流程——但是如果了解底层的概念如内存管理、网络、多线程等,并有相关经验,还熟悉软件设计模式,就会有很大帮助。

如果你已经具备了这些基础知识,那就找个现有的开源项目去做吧。有很多以太坊客户端,有的更成熟,有的没那么成熟,包括 geth、Parity、cpp-ethereum、Trinity、ethereumJ、ethereumjs 和 nimbus。还有些其他核心项目, 如 Casper、分片、geth-sharding 和 Ewasm。就我所知,所有这些项目都是完全开源的,也很欢迎新的成员来贡献自己的力量。而且由于像 Gitcoin 这样的项目的出现,你可以从你做出的很多贡献中获得奖金。

每个项目都有不同的贡献工作流和贡献者要遵循的不同要求。你要确保你在做贡献前回顾并了解这些指导方针。到库根里找 README.md (示例)或 CONTRIBUTING.md 文件 (示例) 里关于这些指导方针的信息,并看下这个由 Piper Merriam 和 EF Python 团队整理好的指导方针合集。如果有任何东西不清楚,不要不好意思问!除了通过 Github issues 和 pull requests 来沟通外,大多数这样的项目和社区都有非常活跃的 Gitter 或 Riot 频道可供寻求帮助。

-在 py-evm 库中被标记为 Good First Issue 的 Issue-

一旦你回顾完贡献者指导方针,就可以开始找被标记为 “ Good First Issue” 的未解决问题,比如 py-evm (Trinity) 库中的这些问题或 Parity 中的这些“简单”任务。

许多这样的项目和机构也在招募全职开发人员,而且它们倾向于招募已经为 Github 做出过贡献的人,所以,贡献代码是目前为止最好的起步方式。

最后记住,除了可以为现有的项目做贡献,你还可以建立自己的核心堆栈,尤其是当你不同意现有堆栈的某一方面或想用另一个堆栈进行实验的时候。近期这类项目的例子包括 ConsenSys 的 PegaSys、 Mana client、 nimbus 和 Prysmatic Labs.

我们还需要更多核心开发者。以太坊可能看起来相当成熟,但实际上,目前世界上只有约 50-100 名以太坊核心开发者在构建其 Layer-1 技术,支撑着一个应用开发者人数以百倍计、用户基础以千倍计的社区。我们打算构建一个可供数十亿人使用的系统,所以我们需要来自各行各业的人来贡献力量。加入 AllCoreDevs 频道参与讨论吧。如果你对为 Ewasm 项目贡献力量感兴趣,你也可以在 Gitter 上找到我以及 Ewasm 团队的其他成员。

作者简介: Lane Rettig 是一名独立的以太坊核心开发者,也是 Ewasm 团队的一名成员。他参与并帮助组织以太坊全体核心开发者会议。他还创办并帮助运营 Cryto NYC,这是一个位于曼哈顿的联合办公区域和社区,致力于使所有人都能使用区块链和其他分布式共识技术。他的 Twitter 是 @lrettig 。

特别感谢 Casey Detrio、 Erich Grant、 Fredrik Harryson 和 Afri Schoeden 就本文给出的很有价值的反馈意见。

原文链接: https://medium.com/crypto-nyc/so-you-think-you-want-to-be-a-core-developer-87cca2cb475e
作者: Lane Rettig
翻译&校对: 李丽 & 阿剑

本文由作者授权 EthFans 翻译及再出版。

你可能还会喜欢:

科普 | 以太坊改进建议(EIP)演示
科普 | ERC 和 EIP 代表什么呢?
干货 | ERC721: Non-fungible Token Standard

评论