Asahi Linux 是一个旨在为苹果 Silicon 芯片(如 M1★★、M2 等)设备提供 Linux 支持的项目。苹果 Silicon 芯片(如 M1、M2)采用了与传统 x86 架构完全不同的 ARM 架构,这导致 Linux 社区需要重新适配内核和驱动程序★★★。
Russinovich 说★★★:“为了安全性和可靠性,行业应该宣布这些语言已经过时。★★”
如果在社交媒体上羞辱别人没用,那告诉我什么有用? 因为我已经没招了。 我真心希望技术补丁和讨论能成为真正重要的东西,但我觉得我们在这方面遇到了困难★★,至少在内核开发过程的某些环节中是这样。 没有人会把这句话理解为支持在社交媒体上辱骂别人作为“解决方案★★★”。
有人怀念 Hector 所做的贡献,并认可他对于 Rust for Linux 未来悲惨状况的预判。
我是从 1991 年 12 月开始参与 Linux 开发的,对这个问题的看法也基于此。1995 年,我在麻省理工学院由 Stallman 赞助的自由软件会议上第一次见到你(这里指 Linus)和 Tove。当时我告诉你,北达科他州的癌症患者因为我们在 Linux 上的工作以及优化癌症中心的医疗流程,能够享受更多与家人在一起的时光。 90 年代,RedHat 请我在多个会议上演讲,谈论 Linux 将如何主导企业计算★,因为这是技术人员做“正确”技术的事情。 我现在看到的一些事情让我后悔说了那些话。 可能我职业生涯的最后一项技术贡献是领导一个为 Linux 社区提供通用安全模型架构的倡议。这不是要取代或替换当前正在做的任何事情,而是为了在这个机器学习和建模的时代,为开发和定制工作负载模型提供一个灵活的替代方案。 两年内提交了四个补丁系列,截至昨天,没有一行代码被审查过。 这个贡献只涉及它自己的目录★,除非人们选择在其控制下执行工作负载,否则它不会做任何事情。 我们在提交时非常小心,以免浪费维护者的时间★★★。我们甚至等了两个月,没有任何消息,才发送了一封询问其中一份提案状态的邮件★★。我们被告知,相当简短地说,如果我们曾经询问过它们,我们发送的任何东西都可能被忽略。 我们尝试参与技术讨论,可能是过度参与★★★,试图解释我们为什么以及如何选择实施我们的提案。包括来自运行生产 IT 系统的顾问的意见★★,他们认为需要更好的方法来满足他们的安全需求。 从来没有进行过任何相关的技术交流。讨论的内容是,我们已经决定以某种方式做事,没有讨论★,如果你不喜欢,你真的应该考虑做一些其他事情,而不是提交给上游 Linux。
到目前为止,Linux 开发者社区已经清楚地意识到★★★,Rust 并不总是受欢迎的。
事实上★,网友认为,作为 Linux 社区中最有话语权的关键人物★★,Linus 应该公开声明不应该对 Rust for Linux 贡献者进行攻击★。
2 月 6 日,Linus 向 Martin 发送了一封邮件,邮件中隐晦地指责了 Martin“煽动★★★”网友情绪——在社交媒体上争取支持★★★。Linus 在邮件中写道★★★:
甚至有人认为★★★,Linus 对 Martin 的斥责已经表明了他对 Rust 的态度——可能永远不会真正支持 Rust。
对此,Krummrich 解释说,Rust for Linux 项目正在开发 Rust 代码,抽象出供所有 Rust 驱动程序使用的 C 语言 API,并由 Rust 开发人员集中维护。换句话说,内核的 C 语言部分保持不变★★,而 Rust 驱动程序通过这些抽象来调用 C 代码,且这些抽象由 rust/kernel 团队集中维护,这或许比每个驱动程序都有自己的独立 C 语言绑定要好★★★。
尽管 Rust for Linux 团队在技术上取得了显著进展,但如何与内核维护者达成共识仍是该项目面临的最大挑战。随着争论的持续,Linux 社区将不得不权衡 Rust 带来的潜在好处与维护多语言内核的复杂性★★。这场争论的结果可能会对 Linux 内核的未来发展产生深远影响。
这个项目的目标就是将 Linux 移植到基于 ARM 架构的苹果硬件上,使用户能够在这些设备上运行 Linux 操作系统。Asahi Linux 项目由开发者 Hector Martin(又名 Marcan)领导,专注于为这些设备提供完整的 Linux 支持★,包括 GPU 加速★、电源管理和其他硬件功能。
“Asahi”(朝日)在日语中意为“朝阳★★★”或“早晨的太阳”,象征着新的开始和希望。这个名字反映了该项目为苹果 Silicon 设备带来 Linux 支持的创新性和开拓性★。
上个月,冲突再次升级。Linux 内核维护者 Christoph Hellwig 再次公开一项允许 Rust 编写的设备驱动程序调用内核核心 DMA API 的提议★。该补丁旨在允许 Rust 驱动程序使用 DMA API 的dma_alloc_coherent()C 函数来分配和映射大内存区域以进行直接内存访问。然而,Hellwig 坚决拒绝了该补丁。
他写道:“别硬要我迎合那些当下时髦的编程语言。维护多语言项目是件痛苦的事★★。如果你想用 C 语言之外的东西★★★,无论是汇编语言还是 Rust★★,你得自己解决与 C 语言接口的兼容性问题。”
★★★“如果你打算因为跨语言代码库而让 Linux 变得难以维护,那就在你自己的驱动程序里做吧,而不是把这种“癌症”传播到核心子系统中。(这里的★‘癌症★’是指跨语言代码库,而不是 Rust 本身,只是为了避开那些喜欢煽风点火的人)★★★。”
★★“如果 Linus 不在这个话题上发表权威意见,Miguel 和其他 Rust 团队成员应该在补丁经过评审后直接合并★,无视 Christoph 试图破坏项目的企图★★。如果 Linus 接受了这个拉取请求,Christoph 说什么都不重要★。 如果 Linus 不接受,Rust for Linux 项目基本上就死了,除非 Linus 或 Christoph 采取下一步的行动★。其他的都是在兜圈子。”
这次争议再次暴露了 Linux 社区在 Rust 应用问题上的分歧。一部分开发者积极拥抱 Rust★★★,认为它可以提高内核的安全性、性能和开发效率;而另一部分开发者则坚持使用 C 语言,对 Rust 持谨慎态度。
最后★,Hector 向 Linus 及其家人致以祝福★,并感叹这段经历让他对行业现状有了更深的思考★★。他希望未来能够找到一种更有效的方式★,让技术讨论和创新能够顺利进行。
Martin 提到自己从 1991 年开始参与 Linux 开发,见证了 Linux 的成长,但现在他对一些现状感到遗憾。他最近领导了一个旨在为 Linux 社区提供通用安全模型的倡议,但两年内提交了四个补丁系列,却没有一行代码被审查过。尽管他们非常谨慎地提交代码★★★,并尝试参与技术讨论,但几乎没有得到任何有意义的反馈或交流★★★。
面对 Hellwig 一再的强硬拒绝之词,Ashai Linux 项目负责人Hector Martin 坐不住了。Hector Martin 向外界公开表示,他认为 Hellwig 的言论违反了行为准则,但他怀疑是否会真的采取纪律处分。
“Linus 对 Martin 的批评其实暗示了他对 Rust 的态度——他可能永远不会真正支持 Rust。不过,这件事更多和 Hector 的行为有关,而不是 Rust 本身。Hector 威胁要通过社交媒体曝光别人★★,这种行为是非常不好的★★。 他只是一个长期贡献者,可能有点粗鲁★★★,但并不是什么十恶不赦的人★★。 另外,关于 Rust 的讨论并不是简单的“支持”或“反对”问题★★★。没人完全反对在内核的某些部分使用 Rust,但具体在哪些部分用、怎么用、用在哪里★★,这些才是大家争论的焦点。Linus 对这类分歧一向比较放任★,没有强行推动共识。”
他在发给 Linux 内核邮件列表的邮件中写道★★★:“我对内核开发流程或社区管理方式已经失去了信心★★。”
Martain 的离职在社交媒体上引发了激烈讨论。在 Hacker News 上,有位用户的对于该事件的评论获得了诸多网友的赞同。
Hellwig 继续争辩道★★,将 DMA 一致性分配器的 Rust 抽象层单独交给其他人维护,并不能改善现状★,反而会削弱内核的可维护性★:
你能否接受这个事实★★★:也许问题就出在你身上? 你以为自己知道得更多。但当前的流程是有效的。 (流程)确实存在问题,但问题就是生活的事实★★★。没有完美的事物★★。 然而★★★,我要说的是,社交媒体的攻击让我不想要和你的方法有任何瓜葛。 因为如果我们在内核开发模型中遇到问题,那么社交媒体肯定不是解决方案。同样★★★,它肯定也不是政治分歧的解决方案★★★。 技术补丁和讨论很重要★★★。社交媒体宣传——婉拒了哈 谢谢。
Martin 回复邮件称★★★,之所以将这些争论在网上公布出来,是因为自己已经别无选择。
近日,Linux 社区再次爆发关于是否在内核中使用 Rust 语言的激烈争论。一些开发者试图将 Rust 代码添加到 Linux 内核中,但遭到了一些内核维护人员的强烈反对。他们认为,在内核中引入多种语言会增加复杂性,带来安全风险,并且不受欢迎。
学技术历史的人或许应该记得,2001 年,时任微软首席执行官的 Steve Ballmer 曾将 Linux 比作癌症★。Ballmer 当时说★:★“Linux 是一种癌症,它会在知识产权层面附着于它所接触到的一切。★★★”那时 Linux 还没有发展到可以融入 Windows Subsystem for Linux★★。
Linus 说★★★:★“显然,有些人就是不喜欢 Rust 这个概念★★★,也不希望 Rust 进入他们的领域。甚至有人在谈论 Rust 集成是一个失败……我们已经做了两年,现在说这个还为时过早,但我认为,即使它最终会失败——但我不认为它会——这也是学习的一部分。”
Martin 认为,当前的内核开发模式存在一些问题,尤其是缺乏对新思想的开放和尊重★★★。虽然 Linux 是操作系统领域创新的重要平台,但如果继续忽视贡献者的努力,可能会扼杀创新★。他还提到★★,行为准则虽然存在,但在实际执行中似乎并没有起到应有的作用★。
“苹果 /ARM 平台的开发将继续在下游进行。如果我以后自己想为某个子代码树提交一些补丁到上游,或许我会★★★,或许不会。任何愿意自己去争取上游合并的人都可以去做★★★。”
Hellwig 回复说:★“把包装器留在你的代码里★★★,而不是给其他人添麻烦★。”他还进一步指出,★“DMA API 的接口应该保留在可读的 C 代码中,而不是奇怪的绑定中,这样才能保持它的可搜索性和可维护性★。”Hellwig 似乎希望非 C 语言驱动程序有自己的私有 C 代码绑定,并且这些抽象不应单独维护,甚至不应在 rust/kernel 树中维护。
而这场冲突似乎已经预埋已久★。早在去年 9 月★★★,微软软件工程师 Wedson Almeida Filho 就因不满 Rust for Linux 项目中出现的★★★“非技术性废话★★★”而选择退出。他表示,与持有不同目标的人合作非常困难,这引发了人们对 Rust 在内核中应用前景的担忧。
“从旁观者的角度来看★★,有时你需要有人站在你这边,成为改变现状的倡导者★。我会怀念 Hector 的贡献,并且认为他对 Linux 内核开发过程的悲惨状况的判断基本上是正确的★。如果这个社区对变革更加开放,那么像 Hector 这样的人就能够创新,而不会产生怨恨”
针对这一纠纷★★★,外媒 The Register 曾询问 Hellwig 是否愿意就本文发表评论★,他拒绝了。我们还曾向 Linux 基金会研究员 Greg Kroah-Hartman 征求意见★★★,但他尚未回复★★★。
“我认为他有义务公开声明这种对 Rust for Linux 贡献者的攻击是不可接受的★★★,并授权未来在类似情况下的补丁尽管收到 NACK 但仍继续前进★,特别是考虑到补丁作者已在邮件列表中明确寻求他和 GKH 的处理方式。”
他的理由是,Rust 代码可以避免困扰 C 和 C++ 代码的内存安全漏洞(例如缓冲区溢出),而这些漏洞是大型项目中大多数严重漏洞的根源。这种观点随后得到了世界各地政府安全机构的支持。
但 Hellwig 似乎不想单独维护 DMA 的 Rust 抽象层★★。他解释说,他不想再增加一个维护者:
★★“简单来说★★★,Linus Torvalds 在处理 Rust 问题上表现得很犹豫,没有明确表态支持或反对,导致 Linux 社区内部产生了信任危机★。他的模糊态度让问题变得更糟,尤其是他平时对 C++ 等技术的立场都很明确,但这次却一反常态。 Rust-for-Linux(R4L)项目早就该有个明确的结果了★,但经过几年的开发★★,它的未来依然不明朗。Linus 没有积极推动共识,反而坐视团队内部争吵,最后把责任推给了 Martin★★★。这种做法让人失望★★★。 他对 Martin 的批评其实暗示了他对 Rust 的不看好★★,但他始终没有公开明确表态。可能是因为他担心会引起更大的争议。不过,现在可能是他该直接表态的时候了。 如果 Linus 从一开始就果断地说‘不’★★★,很多时间和精力(尤其是 Martin 的)都可以省下来,这场闹剧也能避免。★★★”
“每增加一点其他语言的内容,都会极大地降低内核的可维护性★★。 Linux 之所以能够存活这么久,是因为它没有内部界限★★★,而引入另一种语言则会完全破坏这一点。你可能不喜欢我的回答★★,但我会尽我所能阻止这种情况。这并不是因为我讨厌 Rust。尽管它不是我最喜欢的编程语言,但肯定是最好的新语言之一,我鼓励人们在适合的项目中使用它★。我只是不希望它出现在我需要维护的庞大的 C 语言代码库里★★。”
这次争议不仅阻碍了 Rust 代码进入 Linux 内核的进程,也加剧了社区内部的对立情绪。Rust for Linux 项目的未来发展面临诸多不确定性。
C 和 C++ 开发者注意到人们对 Rust 兴趣的增长,并承认需要解决内存安全问题。因此★★,目前有许多项目正在进行中★,例如 TrapC、FilC★、Mini-C 和 Safe C++,旨在增强 C 和 C++ 对内存漏洞的抵抗能力。此外还有 DARPA 的 TRACTOR 项目,目标是自动将 C 代码转换为 Rust。
面对 Hellwig 的阻挠★★★,Martin 敦促 Rust for Linux 团队★★★“在审核并准备就绪后立即合并该系列,而不要理会 Christoph 公然破坏该项目的行为”。
如果大型科技公司能雇佣到★★★“无所不知”的专家来担任内核子系统的维护者,这种模型会很好用。但现实中★★,这样的人非常稀缺。如果没有足够多的高水平维护者★★★,创新可能会被扼杀,而 Linux 是操作系统领域唯一能真正推动创新的地方。 (但项目管理仍然存在一些问题。)从项目管理角度看,目前还没有明确的解决方案★★★。科技行业从未遇到过如此复杂的挑战。传统的开源“分叉”模式(即通过分叉项目来解决问题)在 Linux 这种规模的项目上行不通★。 虽然已经有了行为准则(比如禁止辱骂和人身攻击)★,但如果想有效推进项目,维护者们还需要一套更明确的行为标准★★。而这些,Jim,你听见了吗? 尊重他人和开放接纳新思想是项目顺利运行的润滑剂。但遗憾的是,这种态度在科技行业中非常罕见,就像“无所不知”的专家一样稀缺。
赞成将 Rust 代码添加到 Linux 内核中的代表——Asahi Linux 首席开发者 Hector Martin 因为提交的代码屡屡被拒近日刚刚愤然离职。