什么是以太坊核心开发者(Ethereum core developer)?

很多人都有疑问,到底是什么因素决定了一个人能成为以太坊核心开发者(Ethereum core developer),或者说,这个词到底意味着什么。作为以太坊社区的开发者联络人,我深入参与到了以太坊 1.0 协议开发的日常运营中,也一直在运营以太坊核心开发者视频会议(也就是 “AllCoreDevs call”);自 2016 年下半年以来,每两周一次会议,安排在周五。那么,下文并不是一个权威意见,只代表我个人看法。本文中的任何内容都不代表我的雇主以太坊基金会的意见。
历史
以太坊 “core team”(核心团队)的称呼可以回溯到 2014 年 7 月的 Reddit 论坛上的一个 “有问必答” 帖子中,是由早期的以太坊团队回答的。在该帖子中,以太坊团队在自己的名字中添加了一个词,于是成为 “Ethereum core team”。到 2015 年底,以太坊联合创始人 Gavin Wood 创建了一个名为 “AllCoreDevs” 的 Gitter 频道,以太坊的核心开发者可以在其中沟通协议的开发事项。第一场以太坊核心开发者视频会议也是在这个频道中组织的。我也在我的旧文 “以太坊协议开发智力与网络升级协作” 中展开了 “AllCoreDevs” 视频会议的历史。
定义
以太坊核心开发者就是那些正在(currently)为以太坊底层协议开发提供重要贡献的人。重大贡献的一个例子就是给以太坊软件(在比 dApp 层更底层的层面,比如客户端代码)提交多个代码。(核心开发者的)另一个例子就是在为以太坊 2.0 撰写协议规范(protocol specification)的人。我在这里使用 “currently” 一词是因为,“核心开发者” 并不是一个授予某人的头衔,也绝不是永久性的。如果你不再提供贡献了,那你就只是一个 “前以太坊核心开发者”。举例而言,虽然以太坊联合创始人 Gavin Wood 曾经为早期的以太坊作出重大贡献,他现在已经不再被认为是以太坊核心开发者了,只是前核心开发者。
这里还有一个我在几年前写的定义,我放在了一个核心开发者会议记录的代码库里,用于定义哪些人能参加会议:
底层协议开发者、客户端开发以及核心的以太坊研究员受邀参与该会议。一般来说,每一种以太坊客户端都有代表参加,还有 Layer-1 研究/扩展方案团队的重要成员。有时候,虽非核心开发者、但对某个领域有专业经验的人员也会受邀讨论特定议题。如果你觉得你出席会议会对大家有所帮助,请通过 [email protected] 联系 Hudson Jameson。
因为我承担了组织以太坊核心开发者会议的责任,我一直在负责挑选参加会议的人选。请求列席会议的绝大多数人都能受到邀请。决定谁来参加会议基本上完全没有争议,因为会议实际上非常无聊,如果你对以太坊 1.0 协议改进没有兴趣,你根本就不想来参加。会议的议程是公开的,会议是实时直播的,也会保存在 YouTube 上,会议记录也有人撰写和公开,所以非核心开发者实际上不需要参加会议,可以在 YouTube 上看,或者事后阅读会议记录。
那研究员怎么归类呢?
现在有很多 “技术生态会议”,以太坊核心开发者会议、Eth2.0 会议、无状态以太坊会议。人们有时觉得以太坊核心开发者只包括那些参加了以太坊核心开发者会议的人,但这其实是不准确的。以太坊 2.0 的研究员和其他正在做重要研究(比如 beam sync 和无状态以太坊)的也是核心开发者,在我看来。我觉得以太坊 2.0 研究员被叫做 “Eth2 研究员” 在先、“核心开发者” 在后,只是因为他们所参与的会议名字和跟他们相关的事情。毕竟,通过会议而非 GitHub 库的代码提交来区分核心开发者和 Eth2.0 研究员,要更容易。
谁来决定某个人是不是核心开发者?
没有人能做这样的决定。没有谁被指定去决定谁有资格当以太坊的核心开发者。它是由贡献和声誉来主导的突变过程。下面这句话,来自 Jameson Lopp 的精彩博文 “谁控制着 Bitcon Core?”,说明了如何定义比特币核心维护者:
谁算是比特币核心维护者?在一段时间内做出高质量贡献、从而具备可观社会认可度的贡献者。
这个定义也适用于以太坊核心开发者。
有没有人能自称是核心开发者?
没有什么硬性手段能阻止一个人自称是以太坊的核心开发者。本来也是,任何人都能为以太坊协议开发作贡献(虽然他们的贡献不一定会被接受)。在以太坊社区中,我们还没有遇到 “冒名核心开发者” 引发的大问题。如果此类问题抬头,我猜怎么点出来还是取决于社区。而且就算那样,最终来说那也不过是一个帽子,我们不应该太过认真。
我曾经遇到一些人要求剥夺某人的核心开发者头衔的情况(因为该人在社区中的意见和行为)。因为这个头衔本身不是由某个人指定的,那整个社区自然完全有权宣布某人不是核心开发者。但这既不会把某个人对以太坊协议的贡献一笔勾销,也不意味着 TA 不再能参加核心开发者会议。这只不过意味着整个社区觉得某人当不起这个头衔。就我所知,迄今为止还没有出现过这种情况。
现在的核心 开发者/开发团队 都有谁?
为以太坊协议开发的团队和个人太多了,数不胜数。此外,还有些人虽然在开发协议,但并不希望被挂上这个头衔,也不想在什么博客中露面。以太坊客户端开发的美丽之处在于,以太坊 1.0 和 2.0 都有多个用不同语言开发的客户端,为网络提供了冗余性。客户端们致力于实现一个技术规范,而不是让某个客户端本身变成规范,让大家都来跟随它。因为我深度参与了以太坊 1.0 客户端开发的生态,我这里会列出几个活跃的以太坊 1.0 客户端。这个列表没有包括其他重要的团队,比如测试团队和 ConsenSys Quilt 研究开发团队。
geth(Go 语言)
Nethermind(.NET Core 语言)
OpenEthereum(Rust 语言)
Trinity(Python 语言)
ethereumJS(JavaScript 语言)
Besu(Java 语言)
结论
标签和头衔当然重要,但也不该过分看重。定义一组人为核心开发者,在你对以太坊协议层开发有疑问、想要问人的时候,是很有帮助的。但不用太在意谁是或不是以太坊核心开发者,因为最终来说,这是根据声誉和贡献而授予的荣誉,你不能把那些贡献都一笔抹消。
如果你对以太坊协议开发有兴趣,想作出自己的贡献,不要犹豫,来联系我!我会高高兴兴把你引荐到合适的人那里去。