
Results of Rust Survey 2016 – early draft for internal usage - progval
https://docs.google.com/document/d/1F6oELZcO_ejX2oVk20hmiBWd4lQugfFahn7OOOOyKsw
======
Argorak
Please note that this is a leak of an early draft for the rust community teams
internal usage and should be marked as such.

Do consider all numbers undiscussed and not cleaned up for flaws (we'll
document the cleanups and the reasonings).

\-- Florian // rust-community team

~~~
progval
Sorry, I saw it on IRC and didn't know it wasn't supposed to be public

~~~
Manishearth
We do most of our work in public, so it is public, just not intended for
distribution :)

(In the case of the survey the analysis itself was conducted privately,
because the data contains personally identifying information. But usually
things are done in the public.)

------
qznc
> By large margin, users are often grabbing vim to do their Rust work in

I would rather assume the reverse theory. Vim users are more likely to use new
languages since they don't expect complex IDE support. Or maybe just: Early
adopter and vim user correlates.

~~~
kevincox
To be fair. With YouCompleteMe and rust-racer support the tooling for Rust in
vim is solid.

~~~
qznc
That is only completion? IDEs provide more. Refactoring and Debugging, for
example.

(I'm a vimmer myself, but that is what I hear other people complain about)

~~~
Argorak
Sure, but you have to start somewhere.

With the internal representations of Rust still being changing almost weekly,
transformational tasks are a chore.

Debugging is shipped through Rust support in gdb and rust-gdb, so it is
coming.

That's the thing about Rust: there's always lots of stuff that is close. We
prefer solid over half-baked, and try not to advertise stuff in flight to
much.

------
willvarfar
The first diagram shows that 35.5% of respondents don't use, _or stopped
using_ , rust.

Its a shame they don't break this down between those who have never used it vs
those who have stopped using it.

At the end of the results there's talk about why those who don't use rust
don't use it, but again it doesn't separate out why people have never used it
vs why people have stopped using it.

I imagine it would be a very interesting to have had this split.

~~~
viraptor
I'd also like to see that. I'm in the "temporarily stopped using" camp. I love
it, I got to the level where I don't fight the language anymore, but facing
reality - I don't have a reason to use it. Everything I do at the moment, I
can finish faster in Python and I know it's enough. (sysadmin / deployment /
security tools)

The moment I need good performance and safety (new protocol server?), I'll
reach for Rust. But I don't have that many real problems where it's worth it.

~~~
EugeneOZ
I went further and now I write in Rust with the same speed as with PHP. And my
benefits: awesome system of errors handling, enums, match patterns, easy and
safe multithreading, MySQL shared prepared queries, and majority of bugs is
being catched by compiler (thanks to strict typing and a lot of checks in
compiler).

~~~
egeozcan
So you jumped from PHP to Rust? That is very interesting.

May I ask what you were doing in PHP that you do now in Rust?

~~~
EugeneOZ
REST API for Angular SPA and Ionic mobile apps.

Few months ago I wrote this article: [https://medium.com/@eugeniyoz/restful-
api-in-rust-impression...](https://medium.com/@eugeniyoz/restful-api-in-rust-
impressions-63250d611d15#.lwvaj7wce)

A lot of things between me and Rust has changed since then, but all changes
are positive :)

~~~
Argorak
Would you like to be featured on [https://www.rust-
lang.org/friends.html](https://www.rust-lang.org/friends.html) ? Feel free to
click the link on the bottom.

~~~
EugeneOZ
Thanks, our logo is there long time ago :)

~~~
Argorak
Ah, Rust is so big I'm losing track :).

------
eximius
Hmmm. That 20% of Rust users identify as part of an 'underrepresented group'
does not seem like poor number. I would naively guess that it is a larger
percentage than exists in the overall technical population. If that's correct,
then bravo Rust!

(If anyone knows about numbers along those lines, I'd love to hear about it.)

~~~
kushti
This part of survey is really weird and full of American racist bigotry. What
does "Person of color" mean considering people all around the globe? In Africa
or India whites are super-minorities so should they vote as "persons of
color"?

~~~
nutheracc
Yes, minority is geographical, yet somehow it's come to mean not white male, a
western view point. Not sure how female keeps getting classified as minority.

~~~
sanderjd
It just means underrepresented in the computing technology community.

------
jntrnr
Author here.

Hi all - thanks for the interest in the survey! The Rust community team is
still working the blog post (this link was to an early draft), and we're
looking forward to posting it when it's done.

~~~
epoch1970
I think this survey was very poorly publicized. As somebody who only dabbles
in Rust, this is the first I have heard of this survey. I am sure that others
are in the same boat as I am. We would have participated, but we learned about
it weeks after it closed!

Only now do I see the blog article, and a submission here
[[https://news.ycombinator.com/item?id=11661056](https://news.ycombinator.com/item?id=11661056)]
that got no traction. I don't remember seeing any sort of a notice on the main
Rust web site.

The fact that many participants were excluded, albeit unintentionally, makes
me really question the completeness, and hence the validity and usefulness, of
this survey data.

~~~
Argorak
This survey was publicized in all official channels including this week in
rust, mentioned in the 1 year of rust announcement, on Hacker News (we cannot
control traction), on the subreddit, the users forum, our Twitter account
(where it also got huge traction) and literally all our other venues. We got a
huge amount of replies.

I'm not sure how this is "poorly publicized".

~~~
epoch1970
Why was a link apparently not in the most obvious place, on the
[https://www.rust-lang.org/](https://www.rust-lang.org/) web site? A small
notice across the top would not have been disruptive, yet I and others would
have seen it.

~~~
kibwen
We put a great deal of effort into publicizing the survey, with a special
focus on public spaces and piggybacking on highly-visible announcements. The
website's front page sees less traffic than e.g. HN or the Rust subreddit, so
it's not hard to imagine why nobody considered putting it there. It certainly
wouldn't have hurt to have had it there, and I'm sure we'll consider putting
it there for next year's survey, but we're quite happy with the several
thousand respondents that we received.

------
panic
According to the survey, ~16% of people experience breakage with minor
upgrades. Isn't this a pretty serious violation of semver?

~~~
Manishearth
I believe (but cannot verify) that these breakages were due to libraries
breaking, especially libraries which evolve in lockstep with Rust internals
like aster.

The main reason I believe this is because each release is tested against the
entire ecosystem, and stability regressions are fixed. The only time that
breakages in the ecosystem are okay are during a soundness fix where the
broken library was doing something unsound.

~~~
mook
Doesn't the large portion of people using unstable libraries / things
depending on unstable internals mean that the versioning isn't covering a
large enough API? I feel like blaming the user isn't really going to help make
the ecosystem more stable.

(Context: I went through the tutorial at one point and got really fed up that
it wasn't possible to do it without involving crates because there wasn't any
random number generation in the standard library.)

I of course understand that you folks are still working hard on it and it'll
come in time; it's just that all other recent languages (Go, Ruby, Python,
heck even the . Net and JVM ones) come with a large and usable standard
library.

~~~
Manishearth
I wasn't talking about the stdlib, I was talking about crates. Rust tries to
keep its stdlib small so that crates can evolve on their own (and have
alternatives). I think that's a valid choice, just because needing to fetch a
crate for random numbers is different doesn't necessarily mean it is bad. It
also means that the versioning can be different -- the URL library can make
breaking changes if it wants with a major version bump, and that's okay.

Sometimes, a breaking change in the ecosystem is marked as a minor version
bump, and sometimes you need to coordinate versioning across crates. This
causes breaking changes for downstream users.

\------

Most of the actual libs with unstable rust dependencies out there are compiler
plugins. "Things depending on unstable internals" exist in many communities
and Rust is no different. That doesn't necessarily mean these internals should
be stabilized.

A big one is clippy, which I maintain. This lints code by hooking directly
into compiler APIs, which will never be stable to the extent clippy needs them
to be, since that would freeze compiler evolution. Similar tools for other
languages either reimplement a mini-parser+typechecker internally, or hook
directly into the compiler (gimple passes, etc). There is a solution being
worked on for clippy specifically. For tooling/IDEs in general, the Rust
compiler will eventually get an "oracle" API that can be queried for type
information and whatnot (which probably won't have enough info for clippy to
work, but will have enough for general IDE stuff)

Another big one is serde, the community serialization library. There is an
official one that works pretty well, but serde is better. However, the
serialization codegen is done by a plugin. It can also be done with a build
script on stable, but this is a bit more unwieldy. Some libraries use the
plugin instead of the build script, and often break.

There is work going on for a better procedural macro/metaprogramming interface
too.

That is mostly the extent of things which depend on Rust unstable internals
and are used widely. There are a few more things, but they are less used.

~~~
steveklabnik

      > Sometimes, a breaking change in the ecosystem is marked as a minor version bump, 
    

... because it's still a young ecosystem, and a lot of packages aren't at 1.0
yet, so this is valid per semver.

~~~
dbaupp
To be clear, you're saying moving from 0.x.y to 0.(x+1).z is valid to be a
breaking change, right?

(For other readers, Rust/Cargo uses a---more useful---variant of SemVer where
an upgrade from one version to another from assumed to work if the most-
significant non-zero numbers are identical, whereas SemVer says that any
version number change pre-1.0 could be a breaking change, even 0.1.0 to
0.1.1.)

~~~
steveklabnik
Semver says that for x.y.z, x == 0 means no guarantees about anything. Cargo
currently treats x == 0 as the same as x == 1.

I disagree that this is more useful, personally, for exactly this reason.

~~~
dbaupp
Hm, I'm interested to hear why you think 0.1.0 -> 0.1.1 being considered just
as dangerous as 0.1.0 -> 0.2.0 is more useful than treating 0.1.0 -> 0.1.1 as
"semver-safe" and having only 0.1.0 -> 0.2.0 be breaking.

------
desdiv
48.8% of Rust users use nightly, 23 percentage points among them use both
stable and nightly, which means 25.8% of Rust users use _only_ nightly.

Is it just me or does that seem exceedingly high? I'm guessing that a good
deal of them are Rust language/core lib developers?

~~~
progval
I personnally use nightly without being a core dev, because Rust is not
available in Debian Stable so I just compile it from Git.

------
cesarb
This link is asking for a login. Is there anywhere one can read the results
without creating an account?

~~~
Manishearth
This was a draft blog post intended for review which was posted on HN, and has
been made private for now.

------
EvgeniyZh
Wow, ~180 people with projects more than 100000 lines.

~~~
krasin
All / most of them are likely Servo contributors.

Servo: [https://servo.org/](https://servo.org/)

~~~
cmrx64
Or rustc/libstd.

~~~
timlyo
I think redox might be larger as well

[http://www.redox-os.org/](http://www.redox-os.org/)

------
lbn
How come there are as many women (47) answering this survey as trans people?
Is there anything in the Rust community that is hostile to women but not trans
people?

In fact trans people appear to be _over-represented_ in this survey as 1.7% of
people in it were trans compared to optimistic 0.3% of the US being
transgender [0]

[0] [https://www.quora.com/What-percentage-of-the-US-
population-i...](https://www.quora.com/What-percentage-of-the-US-population-
identify-as-transgender)

~~~
viraptor
Hostile may be jumping to conclusions. It's a small number, and it's a self-
selected sample. Small change in any of the numbers will result in big ratio
change. Unless someone actually claims hostile behaviour, why expect it?

Either way, the trans population is very much overrepresented in the survey.
You took one of the sources from the link which claims 0.3%. The next source
which I would trust (DSM-5 stats) claims 0.005-0.014% natal male and
0.002-0.003% natal female for gender dysphoria.

~~~
lbn
The reason I said hostile is that in most discussions on Hacker News and
Reddit a lot of people argue that the only reason women are so under-
represented in tech is that all the guys are very hostile to women. This
survey goes against that. For some reason they refuse to believe that some
things are more interesting to women than men and vice versa.

~~~
viraptor
> For some reason they refuse to believe that some things are more interesting
> to women than men and vice versa.

It could be that this is just as wrong as the "only hostility is the problem".
Not everybody sees the same barriers. Not everyone faces the same challenges.
We don't even know if/what's more interesting, because we're bombarded with
ideas of what should be more interesting since very young age. Software
engineers I know successfully raise girl geeks for example.

------
akavel
To author: would it be possible to improve the bar graphs, so that they were
sorted by value, not by label? I believe it would make reading them much
easier, and make them more informative [or, "deobfuscate" them]. (I mean those
like "editors", etc., not "how long I know Rust" where the labels introduce
sensible order.)

------
nutheracc
The link is now locked. Can we replace it with something interesting? Or a
cached copy?

~~~
steveklabnik
There will be some kind of actual communication of this data at some point,
quite possibly on the official Rust blog. This was a rough draft of the post
that was leaked.

~~~
logingone
Yes, put something interesting in its place please, rust-related.

------
dang
We've closed this thread to new accounts because new accounts have taken it
into the weeds of angry troll war.

------
themihai
Is it just me or the doc requires permission?

~~~
steveklabnik
[https://news.ycombinator.com/item?id=11960483](https://news.ycombinator.com/item?id=11960483)

