I just wanted to ask this again, as I think it may have been buried in my comment when in fact it’s my main question. I don’t want to inject any more heat into the Issues where enough is already trying to be coordinated, but I really want to understand the specific reasons this was decided as it was.
Here’s one take: I think it’s reasonable to say there’s no ‘one way to Rust’, but then does that mean there’s one sample per area of interest? Maybe we just chose an arbitrary code sample, but what are we trying to achieve with it at that point - show syntax/a tiny subset of features?
The fireflower problem proposes quite a different perspective - thinking about the ‘what’ rather than the ‘how’, hence the prominent links to the different areas. Those pages then do have code samples where appropriate (e.g. CLI and networking).
Personal note 1: I kinda like seeing language syntax on webpages. But I far more like the idea of seeing an interesting ‘what’ and being taken into a funnel that shows code relevant to me. (and if I’m really honest with myself, how important is it to see language syntax immediately immediately?)
Personal note 2: I meet a lot of highly technical and competent people who have either never heard of Rust, or say “seems kinda cool but nobody uses it right?” - when I talk about Yelp, Dropbox etc, they’re very surprised! A lot of these people are in technical management, which often means a) they don’t code as much as when they were developers and b) they have influence over programming language usage in a company. The new website clearly outlines what Rust is good for, and emphasises it’s a language people are taking seriously, both important factors for this kind of person that the previous website didn’t touch on at all.
There are two comments above by @noahway and @mmstick that are “temporarily hidden” and can be viewed by clicking on them. Is that an automatic reaction of the system when too many people click the report button or did a moderator hide them?
This post was flagged by the community and is temporarily hidden.
I believe it’s the first one, based on the “flagged by the community” wording. That being said, I do think the flagging is unwarranted either way: it is certainly the case that all criticism I’ve seen of the new “systems programmer” slogan has been perfectly civil and largely focused on the general concern that this is simply too broad of a statement that can be interpreted in too many ways, and that may actually run the risk of driving away newcomers in some cases in the event that what they personally take it to mean is just not what they’re looking for out of a programming language.
This is how I feel about it. Truth be told, most programmers care very little about being a systems programmer. They have a job to do, and they want to use a tool that makes their job easier. They don’t mind if the language they are using has a runtime garbage collector or interpreter. Systems programming often has a negative connotation that you’ll need to spend a lot of effort to write application logic in a systems language. This has always been the case before Rust was around.
Though I also understand the issue about the emphasis on “everyone” in the slogan as well. Not everyone has the time, patience, and mindset to be a programmer, let alone a systems programmer. Just as not everyone can be a teacher, writer, lawyer, doctor, police officer, film director, animator, etc. Different people have different strengths, weaknesses, and interests. They also have different personal, economical, and time constraints. It’s a bit misleading to claim that everyone can be one.
Everyone can try to be a systems programmer, but you’ll only end up disheartening and insulting those who struggle to live up to the expectation, as they’ll feel like they aren’t part of the “everyone” group, and thus become “no one”. I’ve actually seen it happen myself – positively telling someone that they can do something if they try can easily backfire when they don’t live up to the expectation that you set for them. You have to be careful about the promises you give to others.
Rust offers much more than making systems programming easier. It makes solving complex problems easier. It guarantees a high bar of quality and reliability in the final product, and has the syntax and type-level features to make extending or refactoring an application simple.
I’d like to make a call to moderators here. Could you unhide the hidden posts about the “toxic masculinity” and “brogrammer” questions, or is it technically impossible?
I think these are among the most on-topic posts on this thread, given we are not here to discuss actual technical issues (which should be brought to the issue tracker to not be forgotten), but to discuss the public relations issues that arose from it.
As such, I believe the discussion should concentrate (in a non-emotional way as far as possible) around posts like these posts that have been hidden.
I agree form could have been improved, but the actual content is something that was missing in this thread, if we/you want to find a way to avoid alienating a significant part of the community next time around.
I find it really fascinating (not in a positive way) how much this blew up, especially since it’s been my observation that the Rust community usually succeeds at being nice to one another.
Since the question came up what @withoutboats meant on Twitter by “toxic masculinity”, I’ll try to explain my understanding of what that meant in this context. Disclaimer: I cannot read minds, and, since it’s probably relevant to mention that in this context, I’m male and rather new to systems programming.
It was kind of hard to find an exact definition of “toxic masculinity” that is broad enough to be applicable to the current situation. I did find this one, where this sentence stuck out:
Applied to our current discussion around the proposed new slogan, this can be interpreted as such:
- On the one hand, we have the core team, i.e. the people who also worked on the new design. Their emphasis is (and has been for a long time) that Rust is about empowerment (look for example at the very beginning of the book). So, who needs to be empowered by Rust? People who are not yet confident in their ability to write systems level code. This is not about competence/intelligence, but about emotion and feelings. The core team has several people with backgrounds in fields other than traditional C/C++ systems programming, and they’ve obviously succeeded at making a great systems programming language. I think it’s understandable they want to get the message out that systems programming is not something to be afraid of.
- On the other hand, we have some community members who may consider themselves veteran systems programmers, who’ve been fine using C/C++ for years. These people feel confident already, they may appreciate Rust as a useful tool and more modern programming language than those they used before. But these people do not feel empowered because they already felt powerful/strong before. They don’t see any problem with the status quo, and to them, “being more inclusive”, inherently carries some connotation like “inviting lots of incompetent people” (I’m intentionally phrasing this strongly for the sake of clarity, please don’t take offence).
So, when the second group criticizes the first (or the website they made), the message could have come across as “That emotional appeal is for losers, why don’t we just continue being elitist about systems programming?” (←this would probably fall under the above definition of “toxic masculinity”), when it may originally have been meant more like “I’ve no idea why you would change the slogan, the new one contains no information i need, while the old one did” (which is not intended to be malicious and comes from a perspective that does not understand the problem the new slogan tries to tackle).
In case i’m correct with my interpretation, i’d like to note two things
- The twitter posts linked above by @noahway are not helpful in improving the discussion, and neither is flagging the comments in this thread. That just creates more bad feelings and does not contribute to mutual understanding.
- We really should show more appreciation to the people who put in work with the new homepage, it’s easy to criticize and those people ended up in something bordering a shitstorm after lots of work.
If you’ve read this far, please leave a comment/PM on whether this made any sense to you.
If nothing else, I do think the twitter comments in question are at best highly exaggerated and at worst patently false. If anyone is aware of clear evidence to support that angle I’d be interested in seeing it, as I followed all three major threads about the new website as they were going on and definitely don’t recall anything of that nature being clearly stated/expressed.
The flipside of this: “Veteran systems programmers” are also part of the audience who will be visiting the website, and we want to attract them to the language too. If you consider yourself a systems programmer already, the blurb “[Rust] empowers anyone to become a systems programmer” makes it seem like Rust is just a set of training wheels to make it easier for newbies to do what you’re already doing. In reality, Rust has many advantages even for veteran programmers – indeed, perhaps especially for them, since they’re the ones that would otherwise be using memory unsafe languages like C++.
Of course, any choice of wording has downsides. The above issue could be rectified by just adding more text about Rust’s advantages for veteran programmers, but that would compromise brevity, which is a real virtue. And the current text makes the opposite tradeoff:
Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.
I think the Fire Mario analogy is missing the point. The current text seems designed to sell Rust to existing systems programmers, at the cost of relevance for other readers. For systems programmers, segfaults and race conditions are familiar bugbears, and the benefit of removing them is self-explanatory. Other languages are able to avoid them but only by sacrificing performance; hence “runs blazingly fast” completes the pitch by stating why Rust is different.
By sticking to the facts, this text is also capable of selling Rust to non-systems programmers to some extent. This is in contrast to the new text, which has nothing at all to offer to existing systems programmers – i.e. even if I don’t react negatively to “anyone can be a systems programmer”, it still doesn’t give me any reason why I should be interested in Rust. Arguably the current version’s broader reach is desirable. But it’s still biased toward systems programmers. I think a similar ‘checklist’ blurb designed for non-systems programmers would make similar points but in different ways, e.g.:
- Instead of “guarantees thread safety”, maybe “safe, fast paralleism” (because a lot of non-systems languages don’t support threads at all, or have a GIL)
- Instead of “runs blazingly fast”, maybe “provides the performance of C without the unsafety”, or “the performance of native code” (because non-systems languages generally aren’t), etc.
It might also focus on some different points where Rust provides advantages over non-systems languages but not over C/C++, potentially including some of:
- Low memory footprint
- Predictable performance
- No GC (I’m actually surprised the current blurb doesn’t mention GC, since “safety without GC” feels like Rust’s most unique selling point… but then, it makes sense to focus on the safety part if you assume the starting point is a language that already lacks GC.)
- Can be used for IoT / embedded
[edited to elaborate a bit]
One thing I might also note about it is: as far as I can tell, the whole concept and associated analogy is more often made fun of overall than it is thoughtfully considered for what it’s directly intended to mean. What that says about culture/attitudes/the social climate/e.t.c is up in the air, but I do think it’s worth maybe taking a bit more time to generally think about “how will real people in real life on the internet receive XYZ new concept we’re about to roll out?”
As it stands now Rust has in fact become the basis of several memes that are centered on things probably originally meant to be taken totally seriously (which is very much unprecedented for any other programming language I’m aware of.)
It might be unfortunate that it’s necessary, but it’s a real issue that I do not imagine will get better on its own over time if not actively steered away from.
@mmmmib Thanks a ton for that comment! It gets right to the heart of what’s frustrated me about this discussion.
As someone who is probably more in the second camp, I like a lot of the new site and I just wish it could keep the more detailed information of the original. So I found these issues (I didn’t even have to file one myself!): https://github.com/rust-lang/beta.rust-lang.org/issues/445 and https://github.com/rust-lang/beta.rust-lang.org/issues/351.
I get what you mean but… it’s not quite the same thing I don’t think. All of what you’re referring to is very general stuff evolved over decades in some cases. The things I was talking about on the other hand are quite specific.
I think it’s something worth keeping in mind, in any case.
I just exposed the new website to some of my (non rust programmers) colleagues, mostly Android/iOS developers.
The general impression was good but:
They would see a code snippet at the top (better if runnable).
“The programming language that empowers everyone to become a systems programmer” has little meaning to most of them. The term “general purpose” maybe is better.
[I agree that “systems programming language” is a bit too technical for most people]
The first thing they want to know is:
- is rust a compiled o interpreted language? does it need a runtime ?
- garbage collector?
- static or dynamic types?
- what the language is good for?
So maybe a better phrasing would be something like:
“Rust is a [general purpose] programming language good for X, Y, Z, etc… .
It has no garbage collection, produces native executables, …, strong type system, …”
Just my 2c
I think @eulerdisk has a very nice list above.
I’ve heard this come up often when people ask about Rust. Not having to rely on a runtime puts Rust into a whole new category that I think is important to bring attention to and really sets it apart from other new languages like Go and Kotlin.
I think this is a good point. The current slogan could be copy-pasted to the Go homepage while being just as correct there; it would be great to have the slogan emphasize some difference.
This post was flagged by the community and is temporarily hidden.
I guess I wasn’t clear in my message there…
The language used on the beta website leans towards marketing and buzzwords, and in some senses it might be factually a stretch to apply. I didn’t mean it as another rust vs go rant, but more like “if you advertise something, be crystal clear about what you do”.