Kelseydevelopment / accessibility / advocacy

Rust in 2018, another point of view

I wanted to write a post laying down my thoughts about Rust for a long time, and it seems like the perfect time to do so. Most of the things I've said have been touched upon recently, and probably more aptly, but here it is nonetheless!

I'll start by a small shout-out to an unsung hero of 2017, @guillaumegomez! He did the gruntwork of improving the documentation over the year, which probably helped a lot of newcomers, and was sorely missing in 2017 acknowledgements.

I come from a C background, though these days I mostly dabble in python/erlang, that probably taints my experience with the language. I was able to bring rust to my previous company, but I definitely wasn't the only one pushing for it.

I've had highs and lows with the language, with the last high being Ashley's nomination, and the last low the backlash that followed, and really, I admire her strength and courage!

What I like in Rust

Everyone who likes the language enjoys it for different reasons, those are mine:

  • Strong compile-time assurances allows me to focus on my domain problem most of the time
  • Trait-based abstractions are powerful and expressive
  • The community is somewhat focused on making everyone welcome

What I wish Rust had

I am aware that some of these are very personal.

Better tooling around the offline scenario

My new job is on a segregated network, and cargo/rustup really don't like that. It's a bit frustrating that the network is the preferred source of truth by default, and there's no easy way to spin our own crate index. Not being the one who has to deal with that means someone who doesn't need it will take that burden on top of their regular obligations: I can't push forward with that unless it becomes dead easy.

cargo could use an extra layer of security

Some brave people are busy on having our own tuf implementation, that's great! Hopefully we'll see that effort bear fruit this year, even if that didn't move much in the last few months.

Syntax improvements

impl Trait in trait definition and Associated Type Constructors. They're the language items that I do miss regularly. It's definitely in the official plans, but not in the short term. And they're not easy additions from what I've seen.

A better out-of-the-box testing experience

Don't get me wrong, what we have today is a great foundation, but it's quite barebones. Code coverage is not there, benchmarks are still unstable, and we could use more testing helpers. You can definitely use the power of macros for the last item, but I tend to dislike macros for arbitrary and probably no good reasons.

Non-lexical lifetimes

This is the stuff I don't really want as much, thanks to survivor bias, but really has the biggest impact for newcomers, making the overall first experience less daunting. I like fighting with the compiler because I know it's pointing out my mistakes, but that can be very intimidating coming from less demanding languages.

Community events outside of the Europe and the USAs

I didn't realise how important that was before moving to New Zealand. No meetup, no big event to look forward to means that people don't hear about it as often, which is a shame: You can't pick what you don't know!

But most of all, what I really wish for, is to see more women being empowered in the community!