Over the last year or so I have been reading a lot of attacks on Rust and Rust "fanboys" seeing a lot of YouTube vids attacking the supposed Rust "cult".
In case anyone has not been following, a lot of this has a legitimate origin. For example Ubuntu pushing out a buggy rewrite in Rust of Linux core utils. Recently a Microsoft guy announcing MS's intention to rewrite al of MS C/C++ in Rust using AI. Not to mention the battle going on about Rust in the Linux kernel. There are other such stories.
After years following this forum and others, where I assume Rust "cultists" hangout I have never heard anyone advocating for rewriting huge old code bases in Rust. On the contrary I hear most saying that this is most likely a bad idea. There is discussion and work going on towards interoperability, symbiosis, rather than replacement of old languages.
I conclude all this nonsense is not Rust's fault. Not the fault of Rust developers. Not the fault of any of us here. Rather it is a choice of Ubuntu or MS. or whoever.
I have tried sometimes to communicate this in response to the stories like the ones I mentioned, Only to be attacked as a Rust cult member.
None of this is making any sense to me.
So I was wondering. We have a Rust Foundation. Which I assume is a major communication media between Rust and the world. Perhaps they could make official "comment" on such stories pointing out that they do not recommend such crazy rewrites and so on.
There shouldn’t be any “cultist” activity here. If there is, please leave a flag for moderation
This forum is following our code of conduct… hence the following is official policy for discussions here[1]:
Respect that people have differences of opinion and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a right answer.
This means that Rust isn’t always the right answer; that choosing Rust over C, or choosing Rust over C++ is always still a trade-off and choosing one way or the other does also carry numerous costs either way (the nature of these costs would also of course vary, depending more concretely on the context of each situation at hand).
To clarify, the above was not meant to be a response to
I actually ready that part of your question only afterwards but…
… I mean, I guess, the CoC of course could be something official to point to already? Well maybe not really for effective “social media”… In any case, I think it’s pretty clear that this would of course need to apply even the question of using Rust itself. Using Rust, as an implementation choice, will have numerous costs. Of course the choice of not using Rust may also have a cost. Yay, trade-offs!
Also on that part of your question, it’s important to note that it is not the role of the Rust Foundation to be the official voice for the Rust project. The “project” and the “foundation” are rather separate, conceptually. There’s probably other places, where the exact structure of this is explained more in-depth.
some anecdata: In a casual conversation with a young developer, I mentioned that I found Rust to be a really cool language. I don’t remember the details, but I found his reaction to my comment sort of strange. Later, I connected the dots, and came to the conclusion that maybe he thought I’m one of those “fanboys”.
So, it might be that even in simple or meaningless conversations, any praise to the Rust language may come across as “cultist”.
I think it is wrong to define "we/us" and "they/others".
Rust is a programming language, just one of about 100 programming languages in use. So it is only a tool.
By using a tool, for example a hammer to nail a roof framework made of wood, it is absurd to define myself as a "hammer user community member" and to distinguish myself from people who are in the business of welding steel frames together.
Once this clicks, you will no longer be vulnerable to any statements that sound offensive in whatever medium. They will simply not exist for you anymore.
I agree with your point in general, but I think there is an important distinction between not getting offended and maintaining a "good reputation of Rust".
I don't really get offended by such statements to begin with, but I do care about the way people perceive the language.
Maybe I should explain what I mean by "the good reputation of Rust": Choosing a language to use is definitely a tradeoff, and all options should be considered for what they are worth. But people who are not familiar with Rust may choose against it because they heard bad things about it, not because of an actual weakness of the language.
So for the greater goals of more memory-bug-free and performant code and better developer experience, I wish more people and teams could choose objectively.
Hype and the cultist allegations may boost people's awareness of the language, but I think they hurt its acceptance more.
So it would be great to have a way of making people give an honest try to Rust, instead of participating endless uninformed debates.
After that, it's still completely ok if they choose against Rust, but they know what they are saying no to.
Remember that many social media sites filter stuff so you get what they think you want. youtube will probably feed you videos that are similar to the videos you have already watched. They know you watched so they give you more. They filter out the stuff you don't watch.
I am rewriting a C++ implementation of a data structure in Rust.... It's not because I dislike C++ and am a 'rust cultist' or anything :'D It's simply because its a very high perf and interesting data structure and Rust doesn't have that many good high performance concurrent ordered map crates that you could use instead of the std RwLock. I have noticed some interesting performance boosts compared to the original in the tests I have done for similar cases (but it's still too early and may be just due to it being a simpler implementation without some of the core functionalities like, range scan, the original provided). Trying out some new and more aggressive optimization and novel enhancement techniques in this case have been easier for me in Rust, but someone expert in C++ may be able to do the same in C++. But I am not really an 'expert' in Rust, instead some of the fundamental security guarantees and idiomatic patterns makes implementing optimizations easier :'D
Also, rust rewrites for gnu tools like bat, rg, fd (and many others) are legitimately better. They provide better performance, better ergonomics and developer experience. It's not unusual that C/C++ people would feel uncomfortable by this, but you would probably feel the same about another new language gaining momentum 20-30 years later, and replacing stuff you knew about, forcing you to learn it after you are already comfortable writing things in Rust and have written in it for 20-30 years straight :'D
EDIT: Also because the C++ implementation currently seems to be not be actively maintained.
I've specifically noticed claims ranging from "Rust is overhyped" (a completely subjective claim, so sure) all the way to "Rust users are a death cult" (maybe cool off there buddy)
There's definitely some sort of consensus that there's an official policy that Rust will fix all bugs and therefore it's lying and evil - I'm just not sure where it's coming from exactly.
When I've asked what those claims actually are and what the "official source" actually was, they just move the goal posts, of course: one recent exchange I had recently went from
"official sources" have 'such claims as "mostly bug free" or "eliminates entire classes of bugs"' (which sources?) to,
"I recently saw someone on Reddit claim that Rust's type system is formally verified" (obviously a misunderstanding of RustBelt) and that "Rust's community leaders have a duty of care" (to prevent people being wrong on Reddit), to
(in too much verbiage to actually quote) actually you can't claim there's a formal proof unless rustc and all the tools are themselves formally proven,
Eventually, the "official source" of the "eliminates most bugs" is apparently that there's 'industry folklore that "70% of problems are caused by X,"' and Rust of course claims to eliminate that X, so it's claiming it eliminates most bugs. An impressively wrong statement, it's almost fractal!
Now if this was just arguing in YouTube comments, sure, you're going to find idiots doing that everywhere, myself included, this isn't actually about me winning an argument (no matter how good it feels to rant about it). But while this person actually engaged and provided examples of where their thinking was coming from, it's still not really any clearer to me what the actual thinking is, where the misunderstanding or motivation is coming from. It's just axe-grinding strawman arguments without any acknowledgement of how silly it is to claim Rust that is overhyped essentially because one person on Reddit was half-wrong about something (that's half-less wrong than they usually are!) - and that is a pattern I see over and over wherever Rust ever gets mentioned "in public", though generally much more terse and with more personal attacks (culminating in the impressive almost literal exchange: "All rust users are toxic" "What kind of toxic do you mean?" "What you're doing right now", which I can't help but laugh about)
Now is this all actually anything specific to Rust itself in isolation? Maybe not, arguing over languages is a time honored tradition, and Rust has a few things that could be dialing that up: relatively fast adoption, positioned as replacing a long-standing undisputed language in it's niche, with a strong, unique technical argument for it's use, and with a lot of design influence that makes it strongly unfamiliar to the thing it's replacing. I can't think of another situation quite like that, C has been around and effectively dominant in some form for over half the history of programming languages! Maybe when Java was being pushed so hard in the 90s-00s, though at least there there was a clear technical and political (for lack of a better word) argument that Java was, in fact, over hyped: performance and being corporately marketed.
I will say, at least I've not seen the "Rust is communist" or other politically connected nonsense since those blips with the Rust Foundation and convention rules a while ago.
I believe that part of the hype may be a more or less fundamental misunderstanding of the meaning of Rust in some groups of people who are less deeply familiar with programming in the first place. Given that less focus on fine technical knowledge may occasionally go hand in hand with being able to make it into corporate leadership positions (probably also depending on the company of course… right?) it’s plausible I guess that reactions even such as
could be the consequence. Though it’s also noteworthy that it’s also plausible the reporting on such reactions can be a major part of the “issue” in the first place.
Fore example, regarding one other point that was mentioned in the OP here… like, for all I know[1] the topic of “Rust in the Linux kernel” isn’t too well described as merely an “ongoing battle” either.
If it was nothing but a destructive “battle”, why would the be doing it? The main thing I have perceived which will make it seem like a big “battle” would be many social media actors, who obviously love to dig up every last piece of drama that they can dig up and place on a big stage, for maximal audience engagement. – Or well maybe @ZiCogmeant the more social-media site of things when mentioning “the battle going on about Rust in the Linux kernel”, not anything going on inside of the actual participants working on “Rust in the Linux kernel” development, and/or generally actively in the sphere of kernel development.
Either way; in reality, it seems it’s just a project/development/initiative[2] that managed to be promising enough to actually get kicked off for real, and that turned out valuable enough so people keep it alive and growing. [The most recent thing I’ve seen about it was thankfully a more normal piece of news that they upgraded it from no longer being considered an “experimental” thing.] And with those people involved, I’m certain that there, too, most people are definitely aware of lots of costs and trade-offs. And also, like @mroth already mentioned for the programing language in general, for Linux kernel matters in particular, certainly many people that work on the kernel would not be living along a strict split between “us” vs. “them” regarding “Rust users”, and “C users” idendity; because indeed one person can in fact be knowing and use both languages.
I'm amused you quoted from one of the few threads I've I posted here!
I think the 'Microsoft AI guy' turned out to be just a random MS research engineer talking out his butt on a job listing, with no actual power nor mandate to actually rewrite everything by 2030. Typical pie in the sky research stuff that gets blown out of proportion because it's a hot button issue. To be fair, I'm sure management would love to be able to have an engineer port a million lines of code a month using AI for multiple reasons, but we can't yet call them all idiots for this reason
The actual battle in the kernel itself was somewhat real: the ELI5 was "Some C maintainers wanted to be able to change their interfaces and not learn enough Rust to update new Rust downstream code and wouldn't accept promises from the maintainers of the downstream code to update the Rust code when they broke it and Linus didn't want to merge patches that broke Rust code" - I'm somewhat sympathetic, but also somewhat shocked that the standard procedure was apparently that maintainers of one system don't bother coordinating changes to the interfaces they provide. No idea what the resolution there turned out to be, but honestly this just sounded like typical growing pains, as strange as that seems for a system as mature as Linux.
Rust is badly hated by some oldschool c/c++ devs, because they see it as a direct competition, this causes a butthurt, and they start to put all those labels on language and on the community. Just don't take this seriously, there will always be mentally challenged people around any successful project like rust. Chill out, have fun.
A language empowering everyone
to build reliable and efficient software.
Such a phrase is not too serious, it is some form of stupid marketing. And it might even imply that other languages would not allow this. I bet that from the worlds population, less than a third would be able to create a serious Rust app, even when we provide them with the required hardware and a year of intensive teaching.
And perhaps the most problem with that phrase is, that people trying hard to learn Rust and failed might feel really bad -- stupid or lazy. It is a bit like commercials telling people that everyone can have a lean, strong and sexy body.
[EDIT]
As the phrase might get misinterpreted:
less than a third would be able
I is not that these people are too stupid -- it is just that Rust is complex and not that easy to learn, and creating some larger useful software is hard in every language.
OP: Here's a problem that prevents me from promoting Rust inside my company.
Some answers: That problem shouldn't exist.
Some other answers: Here's the right way to do it instead.
(And lots of answers that weren't like that, just to be clear.)
I'm just trying to say, while you obviously won't find people overzealously promoting Rust on this forum (how would that even make sense?), I sometimes see some similar behavior. I'm not even sure if it's necessarily a bad thing, it's just an observation.
(And then, there are all the people just offering help when people run into problems, replying calmly even to low-effort posts... I'm pretty sure those are the majority.
BTW, "All the world is hating on us" must be a skewed perspective in a similar way.)
Thinking about it a bit longer, I think that I have not seen a single post that was promoting or advertising Rust too much in the last two years since i am using Rust. At least not in this forum -- my feeling is that here most people are adults, able to judge carefully. I even sometimes read a few Reddit posts, and even there most seem to judge Rust quite neutral.
Simply "A" programming language that empowers anyone to build reliable and efficient software. If instead it said "THE language" then blow-back would be understandable.
I think Rust's reputation simply took on a life of its own once it began to be more widely promoted. There's no bombastic front-man figure to control the narrative, no Benevolent Dictator, no corporate giant. For better or worse, most peoples' impression of Rust is going to be what they've received by word of mouth online.
Rust, its creators and its community aren't responsible for silly things that other people choose to do in Rust, or with incomplete Rust projects (referring mostly to Ubuntu adopting and publishing the uutils "production ready" coreutils project, with its ~500 open Github issues) …
Mostly I can agree with everything every one has said above. But this puzzled me:
It's certainly prominent, on the top of the Rust home page, but how on Earth is that an example of "cultist"?
It says so many accurate and important things very succinctly:
"A language..." - now you know this is a page about a programming language not a crop disease, computer game or what happens to your car. Personally I think it should say "A programming language" but never mind.
"...empowering everyone..." - Implies to me that any one can use it. They don't need money to buy it, they don't need a particular computer, Linux, Max, Windows at least will do. They don't need to be massively skilled after years of experience to use it. As easy as JS or Python.
"...to build reliable..." Hinting at all the type, lifetime and other checking Rust does to try an minimise unexpected bugs.
"...and efficient software." Hinting at providing the best performance on a par with C and C++ rather than say JS or Python.
All sounds accurate and good to me. Far from "cultist".
I don't think there is an issue with making those who failed to learn Rust bad, stupid, or lazy. After six years of using Rust I have failed to learn huge junks of it. I can't write macros for example. But almost from the beginning I produced non-trivial programs that have been in production ever since. Most of my code looks like C, except when it looks like Javascript. I don't see that it harder to get things done than Python or C++.
Sure many of the people in the world are never going to be able to program. So what? I was never going to be able to play football, or play the violin. I don't feel bad about it.
I don't know how people go from “70% of crashes are caused by memory safety bugs that are impossible in Rust” to “Rust will eliminate of bugs”… I mean: 30% of other bugs still remain!
Well… there are many such sources. Memory safety bugs are impossible in safe Rust.
It's worse: it's not even wrong… that's the biggest issue, in some sense.
Note that you are doing here, to Microsoft, what “fanboys” are doing to Rust. This wasn't even an official Microsoft post, just some recruiting drivel by Galen Hunt, the guy who tried and failed to create something grandiose with Windows IoT, spectacularly failed and then simply made an overhyped Linux distro… so we know it's something from the guy who likes to promise the moon only to deliver a flashlight… and now that transformed into “ MS's intention”.
I would say that it was pretty visible and quite real “battle”. It was “won” by Rust — with heavy casualties on both sides.
Two maintainers resigned, in the end. Linus, eventually, enforced the rule:
I just wish it took less than month, without Ars Technica articles and other such things.
Believe me, this “really important difference” flies right over the head of 90% of world population. Simply because many languages don't have that distinction thus for them “a” and “the” are “annoying pieces that you need to add, sometimes, for no good reason” and not something that carries important information.
P.S. I wonder when bincode saga will reach its peak…
Yeah. I jumped the gun there. Fell into the trap of taking things at face value to easily. Later I found it was all phooey.
It was a real battle in the kernel folks. I saw one vid of a conference they had. I was shocked at how they behaved when a guy was presenting news of the Rust in kernel progress.
Yes, of course these pieces of drama exist. But I’m putting into question if this is at all representative of the whole process? Or maybe, re-iterating only the most dramatic moments related to Rust in Linux is the only thing that makes the whole thing seem like an actual “battle”?
Incidentally, while focusing on this drama here, you’re also again strongly implyling this notion that there are clear “sides” in this “battle”.[1]
Like, for instance, normally – in an actual “battle” – the actors involved will declare themselves that they are having a battle, and are on so-and-so side, wouldn’t they? For all I can remember, these people were generally even explicitly making clear each of their nuanced positions on the matter of programming language usage in the kernel.[2]
If this “battle” and “sides” framing is instead merely imposed from the outside – maybe everyone involved in this was merely sharing & arguing their personal opinons about stuff, not fighting some battle for their side? This wouldn’t be a battle, it would merely be a discussion.
And that’s still ignoring all the actual work on Rust on Linux that actually matters. That’s just work, and developments; design decisions, of course also more discussions… Most definitely not just these few instances of stronger drama are what constitutes Rust’s inclusion in the kernel. This is an OS-kernel we are talking about, not a warzone.
So [work – design – discussion] I guess that’s just the boring business as usual, right? Much more true to the actual core of what’s going on – but who wants to pay attention to boring stuff on social media?
Edit: Reading the rest of your reply now, I now notice that the words “C side” and “Rust side” also do in fact come up in the linked mail from Linus.
I believe it’s rather clear hovewer that these term here are not at all talking about “sides” in a battle, nor about factions of people, everyone being somehow part of one “side” or the other. Rather it’s talking about different sections of source code. The “Rust side” is merely referencing the “Rust code in the kernel”.
My best guess on the wording: they’re feeling like “sides” there are boundaries separating them^ [necessarily, as Rust code and C code need to communicate through FFI]; and there’s also some degree of symmetry where newly added Rust interface can mirror the existing C interface – a single kernel subsystem would then have gotten two external APIs – a C API and a Rust API – which you can imagine existing side-by-side.[3]