Rust 2019 (12): Rust 2020 - Access All Areas

I’ve dished up a fair share of (hopefully insightfull), even if a bit rough criticism and ideas in the previous blog posts. I’d like to end on a high note, though.

Rust has tremendous successes to show, a lot of them coming from a pretty good footing when it comes to vision and purpose. The language has managed to convice people to convince people of its usability. Just as examples:

While some of these use cases are more or less advanced and one could argue that Rust still has a long way to go, we’re on the way already.

This comes with it’s share of challenges: how do you sell a language that is actually quite good in general, but has some specific benefits to bring to the table for certain environments?

Some predictions:

Diminishing returns of language changes

Rust 1.0 had serious usability constraints. Custom derives were missing, the lack of impl Trait needed to be worked around and everything above main() was unstable. A lot of early Rust versions unlocked broad applications for the language, by allowing people to finally use Rust stable to develop their software. While these times certainly aren’t over, I believe we are going to see a diminishing return from improving the language. The time of easy big wins is over. This isn’t terrible, Rust 2018 is a product to be proud about.

Libraries will be the big unlockers

Stable, usable libraries will continue to be the big unlockers. Forming clusters of libraries that work well together will be the next big challenge. Due to the pervasive nature of some of these libraries, some ecosystems will form. An example of such a library is Tokio: it’s hard to abstract over its use.

“Can I do this in Rust?” was a language question until recently, now it’s mostly a question of having the foundations laid out.

Systems construction will become a hot topic

Paraphrasing Ashley Williams:

Almost all programming is actually systems design.

I think the discourse will gradually shift from smaller details to larger questions like: * Whats a good component abstraction? * How do I inject components for testing? * How do I manage a 100000-line project? * What’s our basis for code sharing?

You can see an instance of this problem in the web framework world: while there’s a lot around, a unifying standards like WSGI or Rack has not emerged yet, making every framework an island.

2020 will be still be shaky, but that’s not bad

Rust has been surprisingly good at keeping people in the project over the recent years. This won’t go on forever. I expect people to leave - hopefully all in good faith - and some shakeups happening. I don’t believe this is a bad thing, the gaps can be filled.

All communities are always in flux. People leaving or changing their role is always as much a problem as an opportunity - others can take the space. I’m looking forward to a lot of transformation :).

Rust 2020 is successful

Rust will continue to grow in all areas. As mentioned above, it has found a good balance of features that is useful in broad contexts. We have picked up steam.

It’s easy to believe that this is all because of a plan. Instead, success is often a combination of luck, serendipity and the ability of our project to react to that growth. Rust will be used and adopted in new areas and we have only marginal control of which those will be. I have good faith that we will continue to be able to manage the growth instead of it taking full control of us.

Rust 2020 will access all areas.