关于最近 R4L DMA 事件的 Linus 回应

191 天前
 B1ankCat

邮件原文 知乎翻译 翻译搬运:

我曾抱有希望,并试图看看这个漫长的讨论是否能产生一些建设性的结果,但现在看来,事情似乎在倒退(或者至少没有进展)。 事实是,你反对的那个拉取请求根本没有触及 DMA 层。 它只是另一个使用 DMA 层的用户,位于完全独立的子目录中,没有以任何方式改变你维护的代码。 我感到不安的是,你竟然在抱怨新用户使用你的代码,然后还不断提出这些完全站不住脚的论点。 老实说,你一直在做的,基本上就是在说“作为 DMA 维护者,我控制 DMA 代码的用途”。 而这根本不是这样运作的。 接下来是什么?说某些驱动程序不能使用 DMA ,因为你不喜欢那个设备,而作为 DMA 维护者,你控制谁可以使用 DMA 代码? 这正是你试图对 Rust 代码做的事情。 说你不同意 Rust——这没问题,没有人要求你编写或阅读 Rust 代码。 但随后你采取了一种立场,认为 Rust 代码甚至不能使用或与你维护的代码交互。 所以让我非常明确地说:如果你作为维护者认为你可以控制谁或什么可以使用你的代码,你错了。 我在技术上尊重你,也喜欢与你合作。 不,我不是在寻找应声虫,我喜欢你指出我的错误。我有时会说一些愚蠢的话,需要有敢于站出来告诉我我错了的人。 但现在,我要指出你的错误。 所以这封邮件不是关于某些“Rust 政策”。这封邮件是关于一个更大的问题:作为维护者,你负责你的代码,没错——但你并不负责谁使用最终结果以及如何使用。 你不必喜欢 Rust 。你也不必关心它。这一点从一开始就很清楚,没有人被迫突然学习一门新语言,那些只想在 C 语言方面工作的人完全可以继续这样做。 所以回到你声明的核心: “该文档声称没有任何子系统被强制要求采用 Rust” 这一点非常正确。 你没有被强制要求接受任何 Rust 代码,或关心 DMA 代码中的任何 Rust 代码。你可以忽略它。 但“忽略 Rust 方面”也自动意味着你在 Rust 方面没有任何发言权。 你不能两者兼得。你不能说“我不想与 Rust 有任何关系”,然后在下一句话中说“这意味着我将忽略的 Rust 代码不能使用我维护的 C 接口”。 想要参与 Rust 方面的维护者可以参与其中,通过参与,他们将对其 Rust 绑定的外观有一定的发言权。他们基本上也成为 Rust 接口的维护者。 但选择“我不想处理 Rust”的维护者显然也不必费心处理 Rust 绑定——但因此他们在 Rust 方面也没有任何发言权。 所以当你更改 C 接口时,Rust 方面的人将不得不处理后果,并修复 Rust 绑定。这就是这里的承诺:对于那些不想处理 Rust 问题的 C 开发者来说,有一个“保护墙”,承诺他们不必处理 Rust 。 但这“保护墙”基本上是双向的。如果你不想处理 Rust 代码,你在 Rust 代码上就没有发言权。 换句话说:“没有人被迫处理 Rust”并不意味着“每个人都允许否决任何 Rust 代码”。 明白了吗? 不,我实际上并不认为这需要如此黑白分明。我上面用非常黑白分明的术语陈述了这一点(“成为 Rust 绑定的维护者”与“完全不想处理 Rust”),但在许多情况下,我怀疑这条线会不那么严格,子系统维护者可能知道 Rust 绑定,并愿意与 Rust 方面合作,但可能不会非常积极地参与。 所以这真的不必是一个“全有或全无”的情况。

个人认为,linus 找的角度还是可以的,比较理智。

4213 次点击
所在节点    Linux
39 条回复
TuxcraFt
191 天前
linus 虽然前段时间因为封杀俄罗斯的事情,有点败人品。
不过人品不说,对于项目的技术控制还是不错的。 天天下面一堆人抖机灵,拍脑壳,都要硬生生的控制住,让项目不乱套。还是牛逼!
PTLin
191 天前
后面的故事我已经想好了。
下一集:Christoph Hellwig 不满 linus ,fuck rust ,对 dma api 进行 breaking change ,煽动起社区厌恶 rust 的人一起来挑战 linus 权威。
linus 随之反抗,将 Christoph Hellwig 从 dma mapping helpers 除名。
借此一战 Hellwig 成功吸引到一批追随者,随之对内核进行 fork ,剔除了 rust 。
历史上称此次事件为<<<RUST, F*** You! , Linux fork PANIC!!!>>>
(狗头)
yyzh
191 天前
🤔等真有人走了才开始发觉大事不妙了?
iseki
191 天前
所以如果最后 DMA 子系统 breaking change 了,坏掉的 Rust binding 谁来修呢
ebi5oowiiy1llo
191 天前
@iseki #4 大概是就这样坏着,或者导致 rust 代码编译/链接失败,毕竟内核内部不保证 api 稳定
Cooky
191 天前
ntfs-3g 的维护者其实也有类似的问题,别人看到 bug 然后提交了补丁,维护者不接受,推行自己另外的 ntfs 相关的付费软件
MacsedProtoss
191 天前
Rust 自己先把路人缘给败光了啊 说句实在的不少人是觉得这个玩意是个邪教,这个事件哪怕 rust 侧更占理,不少人也是觉得不给 mr 合入是正确的选择
povsister
191 天前
@PTLin
哥们你这脑洞,书无店砸(狗头
levelworm
191 天前
不得不书说,我也算是读过一些 mailing list ,但是至今搞不懂这个邮件列表怎么直接找别人的回复。。。
levelworm
191 天前
@PTLin #2
好希望看热闹啊。。。。
agagega
191 天前
Russia 和 Rust 都是 Ru 开头(逃
PTLin
190 天前
@iseki 当然是写 dma 抽象的人来修,而且 rust 侧的很多 wrapper 本身都不是太复杂,就比如这次抽象的 dma_alloc_attrs 本身逻辑简单,就是可以附加不同属性的分配 dma 内存,就算由 break 了估计最多一小时就能完事。
araraloren
190 天前
@MacsedProtoss 一直偏执的阻止 rust 的使用何尝又不是一种邪教呢。
araraloren
190 天前
@iseki 难道没有沟通吗,内核开发?这些人是不是太老了。
kaedeair
190 天前
@araraloren #13 正常项目是不会引入第二语言的,只会带来维护难度
namaketa
190 天前
这一次不管是 Linus 还是 Christoph 表现都令人失望。
仇恨、反对、阻挠 Rust 的情绪已经超过了合理的理由,变成了一种纯粹的偏执。R4L 的维护者反复提到自己会负责维护 Rust 层,哪怕是这样,Christoph 还是拒绝合并。
Linux 内核开发后继无人也不是新话题了,包括这个可读性极差的邮件列表在内,只能说 LINUX 内核就是一个抵制变化和年轻血液的老登社区。
iceheart
190 天前
不能理解,c++不能进 rust 却让进。
哪个更亲近 c 还用说吗?
pinylin
190 天前
@iceheart 当然是 zig 最亲(233)
extrem
190 天前
@iceheart linus 的观点是,对 c 来说 cpp 没有从根本解决内存等问题,甚至引入了更多不必要的复杂性。
wwhc
190 天前
R4L 的维护者改用 C 是更妥当的解决方案,看不出一定非要 RUST 的理由

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1113509

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX