back to article 'Maybe the problem is you' ... Linus Torvalds wades into Linux kernel Rust driver drama

Weighing in on yet another Linux kernel spat - this time over Rust device drivers - Linux supremo Linus Torvalds has shot the messenger. In response to Asahi Linux lead developer Hector Martin's call for Torvalds to "pipe up with an authoritative answer" to resolve the device driver impasse, and Martin's defense of "shaming on …

  1. may_i Silver badge

    Fair comment by Linus

    If I was a kernel maintainer and someone submitted a patch to my subsystem which included an acre of glue code to adapt the C API to Rust callers and expected me to maintain that extra API, I wouldn't be particularly happy about it.

    1. Anonymous Coward
      Anonymous Coward

      Re: Fair comment by Linus

      If that were the case, yes.

      It is not the case. The Rust folk are not trying to change ANYTHING in that API.

      They are bindings to allow Rust to work with the C API as it is, and to be maintained by Rust devs.

      Saying that I'll block an alternative binding to the API that I maintain is not productive behaviour.

      1. Bryan W

        Re: Fair comment by Linus

        They can only block changes to code they maintain? How is a wrapper going to blocked? Explain to me where the overlap here is that you latching onto? Do you even code?

        1. doublelayer Silver badge

          Re: Fair comment by Linus

          They can't block it, which is why this code might be merged after all. However, they can get angry about the existence of that code and complain, which is what they are doing. Perhaps their complaints about that code will be sufficient that it won't be merged. As a project with relatively loose governance other than that Linus mostly can decide things if he wants to, there's not a lot of official blocking or not blocking. Since Linus has not made it clear what he thinks about this code, only disagreeing with one of the people arguing who is neither the person who wrote the code nor the one who originally stated that he will do any thing he can to stop it, we still don't know what will happen.

          1. Roland6 Silver badge

            Re: Fair comment by Linus

            > “They can't block it, which is why this code might be merged after all.”

            Merging the shim/binding moves the ownership.

            I’m with the kernel developers: they develop kernel stuff, which may break bindings/shims, but that is AN Other teams problem.

            AN Other team may complain and try to block the kernel update, but they are only one voice, and will have to modify their code accordingly.

            Basically, if you think C should be consigned to History then you should be looking to also consign OS’s written in C to history and be designing something new more suited to the purpose of running Rust software.

            1. streaky

              Re: Fair comment by Linus

              Basically, if you think C should be consigned to History then you should be looking to also consign OS’s written in C to history and be designing something new more suited to the purpose of running Rust software.

              Yup. People who don't understand this comment don't write software - doesn't matter who's team owns it, it's going to be a pain to maintain; and you don't necessarily even need an OS written in Rust - probably just a new Linux kernel. It is doable.

              Projects like Redox do exist though.

              1. Cronsch

                Re: Fair comment by Linus

                ... and PostgreSQL is also written in C - and still one of the most popular database-engines.

      2. eldakka

        Re: Fair comment by Linus

        It is not the case. The Rust folk are not trying to change ANYTHING in that API.

        They are bindings to allow Rust to work with the C API as it is, and to be maintained by Rust devs.

        The problem is that these Rust wrappers are being put into the kernel. Therefore if the C API developers change their C API that breaks the Rust wrappers, the kernel will fail to compile because another component in the kernel - the Rust wrappers - are broken now and won't compile. Therefore either the C API developers will have to fix the Rust wrappers themselves to allow a full kernel compilation, or take steps to exclude a part of the kernel - the Rust wrappers - from the kernel to allow their code to compile into the kernel.

        And who will the Rust wrapper maintainers blame? They'll blame the C API developers for breaking the Rust wrappers.

        1. Doctor Syntax Silver badge

          Re: Fair comment by Linus

          It sounds as if there needs to be an agreement that it's up to the Rust team to maintain C API changes with some means of coordination to ensure the Rust team have notice and an agreed time period to make their changes so that both can be merged together. Martin might have had a good point but went about it in the wrong way.

          Having said that, surely the whole point* of an interface (the I in API!) is that it can remain stable whilst the code that implements it changes. I'd have thought that changing an API means that everything** that uses the API, the Rust wrapper being one will need to change with it.

          * All too often forgotten these days, especially with GUIs.

          ** Depending on the extent of the changes

        2. MarkMLl

          Re: Fair comment by Linus

          > ...if the C API developers change their C API that breaks the Rust wrappers, the kernel will fail to compile because another component in the kernel - the Rust wrappers - are broken now and won't compile. Therefore either the C API developers will have to fix the Rust wrappers themselves to allow a full kernel compilation, or take steps to exclude a part of the kernel - the Rust wrappers...

          If an API is changed in a way not detectable by the toolchain then any code not aware of that change will break.

          The kernel community as a whole ought to be welcoming any methodical attempt to codify the API between subsystems: not necessarily in Rust, but in something testable. And they should definitely be welcoming any attempt to avoid the sort of edge cases that were aired when this stuff was discussed in the context of bcachefs.

          Because as things stand I'd say that there's a real risk that somebody- probably Poettering- will fork the kernel in order to be able to favour Rust, and that any distro that is interested in commercial acceptance will use the one better able to withstand regulatory scrutiny.

          1. find users who cut cat tail

            Re: Fair comment by Linus

            You have no idea how the Linux kernel development works, right?

            They can (and do) make changes to internal APIs when they are needed. When changes are needed because hardware evolves, they are simply needed. You can find all uses of a symbol or macro and there are tools like coccinelle to help with the transitions. It is all useless for fixing Rust code though.

            If you want a kernel where all internal APIs are frozen forever, try writing one. See if it lasts 30+ years.

            The best case scenario is that you keep adding new and new symbols (you cannot change any existing) and refactor everything to use the new ones. How does it differ from the Linux approach? You will carry around a huge heap of unused (semi)broken code and run out of sensible names for things.

        3. phuzz Silver badge

          Re: Fair comment by Linus

          How often does the C API change? I'd have assumed it's pretty stable by now.

          1. CowHorseFrog Silver badge

            Re: Fair comment by Linus

            Irrelevant.

            The dotnet project doesnt push all their bindings into WINDOWS itself... that would be insane.

            1. Anonymous Coward
              Anonymous Coward

              Re: Fair comment by Linus

              The windows project doesn't push changes that would break dotnet either. That would also be insane:)

          2. MacroRodent

            No Stable API inside kernel (Re: Fair comment by Linus)

            The Linux developers have no commitment towards keeping the internal C interfaces stable. They see such commitments as an impediment to improving the kernel. They don't change them unnecessarily, but they will change without hesitation when there is a good reason.

            By contrast, the interface towards user-level applications (system calls) is kept stable.

        4. drankinatty

          Re: Fair comment by Linus

          That is the key -- period. With each minor version update to the kernel things change, defines are added/removed, the API changes accordingly and drivers break. I maintain legacy Nvidia drivers for a couple of distros, and kernel changes break things every time (Okay, 6.11 was an exception). With rust drivers it will be no different.

          A define changes, a function call is removed or renamed and the rust driver breaks. I don't fault the kernel devs for taking the position they have. They have decades of C experience. To become proficient in the nuances of any programming language takes years. A monkey can take a syntax manual and tutorial and write "Hello World!", but to write code at the same level a musician plays an instrument takes the same amount of time and practice.

          Foisting the maintenance responsibility for Rust drivers on the kernel devs, when, not if, the Rust driver breaks, and the Rust devs are nowhere to be found is a non-starter. How many Rust devs have we seen jump ship? There is no guaranteed the driver author or those with the knowledge of how to fix it will still be part of the project when the time comes. I don't doubt for a minute that the current rust devs have good intentions that will not be the case. But all the good intentions in the world won't fix a broken rust driver if their circumstances change. There is an apt saying about a road being paved with good intention. That poses risk and problem for kernel management.

          There are no performance-bonds the rust devs can acquire to ensure and insure performance when the time come. Ultimately it all comes down to trust, and that simply takes time and is not won whining on anti-social media.

        5. katrinab Silver badge
          Meh

          Re: Fair comment by Linus

          But surely anything else that uses the C API would also break if you change the API? Who is to blame for that? Does it make any difference which language it is written in?

          1. containerizer

            Re: Fair comment by Linus

            It does.

            If someone submits a change that breaks another component, they are expected to include fixes as part of their submission.

            If the "other component" they break is something to do with Rust, then they need to know Rust in order to fix it. In other words, kernel developers would be required to master two languages, not just one.

            Remember that a lot of devs are volunteers. They're doing this because they enjoy it. Forcing things on them that they don't see the point of is a good way to get them to leave.

      3. mob

        Re: Fair comment by Linus

        Then you have 2 consumers of the API making root causing/bug solving more difficult. The maintainers of the API will get bugs that can only be seen when calling the API from rust and they'll need to setup their systems for yet another environment etc it's more complexity in the system that will slow releases.

      4. CowHorseFrog Silver badge

        Re: Fair comment by Linus

        The wrappers should not be a part of the core in the first place. The cor eshould have only the bare minimum to make it all works. Extras like wrappers by definition should not be a part of core.

      5. tekHedd

        "...and to be maintained by Rust devs."

        Maintained by who again? It's easy to add a ton of code and promise to maintain it. It's hard to maintain it.

      6. containerizer

        Re: Fair comment by Linus

        The problem with this is that there is no stable "C API" within the kernel. There never has been.

        when kernel developers make changes to subsystems that break other things, they are expected to update those other things at the same time.

        How does that approach work if the thing they break is the Rust layer ?

        The solutions are limited :

        - introduce a stable C API in the kernel. Most of the kernel developers won't tolerate that as it adds overhead.

        - all kernel developers must learn Rust to avoid breaking the Rust layer. Ditto.

        - accept that Rust will be broken from time to time. I don't think the Rust guys would accept this - they'd constantly be playing catchup.

        1. Phil Lord

          Re: Fair comment by Linus

          The latter of these is the case. Kernel developers don't even need to install Rust. The kernel build will autoconfig the rust build away.

          Any changes that they write that break the Rust wrappers will break in staging where it will be fixed downstream, where the Rust developers will fix it, just as any downstream use of internal APIs will fix their code in response to change.

          There is additional load on maintainers: they have to choose whether to accept unexpected breakage in staging; or they have to install a Rust tool chain. That is inevitable as soon as any Rust code is accepted into the kernel. It is, effectively, the same issue as supporting a second build tool chain such as clang.

          What must be fairly tiring for the Rust developers is it appears they have to have exactly the same discussion with every subsystem developer.

    2. jemmyww

      Re: Fair comment by Linus

      They didn't submit a patch to the maintainer's subsystem. He was CCd on a change that added wrapper code, out of courtesy, and perhaps to review it. Now, if there were good technical reasons to block it or hold it up for another approach then that would be fine and we wouldn't be talking about it. But "because I don't want this to exist" isn't really a good reason.

    3. nvmd

      Re: Fair comment by Linus

      To be fair, the Rust folks offered to shoulder burden of maintaining the Rust part, but that by itself would lead to problems down the road, both of technical and relational natures (egos and stuff).

  2. beast666 Silver badge

    Make Linux Great Again.

    Deport the Rust.

    1. LBJsPNS Bronze badge

      FFS, this ninny again.

      1. Lord Elpuss Silver badge

        Loving the fact that (at time of posting) your reply to Beast666 had 66 upvotes and 6 downvotes.

    2. 45RPM Silver badge

      There are some people on The Register forums who spout a lot of crap, but also make a reasonable number of interesting points - enough, at least, that they’re still worth reading.

      And then there’s Beast666 who reads like a bot, pollutes the conversation, and never has anything worthwhile to add.

      Mr(s) Moderator, can this troll be put down? It’s boring. Can we have a hamster instead? Or even someone with a serious and dangerous addiction to code?

      1. Phones Sheridan Silver badge

        Bring Back Eadon?

        1. Zenubi

          And Sarah Bee

      2. Quart3rMstr

        Only one I see that is trolling here is you.

      3. phuzz Silver badge

        I guess the problem is that even if the mods ban them, there's nothing really stopping beast667 from annoying us next week.

        1. 45RPM Silver badge

          True enough. Seems they’ve already done that as Quart3rMstr!

          1. Caspian Prince

            if only AManFromMars could wade in with their salient points on the discussion....

    3. Anonymous Coward
      Anonymous Coward

      > Make Linux Great Again. Deport the Rust.

      Congratulations. You have just confirmed my fears this is a spat which has parallels with racism -- as per the white guy insisting it's a whites only place, and non-whites will not even be tolerated on the outside, can not even be allowed their own clubhouse.

      And Linus's "don't go seeking public support for your civil rights" doesn't look good in that respect.

      1. JamesTGrant Bronze badge

        You can enforce a dress code that says ‘yellow flip flops only’ - it’s a non-immutable characteristic.

        You can’t legally enforce a dress code that says ‘no black hair’ - it’s an immutable characteristic.

        A preference for C or Rust is about as racist as a ‘no yellow flip flops’ prejudice.

        1. Anonymous Coward
          Anonymous Coward

          You can’t legally enforce a dress code that says ‘no black hair’ - it’s an immutable characteristic.

          This bottle of peroxide says otherwise.

          1. sedregj Bronze badge
            Gimp

            "This bottle of peroxide says otherwise."

            HO accelerated my inevitable hair loss. It appears to have made your face fall off. You must have looked bloody odd with a black 'tash n Brazilian.

            1. John Brown (no body) Silver badge
              Coat

              "It appears to have made your face fall off."

              It was the leopard. He didn't expect it to come for him. (is it a Spanish leopard? No one ever expects them.

      2. This post has been deleted by its author

      3. Not Yb Bronze badge

        Whatever point you think you're making, racism doesn't apply to C vs. Rust in the kernel. Lines of code aren't people.

        1. A.P. Veening Silver badge

          Whatever point you think you're making, racism doesn't apply to C vs. Rust in the kernel. Lines of code aren't people.

          You are correct that it isn't racism, it is something even worse, religious bigotry.

          1. GNU SedGawk

            I don't like rust - some good reasons - some purely syntax related.

            Ultimately I use tools to accomplish a purpose - having strong opinions about the best way to avoid destitution via remaining able to deliver work is perhaps the least bigoted or religous kind.

            You want to work in way X - go for it, this is done in way Y, it's you who wants to force change, on a community who find your approach tin-eared.

        2. Anonymous Coward
          Anonymous Coward

          meanwhile at subatomic level...

          DNA: *confused look and pointing at itself*

      4. m4r35n357 Silver badge

        "has parallels with racism"

        Congratulations, you have just devalued the stigma of racism.

        1. This post has been deleted by its author

      5. Tom Graham

        Congratulations!

        You have just confirmed that, whatever the technical benefits that the Rust language may offer, it is not worth the poison of woke identity politics that the Rust community brings with it.

        The kind of people who want to make kernel development about racism will only cause chaos and destruction.

        1. Anonymous Coward
          Anonymous Coward

          Congratulations, you've just replied to an AC who was suspiciously quick to jump in and take seriously what was clearly a very blatant- and offtopic- troll comment by a well-known troll account. A comment that obviously didn't warrant being taken seriously, and until which point no-one had mentioned politics.

          Given the borderline-stereotypical ridiculousness of the AC's response, I'm not convinced that they were even arguing in good faith. It's quite possible- if not probable- that they were a blatant strawman. We don't know because they posted as an AC, yet you're ready to condemn the Rust community on the basis of someone that may have been a troll themselves?

      6. Anonymous Coward
        Anonymous Coward

        This is a good example of how even a single, blatantly-troll level offtopic comment (by an almost exclusively troll account) can quickly be used by others as an excuse to politicise something non-political and derail a thread with right-wing talking points no-one would otherwise be discussing in the first place.

        It's somewhat like the "Nazi bar" analogy- if you let one low-level Nazi stay in your bar because they're not that big a deal, they start bringing their friends, then more come because they're welcome, it snowballs, and you have a reputation as that Nazi-friendly/favoured bar.

        1. gosand

          But enough about twitter.

      7. Nightkiller

        The "Muh Racism" argument is so yesterday.

    4. NewModelArmy

      Still whining i see....

  3. jcday

    Not a trivial problem.

    The characteristics that make for good programmers doesn't generally make for good communicators.

    If Rust was seamlessly able to work with C's ABI, adding Rust code would not be difficult.

    Whilst memory issues are a big problem, there are many types of coding error. Perhaps it might be helpful to see how many classes of error we can practically remove, and whether this can be done more effectively in a C variant or a Rust variant, or some other high performance low level language entirely.

    1. christianh104

      Re: Not a trivial problem.

      Yes but the type of coding error we care about most is security vulnerabilities. According to Google, Mozilla, and Microsoft, about 70% of those have been due to memory safety issues. C variants are out of the race as far as anyone who cares at all about security is concerned.

    2. containerizer

      Re: Not a trivial problem.

      > If Rust was seamlessly able to work with C's ABI, adding Rust code would not be difficult.

      Pedantic nitpick : Rust code does seamlessly work with the C ABI.

      The problem is the kernel API, or more specifically, the fact that it very deliberately does not have a stable one.

      If you try to extend C to make it give the sort of guarantees that Rust has, you would end up with something that looks like Rust and has the same integration issues.

  4. Anonymous Coward
    Anonymous Coward

    Well, this is isn't going to go well, one fears.

    Linus says, "the current process works", but that depends entirely on what the purpose of the process is. It does seems to be causing factionalisation of the kernel community. Rows - especially when they spill over into the public domain - are never pretty, they become damaging, and they occur mostly because a definitive direction has not been set. Coming out with phrases such as "How about you accept the fact that maybe the problem is you", when there's a high probability that there's many others equally frustrated by the goings-on is, I would say, unwise.

    It's also unwise I think to compare the ills afflicting politics involving social media and the role of social media in this spat between developers. "Because if we have issues in the kernel development model, then social media sure as hell isn't the solution. The same way it sure as hell wasn't the solution to politics.". The trouble with that statement is that it invites analysis. And if one casts it the other way round - that the social media is bad because of the fecklessness of today's politicians - it's pretty hard to dispute that. Casting that back on to the dispute between developers, the inference is that the leadership of the kernel project is, er, not successfully bringing everyone along a clearly defined develmental direction, and it is that that is causing the spill over into social media.

    It does seem that there needs to be some sort of decision of Rust Yes or No in Linux, because this problem is not going to go away by itself, one fears. Linus may or may not choose to make such a decision, but in the meantime we should not be surprised if people vote with their feet. Nor should we be critical of them either; it's volunteer work after all. The problem that the current kernel project is likely to run into is that if a pro-Rust fork does start getting going, and companies like RedHat / IBM / Ubuntu decide that that is their future, that's where the developer resource will be.

    There is a reputational aspect to this; when you've got governments, computer scientists all over, bug data, performance metrics all pointing towards a new language Rust being the best future, and you're running a project showing every sign of sticking with "bad old C", not solving a big spat and suffering a potentially notable fork, the companies that hold the real power (employment of programmers) will likely choose the fork that is the future. There's every possibility that as time passes government suggestions will become government policy, and then government rules, and the last thing they want is to be stuck with an operating system dependent entirely on a developer base who will not change and a large government customer who refuses to buy.

    Also, one has to consider the impact of RedHat making that choice, and then keeping the results to themselves (in the way they're doing that with RHEL kernel source today). Other players such as Ubuntu, Suse, Oracle would not want to risk getting left behind. It's entirely possible that if unity cannot be restored, and we end up with a formal split between pro- and anti-Rust kernels, I'd not be surprised if Ubuntu, Suse and Oracle very quickly leaped on it, and RedHat too.

    This is why projects should not be a democracy. An advantage that proprietary software projects have is that, they're not democracies. It doesn't mean that they're inevitably going to produce great software, but they do tend to move in one direction.

    1. keithzg

      Democracy? There are no democracies here

      None of the things described here are democracies; if anything, your worries in regard to the Linux kernel seem fairly related to that project being one man making decisions and also being the figurehead. If it was a democracy one would imagine very different decision-making systems shuddering into motion in reaction to this conflict.

      I can perhaps see where you're coming from if we think about how Libre software projects like the Linux kernel have a dimension of governance not really possible for projects tied to the tangible world like nations are. That is to say one of the ways the Linux kernel approaches democratic is that people could fork and maintain changes the existing project won't, which is akin to if a nation had a dictator but also people could portal to alternative universes with ease where different people got to control the entire nation, and rather than citizens voting on their government they could emigrate between those parallel undemocratic worlds.

      1. Anonymous Coward
        Anonymous Coward

        Re: Democracy? There are no democracies here

        The overall impression I have is that the approach to "Do we use Rust or Not?" in Linux has been too equivocal, and it's resulted in situations like this more than once. Whilst that remains unresolved, it's going to keep happening and cause more damage. My worry is that whilst this is happening, the big commercial outfits who are looking on may well step in, take over (through weight of resource), and that's the end of the Linux kernel project as it is managed, volunteered and published today.

        It's easy to see the reason for the decision being equivocal. It's a large, volunteer project with some long-term members who really, really "own" their code. It's always hard telling such folk, "sorry, but we'll end up reimplementing this in a new language, and the sooner the better" when they've put so much effort in, and there's no particular reason why the change need happen whilst the code is under their care.

        What this means is that there's no "Linux kernel project" as such. It's an assemblage of components of a kernel, where major components are in effect separate projects run by passionate people who sometimes seem to care more for their component than they do the "Linux kernel" as a whole. We all know what happens if one dares to tamper with someone else's component, offering up a patch to it; you can get an unholy row breaking out. It has far more in common with electors voting in a government than one might think.

        Of course, I'm not expecting Linus to be able to magically resolve all this overnight; that's probably impossible. It's just that the situation makes it more and more inevitable that the Linux kernels we actually run and use day to day will end up in the hands of big business, and not the existing project. We're already there with RHEL - it may as well be an entirely different closed source kernel.

        There are ways of fixing this, to some extent. Projects like the GNU Radio Project require that you reassign copyright ownership to (in effect) The Project (actually, the FSF on behalf of the GNU Radio project), before they'll accept your contribution as a primary component of the project. What that means is that you really, really do not any longer own the code you wrote; you've given it up, and you don't get to wholly own any further versions you make of it either (because you're modifying code that is owned by the project, not by yourself). It also means that any copies that one has retained which still have your copyright claim (the "(c) 2000 <myname>") in them are in breach of copyright! That act of donation is probably a fairly calming influence on what happens thereafter, socially, managerially.

        Linux cannot achieve that perfectly; there's too many previous contributors who are lost, died, etc and it would be impossible to get all their contributions assigned to the FSF (or similar public-good body if the FSF is considered unsuitable...). But, maybe that's the one thing Linus could do, is to start that process off.

        It also helps trememendously with the "what happens when someone retires / dies" problem. At some point, code has got to pass into the hands of others.

        I think it is notable how other similar projects - e.g. FreeBSD - don't seem to suffer anything like this level of disagreement.

        1. Doctor Syntax Silver badge

          Re: Democracy? There are no democracies here

          If you check through the occasion postings of who contributes to Linux you'll find that "big commercial outfits" are the major contributors.

          "Of course, I'm not expecting Linus to be able to magically resolve all this overnight"

          He and the other source tree maintainers seem to have been resolving things on an ongoing basis for a long time. The system of having a single maintainer for a source tree has emerged as a very good solution to Brookes' problem of coordinating the work of a multitude of developers. In effect the FOSS maintainer has become the equivalent of architect.

          "It's just that the situation makes it more and more inevitable that the Linux kernels we actually run and use day to day will end up in the hands of big business"

          The kernels we use every day, as derivatives of the project's kernels, are in the hands of the distro maintainers - some may be big businesses, some not. The whole thing works OK. Red Hat can play all the ricks it wants but the only way they can have a say what ends up in my Devuan kernel is by submitting contributions to Linus, getting them accepted by him, accepted by Greg into the LTS kernel and then into Debian. Even then there may be changes during the life of an LTS kernel. None of this needs copyright reassignments.

          "other similar projects - e.g. FreeBSD - don't seem to suffer anything like this level of disagreement"

          They're smaller projects, they get less media attention to blow things up out of proportion and the nature of the BSD licence is such that if a big - or small - business wants to take a BSD kernel, modify it and keep the result provide they're welcome to do so because the licence allows them to do so. The GPL doesn't allow that with Linux whatever RHEL may try on.

    2. jemmyww

      Well, maybe.

      Linus already made the decision that yes rust would in the kernel. Hellwig opposed the patch but he can't actually block it because it's not patching his subsystem, it is wrapping it.

      So one wonders if Linus being quiet on the matter is purposeful to foster debate and/or expose those who are going to be a problem. Martin has quit and Hellwig doesn't come off looking great. Linus and Linux can carry on integrating Rust or not, without quite so much drama.

      1. Anonymous Coward
        Anonymous Coward

        Hmm, well on the basis of your first paragraph there would appear to be nothing to be debated in the first place. Yet, it is being debated, publicly.

        This whole thing has been simmering far too long. I'd guess that at the moment every Rust dev working in the kernel is pretty fed up, and are probably wondering if they're wasting their time.

        1. Doctor Syntax Silver badge

          "Yet, it is being debated, publicly."

          It can be debated publicly - in the right place. The right place is the kernel mailing list which is publicly accessible at lkml.org,

          1. Not Yb Bronze badge

            Exactly, not by random armchair social media inspired "developers" who aren't quite sure what a kernel does.

        2. Anonymous Coward
          Anonymous Coward

          They are wasting their time. Now if they'll please just STFU and GTFO, or learn C like a proper operating system developer.

      2. Anonymous Coward
        Anonymous Coward

        >So one wonders if Linus being quiet on the matter is purposeful to foster debate and/or expose those who are going to be a problem. Martin has quit and Hellwig doesn't come off looking great. Linus and Linux can carry on integrating Rust or not, without quite so much drama.

        I’ve wondered if the entire point of R4L isn’t to see how the community would cope without its sweary but benevolent-y dictator. Linus had no problems issuing a diktat on C++. With Rust, he seems to be content to only step in when maintainers start throwing their toys from the pram.

    3. Roland6 Silver badge

      > Rust being the best future,

      Rust is the most hyped future, it might be good but then there are other, less hyped languages, that are probably equally as good if not better, depending on what you are wanting or do.

  5. Anonymous Coward
    Anonymous Coward

    Maybe, just maybe...

    Some of the rust people can team up with the current maintainers and just go, "Let me handle all the Rust aspects of this." Get to know them, work with them in the same space on other issues, develop a working relationship. Then that maintainer would just happily shunt the rust over to their counterpart, who could be handling part of the load or pre-review of code, and just the rust stuff too -- and pass it up as a "Here ya go, already checked these C patches out by your standards and it looks good, these three Rust things too."

    Well or maybe not, we could all just bitch about not getting our way.

    Maybe there are too many "Oooh, new, shiny!" trying to force things through the conservative maintainers, when that's not an appropriate position for them. Let other, more conservative - but open to rust - people interact with the maintainers. Let things go "eventually". Things going to slow for you, rustolian? Fork it. Clearly there's a huge majority that want your rust project in the kernel, so fork it, you'll win, clearly.

    sigh. Time for my nap.

    1. F. Frederick Skitty Silver badge

      Re: Maybe, just maybe...

      Maybe, just maybe... Some of the rust people can team up with the current maintainers and just go, "Let me handle all the Rust aspects of this."

      That's exactly what the current situation is. The Rust developers are maintaining bindings to the existing C API. Hellwig is just being an arsehole.

    2. nijam Silver badge

      Re: Maybe, just maybe...

      > "Let me handle all the Rust aspects of this."

      They may as well say "No sooner said than promised."

  6. AdmFubar

    Why isnt there a memory safe implementation of C/C++??

    1. Gary Stewart Silver badge

      If you hand the keys to the kernel level DMA API to any programming language then the code that uses that API can not be memory safe. Any code that has direct access to memory or access to hardware that has direct access to memory is by definition unsafe. You can put guard rails in the code but it is difficult to predict and handle all edge cases that might arise. Since hardware drivers must have direct access to hardware they are inherently unsafe. Why some people think that Rust can fix this makes me wonder if they have heard about the use of unsafe in Rust. I sure using Rust can improve safety in some parts of the driver but this can not hold true for the driver itself.

      To more directly answer your question, C was originally written to provide as low a "high" level programming language as you could get without resorting to assembly. Over the years many improvements for writing safer C code in the language definition itself and in the C library have been implemented and adhering to them can greatly decrease problems with C code. Unfortunately due to the very nature of C, the safety of the code totally depends on the programmer. Being a life long (40+ years) assembly and C programmer my approach has always been meticulous attention to detail, knowledge of areas that need special attention, and a tough testing regime. It takes me longer to finish programs, but I generally find I need far fewer fixes during and after testing.

      1. Spamfast
        Meh

        Lilliput, Blefuscu & boiled eggs

        If you hand the keys to the kernel level DMA API to any programming language then the code that uses that API can not be memory safe.

        use of unsafe in Rust

        Indeed.

        I don't do a lot of application (i.e. program launched in userland on top an OS) programming these days but C would not be my first choice there anymore - I'd go for C++ making sure to avoid the use of memory-direct constructs. Rust looks like a good alternative in this domain. To be honest, when I have to knock something up to support what I do Python is often the better choice. My preferred arena is bare metal - sometimes RTOS mediated - design but I've also done work in Linux kernel space device driver stuff. The QNX micro-kernel userland driver model was a hell of a lot easier but Linux is okay once you understand the quirks of the subsystem in question.

        Anyway kernel programming, especially device driver development, is inherently memory unsafe, regardless of the language used. If you have to and are allowed to bugger about with the contents of the physical memory map, device registers, interrupts and the rest then you better get it right and it doesn't matter what type of runes you're using to do that.

        Rust may be 'safer' than C but at the end of the day it's the discipline in coding that counts and frankly, coming from safety critical, a lot of what I see in the Linux kernel's C code is god-awful in design, implementation, efficiency, documentation and error confinement. If this is the culture then I doubt Rust is going to make any difference and just adds more chances of screwing things up since there are now three times as many things to go wrong - the C, the Rust & the bindings between the two.

        M'eh! Like I say, I prefer bare metal anyway.

        1. Johninbmore

          Re: Lilliput, Blefuscu & boiled eggs

          That is not how any of this works. Memory safety doesn't have to do with privileged access; it has to do with correct access. The page table (physical to virtual address mapping) is basically an in-memory array of structures. In C, you point to it and write to a dereference offset pointer, i.e. ptrow[n] where n is an integer, and it just rolls with it.

          In Rust, you would create page table entries and track them as objects, with each row being a structure of a given length; if your code is mathematically capable of writing past the end, it doesn't compile. Likewise, if you take certain actions that frequently result in modifying memory in one body of code that then produces modifications unexpected in another body of code, it refuses to compile (borrow checker).

          Think about it. What you and GP said basically means memory safety doesn't exist at the application level, i.e. all code that isn't a specific, small part of kernel code is memory safe. Does that sound reasonable?

          1. Ace2 Silver badge

            Re: Lilliput, Blefuscu & boiled eggs

            We’re not talking about the page table; we’re talking about the device driver interface. Rust is going to help me get my DMA barrier macros correct how exactly?

          2. Displacement Activity

            Re: Lilliput, Blefuscu & boiled eggs

            You've missed the point. If you put the wrong numbers into the page table then it's game over.

            I've done one device driver, which DMA'ed from hardware direct into user space. And, believe me, there are many, many ways you can fuck up without ever seeing a pointer. Rust would have exactly the same problem.

          3. Lipdorn

            Re: Lilliput, Blefuscu & boiled eggs

            In Rust, you would create page table entries and track them as objects, with each row being a structure of a given length; if your code is mathematically capable of writing past the end, it doesn't compile.

            It seems that is the case for simple bounds calculations. Some would be run-time checks. The same static analysis that Rust uses to give a compile warning, and similar to what a compiler uses to eliminate run-time bound checks, can be used for C/C++. Linux already uses things like smatch. There is also the Linux Driver Validation process. So, most of the bound checks that Rust does at compile time can be done for C/C++ at compile time as well. I think an exception could be where arrays have decayed to pointers. Perhaps one of the reasons MISRA does not like arrays being decayed to pointers. Something akin to std::span from C++ might help. Void pointers might also complicate things.

      2. Alistair
        Windows

        DIRECT memory access and HARDWARE driver code.

        Thank you Gary. I don't code any more, but I do bug hunting. Finally someone that gets the point here.

    2. skane2600

      There is resource safety (including memory) in C++ although it's still up to the developer to follow the well-established pattern. But since Linus won't allow C++ in the kernel it doesn't matter. Rust gives him the ability to gain some of the benefits of C++ and more without losing face.

      1. Johninbmore

        Some of the benefits "and more" including enforcement of those benefits outside of specific, intentionally-marked blocks. Also different semantics like marking all datas as const unless declared mutable, e.g. 'let a=8u32' makes a u32 that can't be modified, with a new 'let a=' creating a reference to different memory. 'let mut a=8u32' allows you to modify the contents of the memory labeled 'a'. This is checked at every assignment: 'a' cannot be passed or assigned by reference into a mutable context.

        Imagine Linus commanding that the const keyword be used in like 95% of all function arguments or other places where it doesn't matter because nobody is actually modifying the passed argument anyway, versus commanding that you don't use the keyword to make things non-const unless they are actually treated as mutable. One of these will cause a riot and bring his sanity into question, while the other is just obviously good practice.

    3. MonkeyJuice Bronze badge

      People are working on a proposal for C++. However, there are a couple of pertinent issues here:

      • It isn't a magic button- it requires your code to carefully be reworked to use it effectively.
      • The Linux kernel is not C++, only C. Linus doesn't want to add C++ to the kernel, since there are too many crazy edge cases that crop up, particularly in the sort of code you write for a kernel. Additionally, it is far, far too easy to write code that looks like it does one thing, but does something slightly different. Not what you want when tracking down a low level memory issue.

      1. druck Silver badge

        Given his stance against C++, I can't understand why he would OK Rust. Keep it all C, and let someone else start again in <whatever>.

        1. Johninbmore

          Partly because c++ programmers are terrible. I'm not kidding.

    4. bazza Silver badge

      Come on people, downvoting a question as innocent as that is a bit off. There's a lot of readers of El Reg who are not C/C++ developers with decades of experience and have no programming experience at all.

      1. Gary Stewart Silver badge

        Yeah, I don't understand the down votes either.

        1. Doctor Syntax Silver badge

          Especially as it brought out an outstandingly good explanation from yourself.

          Asking questions and getting answers is the way to learn.

      2. Anonymous Coward
        Anonymous Coward

        Downvoted, because you're whining about downvotes. And downvote whiners ALWAYS deserve to be downvoted.

        1. Doctor Syntax Silver badge
          Thumb Down

          Happy to oblige.

    5. Anonymous Coward
      Anonymous Coward

      Hard hats and other Safetyware required beyond this point !!! ==>

      Is this a troll ?

      or

      Have you not researched this 'Question', not even a little, before asking it ?

      :)

    6. Anonymous Coward
      Anonymous Coward

      Short answer IF the original was NOT a Troll !!! :)

      Short Answer:

      Because creating a 'Memory Safe' C/C++ is just as big a problem as moving 'unsafe' code to Rust.

      There will be a performance hit for changing C/C++ and you need to ensure that ALL code still works !!!

      The same semi-religious objections to changing C/C++ will arise as with changing Kernel code to support RUST.

      Who decides what is changed and what is not ???

      Who decides what those changes will be ?

      Who is going to be responsible for managing & maintaining the 'NEW' C/C++ version ?

      Ditto

      Ditto

      Hopefully you see the direction this is going in !!!

      The real problem is NOT 100% what language you code in BUT the fact that at the lowest level when you have to 'manipulate' hardware etc the code is going to be non-menorysafe. Rust can handle this BUT it is an exception to the reason for using Rust in the first place.

      Rust cannot be imposed on people who don't want to use it.

      The fact that Rust binding are there WILL impact the work that everyone does and you cannot ignore the consequence of ANY changes even IF you are not resposible for maintaining the code yourself.

      It is an example of 'unintended consequences', you cannot always see what your changes MAY impact and you will find that something that WORKS when you are only working in C will have an impact for the Rust devs.

      You are therefore FORCED to work with the needs of the Rust Devs, in mind ... this may be something you do not want and as the work is being done by volunteers (mainly) there is NO onus on them to do what they do not want to do !!!

      This is a simple example of the issues at hand and the problems that need solving ... NO solution is going to be easy or popular or 100% supported !!!

      :)

    7. chololennon

      RE: Why isnt there a memory safe implementation of C/C++??

      > Why isnt there a memory safe implementation of C/C++??

      Nowadays there is a safe version of C++, the Circle C++ from the talented Sean Baxter (you can play with it in https://godbolt.org/):

      https://www.circle-lang.org

      The site also contains the proposal paper for current ISO C++.

  7. skane2600

    It was Linus himself who established Linux's hidebound commitment to the C language when he wrote his absurd attack on C++ and C++ developers. He could have had a subset of Rust's safety a decade ago, but it's good that he's allowing a better language to be part of the Linux kernel.

    1. F. Frederick Skitty Silver badge

      No, Linus had some very good points about why C++ was inappropriate for the Linux kernel. You can only use a very small subset of C++ features in the core kernel subsystems (no exceptions, no STL, etc) at which point, there's very little benefit but a lot of complications to supporting C++. The issue is less clear for drivers, but even there you cannot use a lot of C++ features since they don't play well with the quirks of a lot of actual hardware. That's also why C is a lot more common for embedded systems than C++.

      1. JoeCool Silver badge

        Exceptions are not part of the core language. Although like any feature they can be misused, they serve a good and useful pupose, particularly for RAII.

        STL is an optional library. No one has to use templates, ever. But they are fun.

        The improved syntax, compiler checks and language features that suppprt well designed modules are a good enough reason to adopt C++, in general. For the linux kernel i can believe that the trade offs amount to a toss up, but those would be social issues of managing the community rather than shortcomimgs of the language.

        I've read Torvals' rationalization. There is a whole lot of foaming at the mouth and attacks on unrelated stuff. like boost. but no dispationate discussion of real technical problems.

    2. Alex 72
      Stop

      Logically Linux development ought to be collaborative

      Many of the arguments here like this one which seem to make technical points are logically flawed this one for example "begs the question" the premise (e.g. Linus not accepting C++ is a similar incident and equally flawed decision since memory safety is desirable and a move away from C to a so called memory safe language will help) assumes the conclusion (e.g. Linux should use Rust now).

      <rant>

      The major open source communities seemed to be on a path to more respectful collaboration Linus Torvalds efforts to moderate his tone perhaps being one of the best examples of this. It is reprehensible that as Microsoft Oracle IBM et al have begun to contribute to open source more one of the major impacts has been a return to flame wars and identity politics.

      On the Rust for Linux front the way Rust and other "memory safe" languages are deemed to be "memory safe" depends on libraries maintained by humans. Just like the security and utility of the linux kernel is maintained by humans known as maintainers. It is not clear to me that outsourcing this security to another project that whilst by introducing opportunities for standardization and re use may reduce the diversity of error cases and vulnerabilities will also reduce the number of developers actively working on problems of memory safety and fully conversant in these considerations would in the long term actually improve the security of projects which move to memory safe languages solely for this purpose.

      The idea that C cannot be developed securely as there "are not enough young developers", the language lacks the capabilities, not using the RUST or C++ apprach and outsourcing this to an ever smaller community is not sustainable seems flawed to me and invites the question well why is the security record of Linux distributions compared to Windows and other operating systems which have of late fully embraced this approach comparable if not better than these rivals?

      </rant>

      I do not claim to know the right answer but allowing contributors to collaborate respectfully on proposals and the open source community projects to move forward without inviting lay people, anonymous accounts run by community members, vested interests, and trolls who want to see the world burn to weigh in on social media and attack volunteers who are often unpaid seems like a better approach to a viable solution for my money.

      1. Johninbmore

        Re: Logically Linux development ought to be collaborative

        Because the semantics of the language are known and real. When there is an error in rust (unlikely; there could be an error in its STL, but because that has Rusty's facilities to prevent such errors it is less likely than in a C++ STL, and besides STLs are generally stable and get bug fixes in a small body of heavy reused simple code rather than constant code churn), that error is fixed in one place.

        As to why to use rust and how it can help in theory, consider the opposite. What if we used assembly instead of C?

        C has abstract data types. For example, structs. A struct lets you tell the compiler to get color.blue instead of @data+$#wordsz*2 in all of the thousand places you ask about the blue channel. If you modify the data type and refactor your code, most of the code might go unchanged because blue is still blue even if the data type is shaped differently (any code compiled with the old data type breaks). Which way would have more errors caused by human mistakes?

        All languages abstract things to reduce human error. Rust does this better than C and C++ while focusing on applicability to low-level code like microcontrollers, kernels, or virtual machines, while C# does it better than C or C++ but is designed for application level programming and requires a heavy runtime environment.

        1. Doctor Syntax Silver badge

          Re: Logically Linux development ought to be collaborative

          The kernel exists to hand out abstractions of the H/W to whatever layers run above it. ISTM that in order to do that it has to real with the real H/W interfaces. Can any "safe" language do that without turning off its safety features?

      2. JessicaRabbit

        Re: Logically Linux development ought to be collaborative

        Upvoted you, if for no other reason than you actually used "begs the question" with the proper meaning.

  8. harrys Bronze badge

    bigger problem......

    will they be able to attract younger devs in the future

    the future of open source rests on it me thinks

    linus really needs to start doing less and look at his workflow and start shelling bits of it out, how old is he?

    the best leaders leave early and quietly :)

    1. m4r35n357 Silver badge

      Re: bigger problem......

      They are, and this is the result.

    2. Doctor Syntax Silver badge

      Re: bigger problem......

      "how old is he?"

      Not very, except, maybe, to a 20-year olf who knows everything.

      1. m4r35n357 Silver badge

        Re: bigger problem......

        and can't be arsed to use a search engine!

    3. Not Yb Bronze badge

      Re: bigger problem......

      "How old is he?" -- https://letmegooglethat.com/?q=linus+torvalds+age

      1. Czrly

        How far we've come!

        Oh how we look back with fondness on the days of yore, now that a "Let me google that for you" reply is no longer a cynical, obnoxious act but triggers, instead, some deep and fond nostalgia for the World Wide Web before enshittification and the Death of Search, when "googling" could justifiably be considered not only to actually be helpful but *so* helpful, indeed, that "googling" was considered by some to constitute due diligence before one could pretend to curiosity sufficient to pose a question in a comment thread!

        A curious sarcastic commenter wants to know: *when* one "googles" for Torvalds' age, today, does one actually *find* it? Or does one find a verbosely worded essay on (among other things...) the history of the concept of age, why tracking the age of someone is useful, code-snippets showing how to do an age-adjacent thing in Javascript+React, and a stirring memorandum on how knowing an "age" can benefit YOUR business or your bottom line, followed by a link to a premium, for-profit tool for age tech and a sidebar in which an online webinar taking place right now, on embracing age and age-related cloud products with integrated age-AI models, is advertised as the only way to succeed in today's economic climate?

        1. Ken Hagan Gold badge

          Re: How far we've come!

          "A curious sarcastic commenter wants to know: *when* one "googles" for Torvalds' age, today, does one actually *find* it?"

          Yes. You do. It is, in fact, the zeroth hit since the text

          "Linus Torvalds Age

          55 years

          December 28, 1969"

          appears in a special box of its own above the usual results.

          I'd be willing to bet that it took me less time to discover this than it took you to write your comment.

  9. Herby

    If you want Rust...

    Then take over the code and fork it. Call it Rustix (you heard it here first folks). Surely this will solve the problem.

    The "reason" this hasn't been done is that there are thousands (Millions?) lines of code that have gone through the eyes of many (Many, MANY) kernel developers.

    Other than that, every piece of code has a bug in it. Just fix it and go on, whatever the language.

    1. m4r35n357 Silver badge

      Re: If you want Rust...

      They don't want to prove themselves, they want to defecate on someone else's project. The downvoters agree with them.

    2. tekHedd

      Where is that pure-Rust kernel, then? We keep coming back to this.

      The kernel is old, unsafe, garbage! Agreed! Why not just throw together a linux-compatible kernel in rust from scratch, run it through some tests, and ship it with the rest of the gnu stack. It's so much easier to code when it's memory-safe so it should be easy and quick to implement, heck I'm surprised it hasn't already been done. Then all of these OLD (the worst thing you can be) programmers maintaining Linux can be given something to keep them busy (just let them keep working on the old kernel, they'll never notice it's unused because they don't do TikTok) and ignored.

      Interesting to see the ageism creeping repeatedly into the discussion, as if having 40 years of experience doing manual memory management (and miraculously making a working program without guard rails) is proof that you're obsolete and inferior. :)

  10. nsimic
    Unhappy

    I skimmed through the thread and it seems like Linus' comment was more about moving to a forge (like GitHub/gitlab) from email (centralized vs decentralized patch submission) than about R4L.

    To me looked like Hector tried to make a leap to R4L because of the similarities in handling (and probably to raise more support).

    Sad because avahi is actually successful in getting the fruity people to see the light.

    1. m4r35n357 Silver badge

      Erm, https://avahi.org/ ;)

    2. This post has been deleted by its author

  11. Groo The Wanderer - A Canuck

    The simple fact of the matter is Linus approves of Rust being in the kernel.

    End of story.

    Get over yourselves.

    1. Anonymous Coward
      Anonymous Coward

      The problem isn't whether or not he approves of it. The problem is that, at least twice now, the rust for linux group have sprung surprise PRs for sub-systems with no, or very little, prior involvement of or discussion with the maintainers of those sub-systems. Their presumption of absolute domain knowledge and the superiority of their position is what is getting people's backs up. In the inodes case, they didn't even understand the semantics of the sub-system they were trying to rustify

      Marcan is the most extreme version of it, but the r4l team generally appear to have an issue of assuming they know everything, not communicating with anyone outside the r4l team, then presenting a PR as a fait accompli to the maintainers of a sub-system they're working in, rather than working through the normal process of review and acceptance. It's not a kernel-developer-specific problem they're fighting against, either; any team that is presented with a surprise commit that doesn't follow the expected workflow, from a developer who has decided he knows better, is going to push back and require compliance with their processes.

      1. Anonymous Coward
        Anonymous Coward

        Ding Ding Ding !!!

        Correct.

        This is the problem of the rust devs/supporters going into 'Evangelical-mode' and expecting their enthusism to carry the day and convince one and all.

        What is needed is a 'Teacher' who can 'listen' as much as they 'talk'.

        Don't assume that you 'know all' and can see all the 'errors' others have made & "here is the solution I have written in rust !!!"

        This 'Teacher' needs to work with the existing Devs to understand the true scope of the problem from their perspective and work with them to find a solution that works for all !!!

        Neither side is 100% right ... BUT shouting at each other & using Social Media to generate 'large crowds shouting at each other' does not solve anything.

        There is truth on both sides and there WILL be someone who is prepared to work with the rust devs IF they are prepared to listen as well.

        A bit of mutual respect is needed ... BUT respect has to be earned and cannot be got by 'shouting down' the other side.

        As usual with problems between groups the issue is NOT the 'actual problem' BUT the 'broken communication' taking place.

        :)

  12. Graham Dawson

    Linus did not "shoot the messenger"

    Marcan barged into an issue that had already largely been resolved, or soon would have been, made unreasonable demands while grinding his axe about the lkml not adapting to his workflow, threatened to launch a social shaming campaign against everyone who didn't immediately kowtow to his position, and then flounced off when called out for his awful behaviour.

    This is the sort of unstable, irrational person you absolutely do not want working on the kernel. His first reaction isn't discussion or compromise, but blackmail.

    1. tekHedd

      Re: Linus did not "shoot the messenger"

      Yah, definitely the most off-target tagline on El Reg in a long time--undoubtedly an attempt at a joke but wow when humor fails it fails hard dunnit?

  13. amacater

    Big problems need bigger people.

    Let me give folks a bad analogy. There are large numbers of garage mechanics making a living servicing cars, changing oil and generally fixing things generally at a cheaper rate than main dealers and distributors. This has been the case for many years: arguably since before there were enough cars on the road to justify main dealers,almost back in the days when every driver was their own mechanic by necessity. Somebody knowledgeable could probably fix your car more effectively than you could as a driver and it was worth paying them to do so and save time and effort.

    Now there are hybrid and all-EV cars and the argument for these to be serviced is being led by a bunch of folk proclaiming the future and nay-saying everything previous.

    Clearly, unless you want every driver to pay top dollar to main distributors, be locked out from knowledge, understand nothing and have no choice - it's in the interest of all small mechanics to find common ground and learn from each other. That could happen - and both sides would benefit - but one side or other are constantly ridiculing the others experience or expertise. It would make sense for both factions to realise that ~85% of the labour is common and transferable and practical experience can help. Unfortunately, it's easier to undermine each other than to work on the ~15% that is new, difficult, challenges existing practices.

    1. AndrueC Silver badge
      Meh

      Re: Big problems need bigger people.

      I'm not sure what you're suggesting. Are you implying that it's not possible for independent garages to service hybrids and EVs because the information is being withheld from them?

      According to this article the problem in the UK at least seems to just be a matter of training.

      "National chain Halfords has also been investing in EV training, running internal programmes for existing staff and apprentices at its four training academies since 2016.

      “We have more than 700 EV-trained staff at our service centres, and 80% of our 700-strong network of centres can service EVs. The majority of sites have staff who are trained up to Level 3 to work on EVs and hybrids, and the sites have specialist tools and equipment for working on these vehicles,” says the leader of Halfords’ apprenticeship team, Dave Nicholls."

    2. Anonymous Coward
      Anonymous Coward

      Re: Big problems need bigger people.

      You're right, that's a very bad analogy.

    3. tekHedd

      Good analogy, bad execution of analogy...

      Yeah you have it backward. EVs are a small evolution for cars, which were highly computer controlled and technical before hybrids, and which had years of hybridization before they went full EV. Manufacturers were involved in these changes and kept their repair shops up to date throughout the transition. Some manufacturers were very conservative about the transition to electric, as it is a new technology and considerably different from ICEs both in terms of power generation and control systems. The transition was done gradually across many manufacturers and models with careful planning, and undoubtedly with lots and lots of coordination between the designers, manufacturing, and the one place where dealers make money: maintenance.

      In other words, it's actually not a bad analogy but only if you actually have a tiny insight into how automotive manufacturing, dealerships, and manufacturers work.

      A team leader who can't coordinate and communicate well with the rest of the teams? Deeply entrenched old-school processes and highly profitable existing products? Well.. there's a reason some auto manufacturers were later to the party than others, isn't there?

      Linux has the ULTIMATE installed base. Sweeping changes without buy-in simply aren't happening.

  14. ben kendim

    The world went to hell when we lost PEEK and POKE

    It's my damn computer and I will read and write anything, anywhere in its memory that I want!

    All that security crap, worse than even the TSA!

    1. JoeCool Silver badge

      Re: The world went to hell when we lost PEEK and POKE

      for i = 0 to 255

      for j = 0 to 32767

      print "write " i " to " j

      poke( j, i )

      next j

      next i

  15. RiverEmber

    Get on the Bus or Go Away

    The best way to ensure that you have no memory safe errors in an application built using C is to be competent at C development. Be good at it or go home, don’t try to shoe-horn a simpler language you’ve actually bothered to read-up on into an established project.

  16. jg9ray

    Rusux

    I'm sure I'm not the first to think this but maybe the Rusties could just go the whole hog and generate Rusux? If it's any good it would supplant Linux the same as it did to Unix.

    1. bazza Silver badge

      Re: Rusux

      OS

      There is a Rust OS - called Redox. It's another Unix-like OS, in that it behaves like the Unix standard requires it to. It's kernel is written in Rust too. It's no where near production ready, but what is notable is the timeline. That project went from nothing to having a running user desktop in 3 years flat. That's a pretty rapid rate of development. This bears out one of the oft-cited aspects of developing in Rust - it's faster. This is simply because one is not spending time debugging bugs that are down to memory faults.

      Rust is creeping into Linux in the kernel, and may or may not eventually displace C.

      Userland

      Rust is creeping into the Linux userland too. There is a Rust re-implementation of the standard gnu coreutils (things like ls, cat, all the standard cli tools). This project "uutils" was started by some in (I think) Mozilla who decided it was high time he learned Rust, and chose this as a learning project. It blew up from that self-teaching start. The interesting thing is that the end result is an improvement, not just a slaveish translation of the original C.

      Hardware, and a Very Big Bet

      Rust has an interesting facet - "Fearless Concurrency", which may have played a part in that. It was used in Firefox's implementation of CSS - which is why it's so fast. I mention it because there's an important aspect of Rust that may become very important in the future.

      Rust's syntax means that the compile knows for sure the ownership of objects. Can a piece of code change a piece of data, or read it? It knows this. This means that Rust can easily implement CSP, i.e it implements "Channels" much as golang does, but doesn't need a garbage collector. The important bit is, how is this implemented under the hood?

      I think that the Channels are - at present - implemented by the compiler as shared memory (in the sense that the receiving thread is accessing memory written to by the sending thread). So far, so very Symetric Multi Processing / shared memory / computers as we know them today.

      However, there's no hard and fast reason why the compiler should do this, other than that is the hardware architecture upon which most code in the world is run today. And the thing about this hardware architecture is that, today, it truly sucks. It's the reason we've had Meltdown, Spectre, and all the other cache fault based probings of sensitive data in one program by another. All major CPU architectures have fallen for this, Intel, AMD, ARM, ARMs of various flavours (including Apple).

      An alternative hardware architecture would be that all CPU cores are entirely separate, with their own memory controller, L3, L2, L1 cache, joined together on a "network" allowing rapid exchange of data between cores via only that network, and not via L3 cache. No shared memory. Data gets transferred between core only if the software explicitly does that. We've had real hardware architectures like this in the past - Transputers - and back then they looked like that' what we were going to have to use. The Cell processor in the PS3 was also like this internally (between it's SPEs). The problem today is that it's utterly incompatible with all current operating systems, and most multithreaded software (except for golang, Rust, Erlang).

      This is where Rust could come in. It could take the code written to use "Channels" and implement that across real, physical channels. The source code need not change for building on a hardware architecture radically different to today's SMP. And that'd make it a lot easier to ditch problems with shared caches.

      Today, hardware is stuck with SMP because of the software, and the software is stuck on SMP because no one wants to re-write it. The point is that if a re-write were to happen and it was done in a Rust-channel way, so long as the compiler was changed the hardware could also change, but the re-written source could stay as is.

      So, I think there is far more at stake in this Linux/Rust question than first meets the eye, and it's probably the case that even today's Rust efforts in Linux aren't looking far enough ahead. A kernel written in a way so as to be largely independent of whether the underlying hardware is SMP or more Transputer like would be a very, very potent asset. It wouldn't help the software it's hosting unless that too was re-written in a strictly go-like or Rust way.

      However, I fear that what I'm suggesting above would take massive coordination between many different organisations, and it's effectively socially impossible. We can't even get simple decisions about wrapping APIs written in one language in a way to benefit another without some unholy row breaking out.

      1. TheMeerkat

        Re: Rusux

        > There is a Rust OS - called Redox

        If it is so great, why those Rust people concentrate on Redox and leave Linux to be what it is now, instead of trying to put a foot into the door that would be difficult to remove later, when the Rust is replaced by the “next big thing”?

        1. tekHedd
          Happy

          If it's so great, why?

          This is one of those, what you call, rhetorical questions, right? Obviously because Linux is the big thing and...

          OK fine. After the whole systemd thing, my paranoia is kicking in. I suppose it could, possibly, be that someone is incentivized to cause chaos in the Linux ecosystem and ruin the whole ecosystem as much as possible so that other commercial products will look better, and if you can do it by causing conflict and making the best minds get fed up and quit, even better. But that would be cynical. It's much more likely that bright youfs who love Rust want to be able to make a driver for their custom GBA-compatible emulation hardware and are frustrated that you have to write C to poke a register.

  17. VerySlowData
    Linux

    Oxide OS

    I would agree with other commentards that the best approach for the R4L team is to abandon fighting to get Linux changed, but build a linux-like OS (called Oxide OS) totally from Rust components and sub systems [not a rust expert here] the kernel would be the biggy, but with the salami approach - one slice of code at a time it may well be doable. The two code bases could be compared for performance and security, and people could choose the OS they want (as opposed to MS' laying down of the Windows law!)

    1. Anonymous Coward
      Anonymous Coward

      Re: Oxide OS

      I sort of agree BUT it does smack of 'Go away and build your OWN OS ... (that should keep THEM out of my hair for a few years !!!) ... problem solved'.

      The idea appears to be valid but not doable in a reasonable timescale.

      What is more reasonable is to 'leverage' the experience of the existing maintainers to incrementally 'upgrade' the kernel with rust, which should/could reduce the timescale.

      This, of course, is the reason for this article and all the bad blood ... the working together phase is being 'forced' due to a lack of patience and a little respect.

      It could be doable but the approach needs to be more nuanced and *BOTH* sides need to be prepared to learn.

      I am neither pro or against rust BUT would like to see better communications to see IF this idea has 'legs' or not !!!

      :)

    2. Anonymous Coward
      Anonymous Coward

      Re: Oxide OS

      Are there enough developers and time? Won't AI be creating everything by the time it's comparable? ;)

    3. tekHedd

      Re: Oxide OS

      They're already doing that. Apparently, it's hard. :D

  18. mevets

    mean geeks

    geek#1 : OMG Chelsea says you look fat.

    geek#2: Chelsea binges and purges

    geek#1: Can you believe she is such a ....

    sigh.

    1. Ian Johnston Silver badge

      Re: mean geeks

      Are you shaming shaming?

  19. Anonymous Coward
    Anonymous Coward

    "then social media sure as hell isn't the solution. The same way it sure as hell wasn't the solution to politics. "WRONG!

    Brigading is wrong, bullying is wrong, abusive behaviour is wrong, but open discussion about either "open" source or politics is not wrong.

    1. Anonymous Coward
      Anonymous Coward

      The only "open discussion" from marcan was him openly discussing the idea of compiling secret blackmail dossiers on people who disagreed with him.

  20. untrained_eye_of_newt

    uh wasn't USENET where Linus started it all...

    Sort of the main Social Media at the time? Linux is the emblematic of remote asynchronous collaboration over social media. Certainly wasn't accomplished in-person over little "agile" standup meetings under the watchful surveillance of some top-down fascist corporate order...

    1. tekHedd

      Re: uh wasn't USENET where Linus started it all...

      USENET was a little different. The barrier to entry means you get a different class of troll. See also, Mastodon a year ago.

  21. Ian Johnston Silver badge

    Anyone who uses the term "shaming" has lost the argument. It's a very Gen Z way of saying "criticism": if criticism makes you feel shame then the answer lies in your hands.

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like