Why I like Rust - and why it's annoying

Published: January 22, 2021   |   Read time:

Tagged:

Image Attribution:

Rust is a popular and growing language. It has been on my radar for about a year, now, and I have been developing a few applications in it in my spare time.

  • bio-jtools-rs is my Swiss army knife for managing DNA sequencing datasets
  • quill is a tool for tracking financial statements
  • pad-path is a CLI for managing the PATH environment variable

There are many reasons to like Rust, as many developers noted in StackOverflow’s 2019 Developer Survey. There is one reason that I like Rust that I don’t see discussed much, and I think it is related to why many developers don’t like the “Rust community” at large. Because of this, I think it’s worth discussing.

Why I like Rust

Rust is the first language, in a very long time, that can rival C/C++ in nearly all the places where C/C++ excels. This new language, coupled with more modern thoughts on software development and UX, has inspired scores of developers to rethink many old paradigms in computing. This can most easily be seen in the development of CLI tools that are essentially rewrites of old Unix coreutils, like ls (e.g. exa and lsd), cat (e.g. bat), and grep (e.g. ripgrep). I like Rust because of the renewed vigor it has inspired to make software better, including all the tools that people use every day and don’t think about much.

Why it’s annoying

This renewed vigor can be a double-edged sword, however. It has caused some developers to take the mantra of “let’s rewrite everything in Rust”, much to the annoyance of maintainers of old software projects written in other languages. The people advocating this position often only have the narrow scope of “Rust is a safer language, we should use it instead”. They don’t approach the situation with the perspective of “what do we stand to gain from, and what are the costs that come with, switching to Rust?”.

For single-developer projects who are starting something new, sure, knock yourself out. That’s what I did with my projects above. I had a problem, I wanted to see if I could use Rust to solve it, I solved it, and I learned some things along the way.

But that problem scope is not the same as the scope for a tool used by billions of devices, like curl. Just ask web developers whether they like switching to the newest hot JS framework every time they read an article about it on HackerNews. This proselytizing of Rust frustrates maintainers, leads to a distrust of the developers who advocate for Rust, and over time leaves a bad taste in everyone’s mouth about the language itself.

This blog post about whether Rust might be useful for curl is great because it takes this latter approach. It addresses one of the many questions one needs to answer when considering a change in development language. Namely, “what problems would using Rust solve?”. It makes the argument that approximately half of all security bugs in curl could have been avoided. That’s a big deal and is a fantastic point in favour of using Rust. But again, it’s not the only thing to consider if you want to add Rust to curl’s codebase.

Conclusion

In summary, I love the thoughtful redesigns and brilliant new software that the Rust language has spurred. But that excitement can be taken too far, and being bullish on Rust may hurt its adoption in the long run. Ultimately, choosing a language is a design decision by developers and all decisions will have pros and cons. Those reasons should be considered carefully. Bring your excitement with you, but leave your zealotry at the door.