-
Notifications
You must be signed in to change notification settings - Fork 321
vision doc: what do people love about Rust? #1767
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
vision doc: what do people love about Rust? #1767
Conversation
jackh726
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple typos identified in CI, but overall I love this.
Kobzol
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great story! I think that there might be perhaps a bit too many quotes to my liking, but in the end that's why you did the interviews, so why not.
I also didn't understand what do those recommendations mean. It's a bit weird that a blog post on the official Rust blog recommends something to.. Rust? 😆 I mean, I get what you mean by it, but it looks a bit weird still.
Btw, some quote authors are probably relatively easy to identify 😆 But I suppose that's not really an issue.
| team_url = "https://www.rust-lang.org/governance/teams/launching-pad#team-project-vision-doc-2025" | ||
| +++ | ||
|
|
||
| Rust has been named Stack Overflow's Most Loved (now called Most Admired) language ever since our 1.0 release in 2015. That means people who use Rust want to keep using Rust[^gleam]--and not just for performance-heavy stuff or embedded development, but for shell scripts, web apps, and all kinds of things you wouldn't expect. One of our participants captured it well when they said, "At this point, I don't want to write code in any other language but Rust." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Rust has been named Stack Overflow's Most Loved (now called Most Admired) language ever since our 1.0 release in 2015. That means people who use Rust want to keep using Rust[^gleam]--and not just for performance-heavy stuff or embedded development, but for shell scripts, web apps, and all kinds of things you wouldn't expect. One of our participants captured it well when they said, "At this point, I don't want to write code in any other language but Rust." | |
| Rust has been named Stack Overflow's Most Loved (now called Most Admired) language every year since our 1.0 release in 2015. That means people who use Rust want to keep using Rust[^gleam]--and not just for performance-heavy stuff or embedded development, but for shell scripts, web apps, and all kinds of things you wouldn't expect. One of our participants captured it well when they said, "At this point, I don't want to write code in any other language but Rust." |
|
|
||
| [^gleam]: In 2025, 72% of Rust users said they wanted to keep using it. In the past, Rust had a *way* higher score than any other language, but this year, [Gleam came awfully close](https://survey.stackoverflow.co/2025/technology/#admired-and-desired), with 70%! Good for them! Gleam looks awesome--and hey, good choice on the `fn` keyword. ;) | ||
|
|
||
| When we sat down to crunch the vision doc data, one of the things we really wanted to explain was: *What is it that inspires that strong loyalty to Rust?*[^messitup] Based on the interviews, the answer is at once simple and complicated. The short version is that **Rust empowers them to write reliable and efficient software**. If that sounds familiar, it should: [it's the slogan that we have right there on our web page](https://www.rust-lang.org). The more interesting question is **how** that empowerment comes about, and what that it implies for how we evolve Rust. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| When we sat down to crunch the vision doc data, one of the things we really wanted to explain was: *What is it that inspires that strong loyalty to Rust?*[^messitup] Based on the interviews, the answer is at once simple and complicated. The short version is that **Rust empowers them to write reliable and efficient software**. If that sounds familiar, it should: [it's the slogan that we have right there on our web page](https://www.rust-lang.org). The more interesting question is **how** that empowerment comes about, and what that it implies for how we evolve Rust. | |
| When we sat down to crunch the vision doc data, one of the things we really wanted to explain was: *What is it that inspires that strong loyalty to Rust?*[^messitup] Based on the interviews, the answer is at once simple and complicated. The short version is that **Rust empowers them to write reliable and efficient software**. If that sounds familiar, it should: [it's the slogan that we have right there on our web page](https://www.rust-lang.org). The more interesting question is **how** that empowerment comes about, and what it implies for how we evolve Rust. |
|
|
||
| ## What do people appreciate about Rust? | ||
|
|
||
| The first thing we noticed is that, throughout every conversation, no matter whether soneone is writing their first Rust program or has been writing it for years, no matter whether they're building massive data clusters or embedded devices or just messing around, there are a consistent set of things that they say they like about Rust. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The first thing we noticed is that, throughout every conversation, no matter whether soneone is writing their first Rust program or has been writing it for years, no matter whether they're building massive data clusters or embedded devices or just messing around, there are a consistent set of things that they say they like about Rust. | |
| The first thing we noticed is that, throughout every conversation, no matter whether someone is writing their first Rust program or has been using it for years, no matter whether they're building massive data clusters or embedded devices or just messing around, there are a consistent set of things that they say they like about Rust. |
| Another, of course, is **efficiency**, especially in data-center contexts: | ||
|
|
||
| > "I want to keep the machine resources there for the \[main\] computation. Not stealing resources for a watchdog." -- Software engineer working on data science platforms | ||
| > |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd rather they aren't, so if you have particular suggestions where you feel we could work harder to anonymize or omit, either PM me or let me know here in comments. |
PLeVasseur
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks fantastic! 🥰
I left primarily two classes of comment:
- editorial bits
- bits which seemed worthwhile to discuss from the safety-critical realm
Happy for any feedback on what I left
| > | ||
| > "Rust is one of those languages that has just got your back. You will have a lot more sleep and you actually have to be less clever." -- Rust consultant and open source framework developer | ||
| Another, of course, is **efficiency**, especially in data-center contexts: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe a reword to help it flow into the next couple of sections?
| Another, of course, is **efficiency**, especially in data-center contexts: | |
| Another, of course, is **efficiency**, from data-centers to safety-critical embedded devices: |
|
|
||
| > "For me, getting started with Rust, the language was challenging, but the tooling was incredibly easy... I could just start writing code and it would build and run, and that to me made a huge difference." -- Founder and CEO of company creating developer tools | ||
| > | ||
| > "Cargo is an amazing package manager. It is probably the best one I've ever worked with. I don't think I ever run into issues with cargo. It just works." -- Software engineer with production Rust experience |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Spelling consistency
| > "Cargo is an amazing package manager. It is probably the best one I've ever worked with. I don't think I ever run into issues with cargo. It just works." -- Software engineer with production Rust experience | |
| > "Cargo is an amazing package manager. It is probably the best one I've ever worked with. I don't think I ever run into issues with Cargo. It just works." -- Software engineer with production Rust experience |
|
|
||
| > "I was civil engineering and I studied front-end development on my own, self taught. I had no computer background. I got interested in Rust and distributed systems and designs and systems around it. I changed my major, I studied CS and Rust at the same time." -- Software engineer transitioning to cryptography research | ||
| > | ||
| > "I've been working with arbitrary subsidiaries of Bosch for the last 25 years. Always doing software development mostly in the Java space... two years ago I started peeking into the automotive sector. In that context it was a natural consequence to either start working with C++ (which I did not want to do) or take the opportunity to dive into the newly established Rust ecosystem." -- Senior software engineer working in automotive embedded systems |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| > "I've been working with arbitrary subsidiaries of Bosch for the last 25 years. Always doing software development mostly in the Java space... two years ago I started peeking into the automotive sector. In that context it was a natural consequence to either start working with C++ (which I did not want to do) or take the opportunity to dive into the newly established Rust ecosystem." -- Senior software engineer working in automotive embedded systems | |
| > "I've been working with arbitrary subsidiaries of [a multinational engineering and technology company] for the last 25 years. Always doing software development mostly in the Java space... two years ago I started peeking into the automotive sector. In that context it was a natural consequence to either start working with C++ (which I did not want to do) or take the opportunity to dive into the newly established Rust ecosystem." -- Senior software engineer working in automotive embedded systems |
| > | ||
| > "Instead of spaghetti code, you have spaghetti typing" -- Platform architect at automotive semiconductor company | ||
| > | ||
| > I find it more opaque, harder to get my head around it. The types describe not just the interface of the thing but also the lifetime and how you are accessing it, whether it's on the stack or the heap, there's a lot of stuff packed into them." -- Software engineer working on data science platforms |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing opening "
| > I find it more opaque, harder to get my head around it. The types describe not just the interface of the thing but also the lifetime and how you are accessing it, whether it's on the stack or the heap, there's a lot of stuff packed into them." -- Software engineer working on data science platforms | |
| > "I find it more opaque, harder to get my head around it. The types describe not just the interface of the thing but also the lifetime and how you are accessing it, whether it's on the stack or the heap, there's a lot of stuff packed into them." -- Software engineer working on data science platforms |
|
|
||
| > "I was in favor of not using async, because the error messages were so hard to deal with." -- Desktop application developer | ||
| > | ||
| > "The fact that there are still plenty of situations where you go *that library looks useful, I want to use that library* and then that immediately locks you into one of Tokyo or one of the other runtimes, and you're like *that's a bit disappointing because I was trying to write a library as well and now now I'm locked into a runtime*." -- Safety systems engineer working on functional safety for Linux |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably transcription typo
| > "The fact that there are still plenty of situations where you go *that library looks useful, I want to use that library* and then that immediately locks you into one of Tokyo or one of the other runtimes, and you're like *that's a bit disappointing because I was trying to write a library as well and now now I'm locked into a runtime*." -- Safety systems engineer working on functional safety for Linux | |
| > "The fact that there are still plenty of situations where you go *that library looks useful, I want to use that library* and then that immediately locks you into one of tokio-rs or one of the other runtimes, and you're like *that's a bit disappointing because I was trying to write a library as well and now now I'm locked into a runtime*." -- Safety systems engineer working on functional safety for Linux |
|
|
||
| ### Enumerate Rust's design goals and integrating them into our processes | ||
|
|
||
| We recommend creating an RFC that defines the goals we are shooting for as we work on Rust. The RFC should cover the experience of using Rust in total (language, tools, and libraries). This RFC could be authored by the user research team, though it's not clear who should accept it — perhaps the user research team itself, or perhaps the leadership council. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Spelling consistency, clarify it's currently proposal
| We recommend creating an RFC that defines the goals we are shooting for as we work on Rust. The RFC should cover the experience of using Rust in total (language, tools, and libraries). This RFC could be authored by the user research team, though it's not clear who should accept it — perhaps the user research team itself, or perhaps the leadership council. | |
| We recommend creating an RFC that defines the goals we are shooting for as we work on Rust. The RFC should cover the experience of using Rust in total (language, tools, and libraries). This RFC could be authored by the proposed User Research team, though it's not clear who should accept it — perhaps the User Research team itself, or perhaps the leadership council. |
| > "The fact that there are still plenty of situations where you go *that library looks useful, I want to use that library* and then that immediately locks you into one of Tokyo or one of the other runtimes, and you're like *that's a bit disappointing because I was trying to write a library as well and now now I'm locked into a runtime*." -- Safety systems engineer working on functional safety for Linux | ||
| > | ||
| > "We generally use Rust for services, and we use async a lot because a lot of libraries to interact with databases and other things are async. The times when we've had problems with this is like, um, unexplained high CPU usage, for example. The only really direct way to try to troubleshoot that or diagnose it is like, *OK, I'm going to attach GDB and I'm gonna try to see what all of the threads are doing*. GDB is -- I mean, this is not Rust's fault obviously -- but GDB is not a very easy to use tool, especially in a larger application. \[..\] And with async, it's, more difficult, because you don't see your code running, it's actually just sitting on the heap right now. Early on, I didn't actually realize that that was the case." -- Experienced Rust developer at a company using Rust and Python | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While there are a number of different ways of accomplishing async in-practice in the Rust ecosystem, safety-critical domains may impose unique requirements and opportunities:
"We're not sure how async will work out in the long-run [in Rust]. [..] A lot of our software is highly asynchronous and a lot of our demons in the AUTOSAR Adaptive Platform world are basically following a reactor pattern. [..] [C++14] doesn't really support these concepts, so some of this is lack of familiarity." -- Team lead at an automotive software company developing middleware in Rust
"If we want to make use of [async Rust] of course you need some runtime which is providing this with all the quality artifacts process artifacts [for ISO 26262]." -- Team lead at an automotive software company developing middleware in Rust
| > "The tutorial uses `Result<Box<dyn Error>>` -- but nobody else does. Everybody uses anyhow-result... I started off using the result thing but all the information I found has example code using anyhow. It was a bit of a mismatch and I didn't know what I should do." -- Software engineer working on data science platforms | ||
| > | ||
| > "There is no clear recorded consensus on which 3P crates to use. \[..\] Sometimes it's really not clear---which CBOR crate do you use?\[..\] It's not easy to see which crates are still actively maintained. \[..\] The fact that there are so many crates on crates.io makes that a little bit of a risk." -- Rust team from a large technology company | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As Rust gets its footing in domains which have a regulatory regime, like safety-critical, some wrinkles appear:
"[We use crates from crates.io] mainly for things in the beginning where we need to set up things fast proof of concept, but we try to track those dependencies very explicitly with care and also for the critical parts of the software try to get rid of it in the long run [due to automotive regulatory processes around ISO 26262]." -- Team lead at an automotive software company developing middleware in Rust
"I had experiences in the past where all of a sudden I was upgrading the compiler [that my toolchain and dependencies] didn't work anymore [for the Tier 3 target we're using]. [..] That's simply not acceptable. If you want to invest in some technology, you want to have a certain reliability. [..] Promoting it to a Tier Two target would at least as far as I know ensure that cross compiling to that target will always work with the 100 most used crates or whatever." -- A senior software engineer at a major Automaker
| The right solution here is not obvious. Expanding the standard library could cut off further experimentation; "blessing" crates carries risks of politics. But just because the right solution is difficult doesn't mean we should ignore the problem. Rust has a history of exploring creative solutions to old tradeoffs, and we should turn that energy to this problem as well. | ||
|
|
||
| Part of the solution is enabling better interop between libraries. This could come in the form of adding key interop traits (particulary for async) or by blessing standard building blocks (e.g., the `http` crate, which provides type definitions for HTTP libraries). Changes to coherence rules can also help, as the current rules do not permit a new interop trait to be introduced in the ecosystem and incrementally adopted. | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if this is too in-the-weeds, but it's a challenge I keep seeing in the safety-critical Rust community and I wanted to ideate here a bit.
| There may be some unique opportunities and challenges when it comes to domains with a regulatory regime, such as safety-critical. A forming trend in safety-critical appears to be companies which open source their software and their safety manuals, but not their safety-qualification or safety-certification documents as they use them as a revenue stream. It seems worthwhile exploring a model that could allow the opening up of these documents while compensating the companies doing the work. There are still some liability challenges which would need to be worked through, but such a step could help safety-critical Rust flourish. |

cc @rust-lang/project-vision-doc-2025
Rendered