For those who don’t or can’t watch the video, or want to know who is saying what, here’s an LWN article describing what happens in that section of video.
> Lastly, I'll leave a small, 3min 30s, sample for context here:
https://youtu.be/WiPp9YEBV0Q?t=1529 -- and to reiterate, no one is trying force
anyone else to learn Rust nor prevent refactorings of C code.
A redditor pointed out [0] that this is exactly what they would do to sink Rust adoption. Even if you agree with the substance of the argument, the delivery is rude and unhelpful. I hope this resignation is a wake-up call, and much of the onus is on C devs to be more collaborative.
Why do C devs even have to be 'collaborative' about Rust modules? The latter would typically ingest C APIs, most likely via bindgen, making C code the "source of truth" about what the API is - because Rust modules are self-contained and C is the only stable ABI that Rust supports. All the type-checking smarts that the video talks about are purely on the Rust side. If a new 'raw' low-level C API is needed to build better smarts on the Rust side (which seems to be what's involved in some of the fs proposals) that can just be a self-contained proposal, with very lightweight changes on the C side of the code. This whole thing looks like a tempest in a teapot to me - and to be clear, this absolutely includes the Linux dev's complaints, which are extremely poor form.
That burden would fall on Rust maintainers. If the Rust code goes unmaintained and nobody is around to pick it up, it just gets dropped from Linux releases that rely on the up-to-date C API.
The Rust maintainers said they would maintain the Rust bindings. But wouldn't it be nice to have a heads up that the bindings might break? Or whether assumptions have changed? Or even what the assumptions are?
It's a little tough to build a safe abstraction layer on top of C or encourage maintainers to stick around with a hostile "that's a _you_ problem" mentality or inaccurate rhetoric that Rust are trying to force their religion onto the C devs.
Thanks for sharing. This makes a lot of sense to me. I’m not close to kernel development but any change to an established entity impacts the interest of people in it. So a primary obstacle change encounters is that it may diminish power people obtained in the establishment.
These people, while well intentioned in pushback, have difficulty separating benefit to the entity and benefit to themselves. So it takes a lot of work to impact change, and I understand the distance it has from normal technical work.
He did a presentation on making a fs in rust, the response from this dev was "we won't be converting to your religion. We are going to continue modifying c code and your dumb rust code will always be a second class citizen."
Literally just hostility for hostility sake. He wasn't proposing to rewrite everything in rust. He wasn't proposing that everyone learns rust. He was just giving a freaking presentation on making a rust fs that integrates with the kernel and was immediately trashed for spreading religion or whatever.
What was literally said didn't include the words "always" or "your dumb rust code". From the subtitles with slight manual fixes:
> I suspect part of the problem here is you're trying to convince everyone to switch over to the religion as promulgated by rust and the reality is that ain't going to happen because we have 50 plus filesystems in Linux, they will not all be instantaneously converted over to rust. Before that happens we will continue to refactor code because we want to make the C code better. If it breaks rust bindings, at least for the foreseeable future the rust bindings are a second class citizen and those file systems that depend on the rust bindings will break and that is the rust bindings problem, not the file system community at large's problem and that's going to be true for a long long time, okay, and I think we just simply need to accept that
That seems rather technical to me. To put words into their mouth because they had a snarky tone, or claim the presenter was "immediately stacked for spreading religion or whatever" hardly is.
They literally said "spreading your religion" at the very start of their critique. I think I'm correctly reading the tone of the rest of the comment even if I didn't verbatim quote them.
From the closed captions with minor editing. In response to "we are going to provide API bindings"
> I suspect the problem here is you are trying to convert everyone to the religion as promulgated by rust and the reality is that ain't gonna happen. Because we have 50 plus filesystems in linux and they will not all be instantaneously converted over to rust. Before that happens we will continue to refactor code because we want to make C code better. If that breaks the rust bindings at least for the foreseeable future the rust bindings are a second class citizen. Those file systems that depend on the rust bindings will break and that is the rust bindings problem not the file system community at large problem. And that's going to be true for a long long time, OK. And I think we just simply accept that right because the answer you are not allowed to refactor C code because it would break 5 critical file systems that distros depend on is like not a star, OK.
> They literally said "spreading your religion" at the very start of their critique.
And that critique is near the end of all the people who asked questions or made comments. So no, the presenter wasn't "immediately stacked" when making that presentation.
Linus has the wisdom to see the writing on the wall - the kernel is becoming too
complex to be maintained and extended by newcomers; the pool of C ninjas that can handle it reliably is diminishing. This kind of foresight is what makes Linux trustworthy in the first place. A lot of current individual contributors lack that vision and fail to understand the reason for introducing what they see as unneeded complexity.
The other reason Linux is trustworthy because of the technical meritocracy culture. But since Rust is not a technical choice, as Rust cannot per-se do things that are impossible in C - you can do anything in C - the introduction of Rust falls outside the parameters of the regular rough-but-mostly-fair Linux exchanges. This leading to toxic reactions from the less socially-abled.
> But since Rust is not a technical choice, as Rust cannot per-se do things that are impossible in C - you can do anything in C
Have anything in particular in mind? It's been my understanding that Rust actually can do everything C can, but the additional safety guarantees imposed by the type system make it a bit harder.
Yup, anyone defending this behavior needs a screw tightened.
The dev "pushing back" was being an asshole probably because of deep insecurity of gasp there being other programming languages than C.
Literally rust is currently being proposed for maybe new drivers and basically nothing else ATM. Nobody is suggesting rewriting code in rust or forcing people to learn rust. It is literally just "Hey, might be nice to write this driver for my mouse in a memory safe language".
It's inevitable in any organisations when dealing with change. Identifying resistance and coming up with strategies to overcome is a key part of change management. Telling people their reaction is "kneejerk pushback" usually does not help ;)
It's probably more difficult to handle in open source than in a company because authority less powerful and it's more difficult to wave both carrots and sticks...
At a talk presenting a personal project? Do you also feel it's OK to go to talks on Java projects to make statements like "Well, why didn't you write this in Go? It's a better language that serious developers are using and nobody will want to contribute to your dumb project using java"
The argument was "I don't want to learn Rust, I'm not going to learn Rust, and if you put a non-C language in the codebase, I'm going to break it without giving a shit". Not sensible in the least.
I heard more like: "We have been borking like this for 26 years now and the result is amazing. If you want to introduce a new API for a couple of eventual use cases, you are welcome to do so, but don't event think to impose any additional burden on us."
The rust guys were just asking for semantic information about the current C apis so they could try to encode them into the type system.
All they got in response to that were made up problems of them supposedly forcing everyone to adopt their religion, rust being too OOP or other nitpicks that had nothing to do with the issue the presenters were trying to talk about.
Nobody even answered their questions, people which obviously didn't even look at rust for more than an hour gave their opinion on why what they're doing is bad and destined to fail. It was rude, tone-deaf and not a single technically sound argument was actually made.
I love linux and I'm fine with the maintainers deciding to use C if they want to, but the behavior by the old guard here was actually appalling and reeks of deep insecurity and inability to communicate.
Since when is Rust a requirement to help Linux development? Only an utter idiot could think that such a big and successfully community would put any effort in addressing any issue that is not posed in their natural language!
If you want to introduce Rust into Linux, you learn C, you learn Linux, you add and maintain whatever you want.
> Since when is Rust a requirement to help Linux development?
It's not and it shouldn't be, but it is most definitely required if you want to criticize it's integration into the kernel due to its supposed flaws/merits in a "technical" discussion.
Nobody is forcing anyone to learn rust, the RiL folks are fine with maintaining bindings and handling the fallout of C API changes. They didn't even get to say that, because they were shouted at for asking a question.
> If you want to introduce Rust into Linux, you learn C, you learn Linux, you add and maintain whatever you want.
Which is basically exactly what the RiL community is doing. In the posted video you can see them TRYING their best to learn about the undocumented invariants of a C API and getting nothing but flak for it for completely made up reasons. I might be hard to understand, but many of the strongest advocates of rust know C well and are opposed to using it themselves for good reasons.
The folks maintaining C API don't have to care much about the rust part, except maybe giving a friendly heads-up when they change API's they depend on, like you would in any kernel development work where you are impacting another subsystem.
Apparently this is too much to ask from some of these C grandpas.
While these guys have undoubtedly made great contributions to Linux and FOSS and I'll be forever thankful for that, some of their behavior towards the RiL community has been appalling and petty. They have been resistant to any sort of change, even if it does not impact them at all, are quick to criticize without any attempt at understanding the efforts and benefits of Rust integration or even making any technically coherent argument. Constructive criticism and open discussion is important, but it should be based on accurate information and a willingness to learn instead of knee-jerk reactions and reacting to people wanting to learn about the API of your subsystem with outright and unwarranted hostility.
Good news for whom? The mental safe space of old time kernel developers? Or good new for users who will continue to have to deal with kernel panics and other memory issues.
> users who will continue to have to deal with kernel panics and other memory issues.
I have not seen many of those in my close to 32 years of involvement with Linux. In the beginning of the project they did occur 'every now and then' but once Linux got past v1.2 or thereabouts they're about as rare as hen's teeth. If Rust ever becomes widespread enough for kernel developers to pick it up with ease it will be a welcome addition but until such a time I prefer for the project to remain C-focused so as not to close out a large fraction of the potential developer base. If that means that some 'competing' kernel gets written in Rust and takes over from Linux that'd be fine by me as well, may the best [1] kernel win.
I admit it's not often I see a direct panic. But I do see bugs caused by memory issues relatively often. In fact two weeks ago I made a patch for a memory issue in a wifi driver that caused it to drop connections. The long list of CVE is more direct proof though. By far most of them are memory safety issues.
Suggesting making a new kernel is just total FUD. This is a multi decade project. It's like saying to a person who want some legislation in their country to change "why not make your own country, may the best country win". It's just so far removed from reality I'm very surprised I have seen this argument more then once.
> Suggesting making a new kernel is just total FUD. This is a multi decade project.
Linux started as a hobby project of a single student and just a few years later it was already possible to build a full-blown UNIX desktop system with Linux as kernel.
Why should that not be possible to replicate today? Especially with modern development tooling and a big and motivated language community?
What was acceptable in 1995 is not what is acceptable today. Linux took literal decades + in the billions of dollars to build. It's ridiculous to suggest a rust project can just catch up to that with a few developers and no funding in any sane timespan. If you think it's reasonable to suggest "Just outcompete this heavily and continuously developed 34 year old project which has the backing of the largest technology firms on earth" I really don't know what to tell you. We live in different realities.
That doesn't even begin to touch on the problem that linux came at just the right time.
Sure it's foolish, but so was trying to 'outcompete' industry giants like IBM and Microsoft in the early 90s with a hobby kernel. That didn't stop a certain Finn from just writing a kernel anyway. If that project hadn't taken off, then maybe another one, or another one.
Replacing any substantial parts of the Linux project with Rust also would be multi-decade effort, most likely more effort than forking off a separate evolutionary branch (which is probably the most realistic option). Such forks happened all the time in the history of UNIX.
It was considerably less foolish then, then now. It's not even close. The complexity of the operating system kernels has more then increased 50x over the last 34 years. It's not even remotely comparable.
No one wants to replace substantial parts of the linux project with Rust. This is a straw man, and the same bad faith argument the set in their ways kernel greybeards are making. People just want to be able to write green field drivers in Rust.
> Why should that not be possible to replicate today?
What is missing is the user base! When Linus started his project, many people knew Unix in their professional life and were disappointed with what the market (M$) was proposing for the personal computer world.
Today, no such multitude is waiting for the next Linux.
Linux may not be perfect, but it's definitely good enough.
Ideally such a Rust kernel project would implement a drop-in-replacement for the Linux kernel, so that Linux distros could select between the original Linux kernel and the Rust 'imposter'. That way the users would already be there. It would just be a detail like GNOME vs KDE, X11 vs Wayland, or glibc vs MUSL.
The wish of the lead developer is for Linux development to continue beyond the life of the current maintainers. Training to be a competent system programmer using C is unnecessary long and painful. There aren't enough C hackers coming up anymore. The Rust learning curve is a bit sharper than C for the first weeks but gets you to a competent and non-dangerous state much more quickly after that.
This problem is not expected to be solved by current maintainers. They're just asked to make room for the next generation. "It should hurt you like it hurt me" is not an acceptable response.
If C is actually "very simple", you should be able to write a working interpreter for C in a short time, say, one week. (I would assume that you know how to write an interpreter in general, of course.) Can you?
> Does the proverbial rust programmer who doesn't know C even exist?
I have seen enough Python or JS programmers learning Rust without having any working knowledge about C. Of course Rust is not an easy language to learn for them, as they have to deal with a concept of explicit memory and lifetime that have no equivalent in Python or JS, but otherwise I didn't see any complication specific to Rust.
Users should only need to care about what happens in user space. And the most important promise of Linux is "don't break user space". The kernel's programming language is literally just an internal implementation detail, irrelevant for Linux users.
The security vulnerabilities that affect my PII kinda contradict the idea that the kernel is an implementation detail. It’s not an implementation detail if I do, in fact, have to care about it.