Hacker News new | ask | show | jobs
by menaerus 493 days ago
The reason is entirely technical and I think it has been formulated clearly - maintaining cross-language codebase, or one of the most important kernel modules FWIW in this case, certainly does not make things simpler but only more complex - communication-wise, time-wise, resource-wise, uncertainty-wise etc. I think this is pretty clear and not really debatable IMO.

The actual question is if that overhead is worth it and it seems that there is no clear answer on that question despite many Rust-force claiming otherwise. I can totally understand the position of kernel maintainers.

What I cannot understand is the following shameful, almost unbelievable, act from Hector Martin

> If shaming on social media does not work, then tell me what does, because I'm out of ideas.

If there's a single most reason why Rust-in-Linux will fail it is going to be because of the immaturity and entitlement of individuals in Rust community.

2 comments

> The reason is entirely technical and I think it has been formulated clearly [..]

He clearly expressed a technical opinion based on his own beliefs, and that’s all. There was no reasoning.

He did not even acknowledge the fact that it is going to be maintained separately from the actual generic kernel code (rust/kernel/dma vs kernel/dma).

Anyone can easily formulate a sentence that seems coherent and correct, but it can be proven completely false in 15 seconds with actual data.

IOW: just because someone calls it a technical argument it doesn’t make it one.

This is a matter of opinion - specifically, the opinion of a single person.

> If there's a single most reason why Rust-in-Linux will fail it is going to be because of the immaturity and entitlement of individuals in Rust community.

Indeed there was immaturity from several individuals.

One question: if you act immaturely towards someone and they react immaturely, who's fault is it? The person who reacted or you?

I do not believe there is a widespread issue of entitlement: if you follow the discussions on the ML and observe how the R4L project has progressed so far, the only "entitlement" that individuals in the R4L project may seem to have in common is the desire to be treated with respect and for discussions to focus on technical arguments.

For me, this is the bare minimum to be expected.

That technical decision has already been made, by Linus: it is acceptable for the purposes of this experiment, and possibly, for good. So objecting on those grounds is a project management issue.
It has certainly not been made simply because of the fact that Linus is not a boss to the people who are contributing or maintaining the code. There was however a decision to have Rust as an experiment in the kernel but not such that it will bend and change the rules and put a technical burden on everyone else. This issue is solely a technical burden and not a good guy vs bad guy, as many Rust developers would like it to appear by cherry picking the comments from the context.

I think you missed the Linus reply on the topic

> How about you accept the fact that maybe the problem is you.

> You think you know better. But the current process works.

> It has problems, but problems are a fact of life. There is no perfect

Linus is not a boss, that's correct, but he is the BDFL. He doesn't always choose to make every decision himself, but the decision to allow Rust in the tree was made by him.

> not such that it will bend and change the rules and put a technical burden on everyone else.

Absolutely. That is very important. We are in agreement here.

> This issue is solely a technical burden

Here are the entirety of the arguments made:

"No rust code in kernel/dma, please" when no Rust code was being added to kernel/dma.

"Keep the wrappers [duplicated in every driver] instead of making life painful for others." and "interfaces to the DMA API should stay in readable C code". He is not responsible for those wrappers, nor for fixing them when the underling APIs change. This is an argument against the existence of a Rust API for DMA in general, on the conceptual grounds that it exists at all, not a technical argument.

"Maintaining multi-language projects is a pain I have no interest in dealing with. If you want to use something that's not C, be that assembly or rust you write to C interfaces and deal with the impedence mismatch yourself as far as I'm concerned." They have already agreed to this.

"If you want to make Linux impossible to maintain due to a cross-language codebase do that in your driver" it was already decided that a cross-language codebase is acceptable in general. That is, it is on technical grounds (though poorly argued), but since a conclusion was come to already, it's no longer a technical argument, it's disagreeing with the process itself.

"The common ground is that I have absolutely no interest in helping to spread a multi-language code base. I absolutely support using Rust in new codebase, but I do not at all in Linux." This is a non-technical argument.

That's it. All of the technical aspects were agreed to. The only other arguments are either about the process in general, or ideological.

> not a good guy vs bad guy,

I do not think He is a bad guy. I think he is being obstructionist on ideological grounds, and does not bring anything new to the table.

> I think you missed the Linus reply on the topic

In this case, Linus is talking to Hector, who is not involved in the patch, nor as far as I know a member of Rust for Linux, though he does support their aims. He purely replied to the social media stuff, and made no comments on the patch or the arguments about it.

So do you disagree with the fact that merging and testing the code will be much more difficult or you simply choose to ignore it for the sakes of idealogical wars?
I think that statement is too broad to be useful. To make a decision like this, you need to actually argue the real pros and cons of doing so, rather than just saying "it's much more difficult."

All of this was brought up and discussed thoroughly when the experiment was greenlit, and any difficulties created by including Rust, "much more" or no, was deemed an acceptable tradeoff for the benefits of doing so. That's engineering.

Sure, engineering is all about the tradeoffs, there's no black and white.

So, what is an advantage of mixing two different languages over one kernel module, in this example DMA? What problem does introducing another language solve and what would be the alternatives?