Rust 社区求变,PHP 大旗不倒?

dc628eb826033182b76d8b71d3279407.png

文 | 一君

出品 | 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”,暗示了“信任”与“鲁棒性”。

9b0295c5a006ae29ec7d7001126ffca3.png

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 实习。”

efb4cc25429100d75c9aa08e1387af66.png

(Rust 社区活动,来源:https://www.rust-lang.org/zh-CN/community)

然而,实习生组成的团队虽然解决人手短缺的问题,但随着实习期结束,团队换血会更加频繁。

并且,在这一阶段,Rust 的核心成员几乎都来自 Mozilla 内部,这似乎也奠定了 Rust 团队“寡头政治”的雏形。

Mozilla 断臂

Rust 在 Mozilla 的滋养下成长了 11 年。直到 2020 年 8 月 11 日,Mozilla 宣布将决定重组公司,并裁员约 250 人,其中就包括 Rust 项目和 Rust 社区的活跃成员。

d4b895f7f30adde4f9f32e749ae4d449.png

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 的介绍只有短短几行权利描述,成员如何选拔、责任如何等等都看不到。当然,其他团队的介绍也同样简单。

5805d8d4ec0060d446bad88f0eff31e0.png

就连 9 月的 Core Team 换血,也是未经公开决策的直接任命:“今天宣布对 Core 团队的成员进行一些更改:Ryan Levick、Jan-Erik Rediger 和 JT 将加入 Core 团队。”

然而,开发者对于近期 Rust 社区的改变并不买账。一位在 Rust 社区呆了 6 年的开发者发文痛斥 Core Team:

Core Team 成员种种拒不配合、粗暴打压的态度,证明他们完全是把 Rust 当成了自己的专属品、甚至是豢养的“宠物”。

这是个完全自利的团体,只会坚定维持自己的派系、实施自己的目标,头脑中压根没有组织利益或者合作之类的概念。

我个人希望 Core Team 的成员们辞职,并彻底解散整个 Core Team。

c03e7486b0e96f69a04bcae3a3188eb0.png

不过,近日 Linux 内核正添加对 Rust 作为第二语言的支持。Linux 内核和 Rust on Linux 的主要开发者 Miguel Ojeda 近日向 Linux Kernel 邮件列表提交了一个新补丁 (v2),进一步推进了 Rust for Linux 的工作进展。Ojeda 透露,继 Arm、谷歌和微软之后,红帽方面也表达了他们对该项目的支持意向。可见,Rust 的实力还是不容小觑,作为语言界近几年的“新宠”,也期待 Rust 的社区治理也能越来越好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos安装vsftp后的虚拟用户设置

2019独角兽企业重金招聘Python工程师标准>>> 安装好vsftpd之后,有的时候需要配置虚拟用户,可以先写一个login.txt,奇数行为用户名,偶数为用户名密码,例如: user1 password1 user2 password2 然后将其生成文…

2021 .NET 开发者峰会顺利在网上落幕,线上直播回看汇总

.NET Conf China 2021 是面向开发人员的社区峰会,基于 .NET Conf 2021的活动,庆祝 .NET 6 的发布和回顾过去一年来 .NET 在中国的发展成果展示,它是由中国各地区的技术社区共同发起举办、知名企业和开源组织联合协办,是年度国内规…

使用 HP 3PAR Peer Persistence 实现 vSphere Metro Storage Cluster (vMSC)

配置图示如下:测试结果方案HP 3PAR StoreServ Storage 系统行为VMware HA 行为单个阵列主机路径故障主机使用备用路径来维护卷访问。未观察到影响单个阵列节点故障主机使用站点上未出现故障的阵列节点的备用路径来维护卷访问。未观察到影响单个存储站点间链路故障无…

java反射--注解的定义与运用以及权限拦截

自定义注解类编写的一些规则: 1. Annotation型定义为interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口. 2. 参数成员只能用public或默认(default)这两个访问权修饰 3. 参数成员只能用基本类型byte,short,char,int,long,floa…

微信公众平台消息接口开发(2)-封装weixin.class.php

微信公众平台消息接口开发(2)-封装weixin.class.php 一、封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理。 我们就考虑在这个基础上做一次封装,weixin.class.php…

这个外挂要上天了!教一千遍都不会的数理技巧,还不如搞懂最根本的概念!

▲ 点击查看数理化的学习对于很多孩子,包括家长都是一个大难题。比如,我们要教孩子认识动物,一般是要给孩子看动物的图片或实体,孩子自然就对这个动物有个认知。要教孩子数字,就会用一件玩具、两个苹果这种和现实有关联…

.NET 6新特性试用 | SDK工作负载

前言为了应对.NET SDK能够支持的程序集项目(例如iOS、Android、WASM)的不断增长,从.NET 6开始,允许用户仅安装必要的SDK(例如ASP.NET Core),而不是一次性安装“完整版”SDK。这一切的基础&#…

“24小时城市图鉴”看人间,每个城市都有属于她的独特记忆!

全世界只有3.14 % 的人关注了爆炸吧知识一个城市的名片是留给人们对一座城最初的印象,无论是车站、居民区,每个城市都有着属于她自己的故事。由央视纪录频道推出的系列纪录片《城市24小时》(第一季)聚焦郑州、武汉、深圳、成都、厦…

史上最可怕最震撼的46亿年世界历史!看完我跪了....

▲ 点击查看雨果在《笑面人》中曾说过:历史是什么,是过去传到将来的回声,是将来对过去的反映。哈佛大学、哥伦比亚大学、加州大学,这些精英摇篮,都要求所有学生必须选修历史。马云在演讲中说,自己喜欢历史&…

使用 dotnet format 格式化代码

使用 dotnet format 格式化代码Introdotnet-format 在之前的版本是一个独立的命令行工具,在 .NET 6 里已经成为了 SDK 的一部分,我们可以使用,使用 dotnet format 我们可以结合 editorconfig 保持代码风格的一致,我们也可以将 dot…

计算机管理用户和组无法访问,同一工作组无法访问如何解决【详解】

在生活中,不知道你是否和小编一样:计算机会出现各种各样,千奇百怪的问题,其中最常见的是同一工作组无法访问的问题。由于某种不知名的原因,在打开计算机网上邻居时,计算机会弹出讨人厌的提示——无法访问。…

关于Asp.net core配置信息读取的源码分析梳理

概述我们都知道asp.net core配置信息的读取离不开IConfigurationSource和IConfigurationProvider这两个类,ConfigurationSource可以提供一个ConfigurationProvider,然后去读取信息。究竟他们之间有着怎样的千丝万缕,我们一起来看看源码。首先…

MCGS与PLC通讯不上

为什么80%的码农都做不了架构师?>>> 组态串口参数错误 应为偶校验 转载于:https://my.oschina.net/5star/blog/118301

MySQL案例分析--QueryCache

QueryCache联动内容:http://blog.itpub.net/29510932/viewspace-1694922/ -------------------------------------------------------------------------------------------------正文--------------------------------------------------------------------------------------…

Android之PowerManager简介

android.os. PowerManager 通过 PowerManager 类我们可以对设备的电源进行管理。对该类API的使用将影响到电池寿命。只有在必须使用WakeLocks的时候,才使用WakeLocks,且在不使用它的时候要及时释放(release). 默认情况下,当用户对手机有一段时间没有操作后࿰

什么时候告白最合适?

1 电饭煲吐血了!(素材来源网络,侵删)▼2 比冰淇淋掉地上更悲剧的事(素材来源网络,侵删)▼3 老师的火气又上去了▼4 什么时候最适合告白(via.银教授,侵删)▼…

helloworld:一个完整的WCF案例

服务端 1.创建一个空的解决方案:WCFDemo: 2.创建一个宿主控制台程序:Host 3.右击Host项目,选择“添加”--“新建项”,选择“WCF服务”创建名为“Service1.cs”的服务 如此:VS2010已经为我们创建了 IService1.cs Service1.cs a…

极简实用的Asp.NetCore模块化框架决定免费开源了

背景在开发这个框架之前,前前后后看过好几款模块化的框架,最后在一段时间内对ABP VNext痛下狠心,研究一段时间后,不得不说 ABP VNext的代码层面很规范,也都是一些最佳实践,开发出一个模块效率也很高。但不得…