文 | 一君
出品 | OSC开源社区(ID:oschina2013)
上月底发生了两件开源语言相关的大事。
一是 JetBrains 牵头成立 PHP 基金会,希望能确保语言的长寿和繁荣。二是 Rust 审核团队集体辞职,理由是 Rust 核心团队造成了“寡头政治”。
近年来,由于各个大厂的押注,Rust 风头正盛,但是由于其过高的学习成本、替换工程巨大等等原因,实际上是叫好不叫座。再加之最近社区陷入混乱,不免让人怀疑 Rust 是否真有其背后的“金主爸爸”们说的那么好?反观 PHP,虽然常常被唱衰,但使用率基本稳定在前十,而且随着新版本的发布、基金会的成立,反倒是一派欣欣向荣之象。
而单从社区治理的角度来看,两个语言社区的风格与发展也是截然不同。本文分成上下 2 篇,分别聊聊 Rust 和 PHP 的社区发展。
Rust 救急
2006 年,编程语言界正是各个语言割据争霸的时候,也有许多工程师抱着“自己写一个编程语言”的梦想进入战场。Rust 之父 Graydon Hoare 正是其中一位。
Graydon Hoare 作为职业编程语言工程师,工作日常是给其他语言开发编译器和工具集,参与过 GCC、Clang、Swift、Tracemonkey 等许多编译器项目,但他并没有参与这些语言的设计工作。
这样的境遇让他萌生出开发一个属于自己的语言的想法。Graydon Hoare 认为,那些为开发者所熟知的语言的优点并不能使其成为一门应用广泛的系统语言,而且部署在语言中的内存模型也不够安全且非并发。在他看来,环境已经发生变化,互联网高度关注安全性和并发性,所以那些青睐于 C 和 C++ 的设计方式也应该不断发生改变。
他想做出一个能兼顾安全的、好用的语言。埋头三年,最终他在 2009 年向上司展示了自己业余时间的研究成果——Rust。
自然界有种叫做“锈菌(Rust Fungi)”的真菌,寄生在植物中引发病害,被称为“本世纪最可怕的生态病害”之一。锈菌的生命力非常顽强,生命周期内可以产生 5 种孢子类型,而且还能互相转化。Rust 语言 logo 上的 5 个小圆圈便是对应 5 种孢子,指代 Rust 语言“鲁棒性超强”。此外,“Rust”在字形组合上也糅合了“Trust”和“Robust”,暗示了“信任”与“鲁棒性”。
Mozilla 对 Graydon Hoare 的工作成果非常感兴趣,对 Rust 寄予厚望,希望它能比 C++ 提供更好的并发性,安全性和易用性,甚至将其作为浏览器堆栈重构长期项目的一部分。2010 年左右,Mozilla 的研发团队在 Firefox 的开发过程中遇到了瓶颈。Firefox 底层实现主要用 C++ 编写,尽管团队拥有最佳的实践经验和丰富的工程技术人才,但是在编写浏览器内核这样拥有如此复杂的高性能、并行化和内存安全要求的代码时,仍然很容易出错。据统计,Firefox 中有超过 70% 的漏洞与内存安全有关。而 Rust 恰恰可以弥补这一漏洞。
虽然 Mozilla 看重 Rust 在技术上的种种优势,组建专门团队继续开发,但这并不代表他们对于开源语言社区的治理有足够经验。
据之前 Rust 核心团队成员、Mozilla Research 的资深研究工程师 Brian Anderson 透露,他曾从事 Rust 编程语言方面的工作 6 年。在 Rust 团队时,无论如何, Rust 总是人手不足,“我记得当时对此很生气:我们如何在如此少的全职工程师的情况下与 Google 和 Apple 竞争?”
解决问题有两个路径,一是培养多元化的贡献者社区,但用 Brian Anderson 的话来说,“这是一个缓慢且不确定的过程”。
另一个方式则是靠实习生。当时 Mozilla 内部负责 Rust 开发工作的核心人物还有戴夫·赫尔曼,他是一名编程语言理论学者,也是一名宏专家,更是公司内部职位最高的 Rust 信徒。他曾为 Rust 团队向公司申请资源和人员,同时还凭借自己在学术界的声望为 Rust 团队招到了许多实习生开发者。
Brian Anderson 回忆道:“一个值得赞赏的事实:Rust 主要由学生创建,其中许多人在 Mozilla 实习。”
(Rust 社区活动,来源:https://www.rust-lang.org/zh-CN/community)
然而,实习生组成的团队虽然解决人手短缺的问题,但随着实习期结束,团队换血会更加频繁。
并且,在这一阶段,Rust 的核心成员几乎都来自 Mozilla 内部,这似乎也奠定了 Rust 团队“寡头政治”的雏形。
Mozilla 断臂
Rust 在 Mozilla 的滋养下成长了 11 年。直到 2020 年 8 月 11 日,Mozilla 宣布将决定重组公司,并裁员约 250 人,其中就包括 Rust 项目和 Rust 社区的活跃成员。
Rust Core 团队随后公开表示“Rust 项目没有危险”,紧接着又发博客详细说明,博客中承认了裁员风波对 Rust 是有影响的,“可以理解的是,这些裁员对 Rust 项目本身的影响产生了很多不确定性和混乱。”
Rust Core 团队提到几点重要信息。一是 Rust 有来自不同背景和雇主的领导者和贡献者,这种多样性是一种重要的力量。而且 Rust 团队的成员资格是授予个人的,并且与雇主无关,所以即便是被裁掉的员工,也依然有 Rust 团队的成员资格。
二是一个普遍的误解——所有参加 Rust 领导的 Mozilla 员工都把这个当做了他们工作的一部分。实际上,Rust 领导层中的许多 Mozilla 员工都是在个人时间内为 Rust 做出贡献的,而不是做为工作的一部分。
但是 Rust Core 团队也提到,有些人可能会选择减少他们的参与“我们了解并非所有人都能继续做出贡献,我们将完全支持他们的决定。”
为什么 Mozilla 会选择裁掉部分 Rust 团队员工?或许从 Mozilla 的转型方向中可窥见一斑。
在名为《改变世界,改变 Mozilla》的公开信中,Mitchell 透露,公司在 2020 年之前已经做了很多规划,包括对新产品的投资,但 COVID-19 的全球大流行完全影响了他们的经济状况,这些计划不再可行,裁员也因此变得更加必要。
与此同时,在 Mitchell 看来,Mozilla 的组织结构在过去很长一段时间以来都不是很恰当,为了“创造新的产品,创建更好的互联网”,组织需要进行大的重组,以确保财务状况的长期稳定。
除了对产品,对技术和对社区的更多关注外,Mozilla 现在也强调 “focus on economics”。公开信指出,“一切都是免费的”这种旧模式会带来不好的后果,应尝试探索不同的商业机会,做价值交换。“提倡为公共利益创造经济价值的模式”也正是 Mozilla 宣言里的一部分。
Rust 作为 Mozilla 免费向外界提供的开源语言,很难从实际上给 Mozilla 带来可观的经济收益。Mozilla 接下来的动作便是似乎希望 Rust 至少能通过社区自给自足。
自省与求变
在 Mozilla 裁员的催化之下,Rust Core 团队做了两件事情。
一是 2020 年 8 月 18 日,Rust Core 团队宣布计划和 Mozilla 创建一个 Rust 基金会,并称从 2019 年其实就已经开始调研有关 Rust 基金会的想法了。
紧急成立基金会当然还是为解决燃眉之急:“随着项目规模、采用率和成熟度的增长,我们开始感受到成功的痛苦。我们已经制定了法律和财政需求,而我们目前的组织缺乏能力来满足这些需求。虽然我们在 Mozilla 的帮助下成功了很长一段时间,但我们已经到了一个很难在没有合法名称、地址和银行账户的情况下运营的地步。‘Rust 项目是怎么签约的?’已经成为我们不能再拖延的问题了。”
前期基金会的搭建工作是由 Rust Core 团队挑选出成员组成一个项目组,推动成立基金会的工作。
筹集近一年后,2021 年 9 月,Rust Core 团队宣布由华为、Microsoft、Google、AWS 和 Mozilla 作为创始成员的 Rust 基金会(Rust Foundation)正式成立,并将于美国东部时间 2 月 9 日下午 4 点举行第一次董事会会议。基金会成立之后,与 Rust、Cargo 和 crates.io 相关的各种商标和域名都将转移到基金会中,基金会也将为它们所产生的费用承担财务责任。
尽管 Rust Core 团队还表示他们不会过分依赖单一赞助商,但基金会的成立反倒也引起了社区对于“大企业垄断”的担忧。此前在 Rust 社区有人推测:AWS 在试图“接管” Rust,具体表现在作为 Rust 基金会创始成员的 AWS 雇佣了多名 Rust 维护者和贡献者。
但换句话说,Rust 适用场景天生就是对安全性需求高,而且完成 Rust 对 C 语言构建系统的替换并非易事,这便使得其用户群本就集中在大企业。Rust 和大企业英雄惜英雄的情况下,走得近些也就很自然了。
另外,Core Team 自身也在今年 9 月做了一轮小范围内的换血。
Core Team 发布了一篇博客,坦诚在 Rust 项目的早期,核心团队的组成几乎完全由 Mozilla 员工组成,全职在 Rust 上工作。
随着 Rust 的发展,以前在 Mozilla 工作的人离开了新工作,新人出现了。许多新人并没有全职从事 Rust 工作,因此集体时间投入减少。目前,Core Team主要由志愿者组成,没有 Core Team 成员全职从事 Core 团队的工作。
迄今为止,Core Team 本身的运作方式仍然是个大谜团。无论是在 Rust 的官网,还是在基金会,Core Team 的介绍只有短短几行权利描述,成员如何选拔、责任如何等等都看不到。当然,其他团队的介绍也同样简单。
就连 9 月的 Core Team 换血,也是未经公开决策的直接任命:“今天宣布对 Core 团队的成员进行一些更改:Ryan Levick、Jan-Erik Rediger 和 JT 将加入 Core 团队。”
然而,开发者对于近期 Rust 社区的改变并不买账。一位在 Rust 社区呆了 6 年的开发者发文痛斥 Core Team:
Core Team 成员种种拒不配合、粗暴打压的态度,证明他们完全是把 Rust 当成了自己的专属品、甚至是豢养的“宠物”。
这是个完全自利的团体,只会坚定维持自己的派系、实施自己的目标,头脑中压根没有组织利益或者合作之类的概念。
我个人希望 Core Team 的成员们辞职,并彻底解散整个 Core Team。
不过,近日 Linux 内核正添加对 Rust 作为第二语言的支持。Linux 内核和 Rust on Linux 的主要开发者 Miguel Ojeda 近日向 Linux Kernel 邮件列表提交了一个新补丁 (v2),进一步推进了 Rust for Linux 的工作进展。Ojeda 透露,继 Arm、谷歌和微软之后,红帽方面也表达了他们对该项目的支持意向。可见,Rust 的实力还是不容小觑,作为语言界近几年的“新宠”,也期待 Rust 的社区治理也能越来越好。