Why not to use Rust
In the last months, I’ve seen a lot of evangelism around Rust, much of it apparently from the fringes of our community. Some is good and well and reflects the stance I’ve seen from the official teams. On the other hand, there are some instances of really bad proselytizing. Liz Baillie’s RustFest 2017 Talk has a really funny section on it (around 7:33, but do yourself a favor and watch the whole thing if you haven’t already).
To improve communications with those who have yet to see the Rust light, here’s a list of points that can be valid reasons for folks to hold back on learning it. If you get any of the points of this list, the folks mentioning them are aware of their situation and may be better off without using Rust for now.
- Many teams or even companies dictate the use of programming language. Trying to push a language that has a short-ish (but wildly successful) track record can be a non-starter
- Rust isn’t available on all target operating systems or hardware platforms
- Even where it is available, the installation servers may not be trusted by their organization
- They or their colleagues may not be inclined to learn Rust. Forcing it on them will sour them to the already steep learning curve
- Rust has progressed far, but there is still a lot to do. For some things, C or Fortran may still be faster, whereas other languages may have more library or IDE support
- The project, team or company may already have substantial investment in another language (both in code and know-how, as redditor mockery0 aptly reminds me), so switching to Rust may obsolete some of this
That last point explains much of the pushback we see from C++ programmers. C++ is a huge strange beast and learning it is a heck of an investment. Asking those who’ve done it to deprecate their knowledge (especially if they earn their livelyhood armed with that knowledge) isn’t going to win friends (apart from that, it appears that learning Rust requires to some extent un-learning C++. We need better onramps for C++ programmers).
Remember, Rust is a currently very good compromise between performance, productivity and safety. But it’s there for a goal and that is not to take over the world: The goal is to raise the safety level of all software – written in Rust or not. The end game for Rust is to be replaced – hopefully – with something even better. I sure hope I live to see that thing.