Personally I will not ever write anything in C again if I can avoid it, i’ll choose rust instead (and I know C way better than rust right now).
If I was maintaining a C project, i’d probably start breaking it out into modules and writing new/changed modules in rust and exposing them via its C API features.
So, I drink the rust kool-aid.
However, I do think it is douchey to go around to random projects that you don’t contribute to and tell them they should be in rust. If you like rust, write your own projects in it/move the projects you work on to it.
20 years ago, open source advocates were advised never to start a post with “we should”, when it’s more appropriate to write “how do I…”
And nowhere is it more appropriate than with Rust. Learning Rust is hard. So if you want something re-written in Rust, doing it yourself not only benefits the community, it benefits your own skill set.
And I already drank this kool aid. My one un-neglected Github repo is an auto-RIIR.
Did this post offend you?
Nothing more boring than people that spend their time fishing for outrage. And beyond this embarrassing perspective the article assumes as a whole, the content is nothing less than the absolute bottom of the barrel in the mind-numbing muck of complaining about anecdotal memory safety advocacy straw men, while contributing absolutely nothing of value to the conversation. Where’s the flag for “waste of time”? “Off-topic” is good enough, I guess.
Only thing amusing about this post is author doesn’t easily spot what’s going on. The Rust site itself says they have employees dedicated to outreach. They or some subset of them get people wanting to spread the word. How people chase fads takes over from there. My favorite term for it is Rust Evangelism Strikeforce.
So, I hate the term Rust Evangelism Strikeforce more and more. I used to laugh about it in the beginning, but people spread it like it is a thing. Here’s things the rust community team does:
Here’s the things we speak about weekly:
Our website describes a little of what we do:
The meetings are open, there’s a weekly agenda issue with a link to join, feel free to read in. We’re not some kind of secret backchannel group and the irc channel predates the team (I founded it). I’m happy that the Rust project recognises our work by making us and official team.
We are all volunteers. Some may work for Mozilla.
This is much in contrast to Go, by the way, which taps into Googles evangelism employees. No one cares there. (as one should, evangelism is perfectly fine)
Here’s a not so short list of things we do:
make sure there’s a calendar of all upcoming meetups for our weekly newsletter
read URLO and lobste.rs and similar for feedback and turn that into issues
come up with creative solutions to worldwide community issues, including marketing, funding, growth
yes, marketing is an issue, but it’s more like “what do we have to talk about next on our blog”
edunham creates postcards to hand out at conferences with pointers to important websites https://github.com/rust-community/resources/blob/gh-pages/rust_printed-card.pdf
for example, we help projects if they need something promoted. This week was rust-bio that is currently searching to interview people who use it for a grant application. One of us picks that up and promotes it - we’re better at that then a small library maintainer.
organise meetings of the core team with users, production and just topical community members alike
identify community-wide problems and discuss them
we find, create and curate learning material. For example, I open sourced the course I give on Rust on my company time.
set up and groom our youtube channel
consult and help conference and meetup organisers
run conferences (RustFest and Rust Belt Rust are run by community team members as hobbies, I aim for a 6-month cycle for RustFest). Note that these conferences are all larger financial operations, for example, we want to make payment of cost for all speakers standard, while retaining low prices (~100 Euro for two days, with full catering). RustFest had unusually high accessibility standards. Cheap conferences replace money by work, which means we had to encourage a volunteer team.
Come up with meetup concepts, for example, we promote learners groups (Hack & Learns) heavily insteag of giving talks
run a catch-all email-address (got a question about Rust? Don’t know where to post it? email@example.com will help you).
a surprisingly large part is what /u/Manishearth describes as “switchboard”. For example, meetup organisers ask us for local speakers and we happen to know one. We put them in touch. Sounds easy as an action, but you really need to have a large network for that and see the question.
We obviously give talks around the world around how we like Rust. These talks talk purely about Rust. I pay these trips out of my own pocket, currently. Mozilla employees obviously get travel funding.
Obviously we recommend people to try Rust, but that more takes the way of pointing someone interested in something new the way to our material. We also usually recommend other options.
Do keep inventory of things we need at conferences.
We are also there to criticise the Rust project, I like that even though criticism is handled well internally. (This mostly has to do with internal details of the project and sometimes Mozilla, so I won’t go into detail here. It’s not terribly interesting, needs a lot of context, impacts only a handful of people and is resolved).
We do even consult other projects (non-Rust) on how to solve things.
That’s a truckload of work, seriously, we cannot invest time into berating other people on their choice of programming language. We do believe memory-unsafety should slowly become a thing of the past, but our work is a constant attempt to spread that idea. And berating people and being condescending is the most ineffective thing there is at that.
The difference between Rust and other PL communities is that community work is front and center. This has drawn in a lot of people that have a lot of experience. Before Rust, I was active in the Ruby community since 2005, ran bulletin boards, meetups, the eurucamp conferences and served on the board of a European Ruby Non-Profit. Carol, who runs Rust Belt Rust, used to run Steelcity Ruby (and many thing I don’t have in my head). She was also very active in that community. We can still draw from that network.
This shows. We are a highly effective encouraging machine, because we know what we are doing. And we do that stuff since before Rust 1.0. We are efficient, because we don’t have much time. But for example, we fostered a community where translation is a work people like to do, because we told people this is something very appreciated and important in our community. Lot’s of this work is more encouraging people that “yes, beginners are important parts of the doc-writing process” then anything else.
There’s high interest in Rust. When podcasts run an episode on us, it’s the most downloaded episode for the year. Even the mediocre one. That’s a blessing and a curse, because we have to handle that massive growth.
And yes, excited people sometimes get overexcited. When I see it, I try to curb their enthusiasm. But the world has 38 timezones and we now have a huge community, so I am happy to say sorry to anyone who has been subject to unfounded criticism of the “rewrite it in Rust” kind.
But let me tell you what: the thing goes both ways. I’ll tell you two stories:
Things like that are not unusual. Things like that happened in the Ruby world all the time, too.
I’m not complaining. That happens when you run one of the first projects that is a serious contender to a very old technology. Far be it from me to criticise “the C community” for overzealous defenders or give them catchy names.
It annoys me that some jerk with a website where he rant about anything, everyone and calls them mentally ill just comes up with a ranty, catchy term for all this work and just puts a lighter to it. It annoys me even more that people spread it like it is a real thing. He’s a lazy jerk, getting annoyed at how much work we invest there and the only thing he did, was coming up with a name for it and hand it to people spreading it all over.
Be jealous, but we found ways to be effective at spreading knowledge and excitement about our thing, and thats not a bad thing. I’d prefer (and happily help if I find the time) if other projects just went and had a look and reused what they like. It’s open source, so is our community approach.
Great reply. Appreciate the incredible detail on your community efforts as it’s probably worth imitating in other projects. The two of you responding in detail make it appear to be a side effect of sheer popularity of the language the engaging community created. That we couldnt blame you for.
Btw, the Rust Evangelism Strike Force and meme it’s based on usually refers to the people that were consistently showing up on blogs causing headaches. It may or may not refer to people on Rust team depending on whose using. My usage is about the evangelists on forums which your team seems to oppose.
The Rust site itself says they have employees dedicated to outreach.
This is false.
There are Rust team members (a mix of volunteers and employees) who work on outreach, on the community team.
I am an employee of Mozilla who is also on the community team. Being on the community team is not part of my job and is something I do in my spare time. Community team work does not involve commenting on random sites; it’s a higher level thing. There certainly aren’t “dedicated employees” for outreach, though some folks do more outreach than others.
I have never seen any of the community team members (or more broadly, community members whose usernames I recognize) asking people to rewrite things in Rust. The rust community has a pretty strict rule of “no zealotry” (for any language, not just Rust), so just saying “have you considered rewriting it in Rust” is a big no-no. You do get comments like “Rust would have prevented this”, but that’s not RIIR, and none of the community team folks do this.
If someone does want to RIIR we do help; we’ve often scheduled calls with folks considering Rust and discussed their needs. Even there, we’re pretty mild on pushing Rust; I was recently involved in one of these discussions and I did mention that language Y may also work for them based on their use cases. These calls are more of to help them evaluate the language and for us to get a better idea of needs so that we can prioritize.
If someone does ask about Rust in a comment thread you’ll often see the “evangelists”/community team members answering. That’s … not evangelism.
What the author is talking of is a couple of isolated incidents, not some campaign cooked up by the Rust community.
Please don’t spread misinformation like this.
Thanks for pointing this out. I’ve had good experiences when interacting directly with the rust community. Would I be correct in assuming that a link to that topic would be topical if I were to come across said pushy commenters?
I think it would.
I’m actually surprised it’s not in the code of conduct. Then again, not all rules need to be codified :)
Certainly on the subreddit the “no zealotry” rule that is applied reasonably often.
Appreciate you stating that and linking to evidence of it being an official policy. That’s a good, data point to keep in mind as the evangelists show up.Especially being able to ask them to chill out with a link to Rust team asking same thing. I’ll keep it.
Do you have examples of this “evangelism” you’re talking about? It’s hard to get an idea of what exactly you’re talking about. I haven’t seen much RIIR “evangelism” around, but folks keep saying it exists, so I’m wondering if I’m just missing things. Would be great to get a better feel of the situation, and a better idea of what other folks find problematic.
(Probably better to PM it since this is going off topic)
I didn’t keep any links. I just countered or ignored it as I saw it. Both RIIR and “Rust would’ve stopped it” have gone down significanly on places like HN, though. That there’s less of it might be why there’s fewer examples to go around. I can’t pull one off top of my head that was recent.
I really, really doubt the outreach team is taking part in this. I should know, because my one interaction with Rust outreach people involved them feeding me.
I appreciate you weight in but it’s an anecdote. How they acted around you might be the norm. It might be the opposite of the norm. It can’t tell us anything in general case. I’m neutral about how much they’re involved right now since I have so little data. I’m not sure if it’s a direct or indirect effect of their community-building efforts. Like the author, I mostly see the results as they hit Hacker News, etc. I took the time to look at their teams to see if anyone was there to do outreach or evangelism on online media: yes w/ several promoting Rust on sites like Hacker News & Reddit. They also have smart tactics to maximize participation rate & excitement of participants vs typical, language work. So, it looks like a combo of push and pull of the ideas but I can’t see anything more specific without spending way too much time on discussion forums. Well, for stuff I don’t use. ;)
It’s not super amusing, and that’s perhaps the point. A lot of folks don’t seem to want to acknowledge that this behavior is really annoying and giving Rust a bad name.
And unlike Go, it doesn’t have bajillions of dollars to push it through.
This whole thing is frustrating, because the majority of the Rust community tries really hard to not be like this. But hangers on and enthusiastic newcomers go and do it anyway, and it makes Rust and the Rust community look bad. I really don’t know what the solution would be, if there is one. This may just be where Rust is in the hype cycle.
You need to make a language “better” than rust. For a short while, all the same people were demanding everything be rewritten in go, but then they switched to rust.
Like, Safe-C… but compatible with things other than Windows.
I recommend Beb. It’s a solid, mature, safety-oriented language I made up just now. Check out its compiler:
tr 'a-zA-Z' 'za-yZA-Y' < $1.bec > $1.adb
The gnatmake part sounds promising. :)
I think it will take a programming generation to for any language to be considered “better” than rust. Mostly because rust is at the edge of what PL hipsters consider in vogue, and it will take a while to find something that goes beyond what rust does in this space while still being considered “practical”. (Not to say that rust isn’t, but that Haskell/Idris and the like are unlikely to reach much larger popularity than they already have).
I’m personally stocking up on popcorn to watch the Rust Evengelism Strikeforce(edit: Which isn’t a core part of the Rust community). (Even as I consider using Rust in the future).
Not to say that rust isn’t, but that Haskell/Idris and the like are unlikely to reach much larger popularity than they already have.
Fun fact: I wanted to be involved on the community side of things for Haskell at some point, there’s just not a point of contact. Maybe I just didn’t find it. I love Haskell, I suffer when seeing their outreach. Which is sad, because Haskell has good things to promote, for example haskell-cafe is one of the best mailing lists on this side of the universe.
Idris is great and I love what they are working on, but it is not currently aimed at being an industry language, which is kind of a road block for adoption. I still watch all of Edwin Bradys talk because, damn, does he know how to sell the practical effects of his language. Best (paraphrased) statements:
“I’m not interested in a turing-complete language, I’m interested in a pacman-complete language”
“Programs during the act of programming are broken 99% of the time, syntactically and logically”
With all my ranting here, I must admit that I would watch the movie. :popcorn:
This may just be where Rust is in the hype cycle.
I think this is it. Every new language that eventually succeeds goes through a phase where it’s proponents think it’s better than all current solutions, and are convinced of it so deeply that some fraction of them are annoying about pushing it.
If Rust fails at this stage, it won’t be because the Rust hypers are too annoying. It just be that almost every new language/framework/container/tool/whatever fails. Rust has made it to a stage that many other languages never do, but that doesn’t mean it has a >10% chance of being relevant in 10 years.
That’s the much larger danger and I’m happy that we speak to community members actually in charge of posts where they could make a push for Rust early. I’d hate a high-profile company in a space (for example gaming) doing an overzealous push, falling on their nose and burning a lot of ground in the process.
This is also why community work matters. All these people speak to us at some point. On their initiative - because they know someone listens!
Elixir is going through the same thing. While José Valim and the core team are nice, there’s always a few annoying people who say “Language X is dead!! Why not use Elixir!!!!?!?! OMG so good!” any time Ruby/Rails/etc is mentioned.
Yeah, I would say the same thing about Elixir, Go, Swift, etc too (in fact, I wrote some disconnected thoughts related to this in a blog post recently.
Personally, I’m putting my learning energy into the Erlang ecosystem, because it’s been doing a fantastic job in its niche category for over 30 years, and the use-cases for the BEAM seem to be increasing. Even if Elixir, the language I’m writing most in my spare time, dies, the effort into learning the ins-and-outs of what makes Erlang great will still be directly applicable.
Elixir also has a lot of active community members from the Berlin Ruby cluster, as well as Clojure, doing awesome work.
Sorry, if this becomes bitter.
I’m taking pride in the fact that Go’s community management is asking as us for consulting at conferences, because they still have to figure out a lot of stuff. Google’s developer relation and community work isn’t stellar and there’s only so much money can buy. That’s great, it shows that Google isn’t almighty.
But instead of being proud of a FOSS project making that work in best FOSS manner - for free, open, and on a shoe-string budget(*), FOSS people pile on us the first time someone finds a catchy term. Great community you got there, A+, would expose myself again. Really shows appreciation for the work. Not.
But Google still runs circles around most FOSS projects, because they tap into FOSS communities at all levels, even to people that take interest and learned how you do promote ideas and tech in FOSS spaces.
[*] We actually have a more then 10k budget in germany now, which comes from running successful conferences and having a bit of luck. It’s used for future conferences and buying hardware at the moment.
I think it’s the goal of the phrase. It’s catchy enough to remember. The word “evangelism” is important trigger word to let people know bullshit is coming.
So, what bullshit do we spread?
Wikipedia actually has a nice definition of Technology Evangelist. I hate “Evangelism” as a term, especially because of the historic baggage, but that’s what we got.
It draws an interesting difference:
Professional technology evangelists are often employed by firms seeking to establish their technologies as de facto standards.
I did community work for Elasticsearch before it became a big VC funded company and some time after. I can definitely agree that those kinds of evangelist should be seen with some skepticism - they are often literally employed in sales, they just hang around on the BBs, meetups and conferences.
There’s still a huge amount of very nice people there, they understand how when to promote their product or not. Still, if push comes to shove or profit over a community project, profit always wins.
Been there, done that.
Open-source evangelists operate independently. Evangelists also participate in defining open standards. Non-professional technology evangelists may act out of altruism or self-interest (e.g., to gain the benefits of early adoption or network effect).
That’s what we do at the Rust Community team. We invest a lot of our free time into making our technology known. Why? Because we are honestly convinced of it. There’s no pay check.
There still seems to be the belief that people will just find technology good for them by just scouring the internet all the time. No, they find it, because someone posts it to the link aggregator the frequent, someone there talks about it, someone speaks about it at a conference or someone writes limericks about the technology on Twitter.
An that’s evangelism. No more, no less. Make people aware.
I’ve been doing this for Ruby, Elasticsearch and Rust for more then 10 years now. It’s my skill to the FOSS world. I hate people calling it “bullshit”. It’s my way of supporting FOSS software. And after my experience with Elasticsearch, I’ll damn well make sure about the “F”.
If I would complain about anything, it’s that FOSS has failed at attracting more of those people and making the process more efficient. Because people volunteer for that kind of work all the time! For birdlife, the red cross, petitions, etc.
But yeah, you don’t attract people by calling their work “bullshit”.
I literally had someone ask a Gnome evangelist at FOSDEM whether he thinks “Marketing works in such a community of intelligent people”. The plain answer was “yes”. No more.
Random people running around spreading one-sentence “lol, rewrite Rust”-comments isn’t evangelism, it’s being a jerk. Call them out on it. You are fully entitled to.
But yeah, spread your marker.
For anyone following along, I’ll remind them you’re quoting and replying to stuff I didn’t say. I said bullshit from evangelists. That’s people who show up badgering people about Rust. I then said “evangelism” is appropriate word since it signals bullshit is coming. I’ve also said I counter their bullshit when I see it. Some things they say are true (eg borrow-checker stops extra bugs). I didn’t counter that. In reply to your longer comment, I also described that “Rust Evangelism Strikeforce” as many use it isn’t about team but the zealots who badger and/or peddle bullshit. Who knows what original author intended but the phrase took on that meaning in most uses. In another comment, I pointed out I don’t know how much your team’s work influences those showing up esp how direct or indirect effect. This question led to three, great answers from various team members that I can reference when others ask about it. Moving onto main question that quotes what I actually said.
“So, what bullshit do they spread?”
I changed “we” to “they” here since I’m referring to zealots spreading bullshit or anyone else claiming the same bullshit. A few types of bullshit I’ve countered:
“Rust is the first, safe, systems language. Thank goodness we finally have one!” I wish my memory wasn’t so broken because I swear I’ve seen a team member say something along these lines. Others didn’t & even mentioned alternatives to their credit. pjmpl and I kill a lot of these on HN by referencing prior work in safe languages (esp Ada or Wirth’s) used for OS’s, etc. The Rust zealots aren’t the only ones that do it. Seems to be an effect of drinking koolaid of language X followed by wearing blinders (i.e. selective research).
“You should rewrite everything in Rust since it will be safer and reliable.” These zealots were the most numerous. Rewrites themselves often introduce problems, esp if a contributor isn’t present anymore to spot a breaking change. Tooling is also an issue. I’ll get to that for next one. Three of you are clearly against this kind of zealotry w/ it being officially denounced. That’s great.
“You should use Rust on any new projects wanting safety and performance. It’s the first that lets you have both.” Rust is actually hard to learn if we’re talking the borrow-checker. The talent pool is low in numbers. The ecosystem is smaller because it’s new but grows and works at admittedly “holy shit!” rate. Many considerations got into choosing what language to use. I find Go to be a better choice for a lot of companies for combo of Wirth-style learning curve, tons of libraries available, and performance/safety is good enough for most apps. If GC truly won’t work or too low level, then Rust is a strong contender. Language to adopt company wide on infrastructure is just not an obvious, default choice like the zealots say.
“Using Rust leads to the safest, system apps.” From a high-assurance background, I know it’s a combination of predictability of tools and tons of analysis that help talented people do that. Rust, its tool ecosystem (esp static analysis & provers), and its compiler simply aren’t ready for this. It might be done but way more painful than alternatives. So, alternatives are better until CompSci people & Rust developers build necessary tooling to make it productive for high-assurance systems. Currently, it’s medium assurance at best by eliminating many common 0-days plus encoding correct behavior a bit more using its language features.
“You can’t have a GC on OS’s, system code, etc. Hence, you’ll be using C, C++, or… the amazing Rust!” This one zealots push but I may have argued with at least one team member on this far as technical arguments. Especially in reference to Go which draws from Wirth’s languages that were used for low-level work. The trick is they just turn off the GC on certain components marked “System” or “Unsafe.” Other times, they pick a GC suitable for the component such as low-latency, concurrent one. This topic I’m more forgiving on as a lot of the GC and language tech that would eliminate need for C or Rust isn’t as widespread knowledge as it should be. Plus, more experiments are needed to find out how far each technique can go before we need something like Rust. Nonetheless, my argument against zealots here is, “Before you say only Rust can do it, have you thought about a simpler, safe language using memory pools, reference counting, or GC tuned to performance needs of app?” Quick examples. In Go example, many companies found it acceptable in high-throughput or low-latency uses. LispWorks was used in real-time telecom w/ special runtime. Allegro CL in signal processing in radar systems. Jane St used Ocaml for efficiency-sensitive work. Haskell in some financial companies. And so on. If efficiency is on the line, there’s still more to think about in language choice.
I had to dig hard into my poor memory for these examples. It’s the kind of stuff I’m consistently likely to counter with my background & all the industrial, case studies I’ve read. One of my outreach goals is getting that kind of hard-to-find knowledge or wisdom to more people who can benefit from it. Plus countering what contradicts it & simply holds people back in exploring solutions. Since your team members put effort in, I figured you earned a detailed explanation for what I thought was “bullshit” from Rust zealots. Discussions with the actual team members have been civil and on more concrete stuff. Even the two instances where I think I remember a team member saying something similar were situations where they might have overlooked something that might have not shown up in their research. Happens to everyone. (shrugs) So, I just told them & anyone else in discussion about counterexample. That kibwen tried to get more info on Ada on Reddit and you on SafeD shows some of you are putting work into understanding other solutions' methods for making robust apps. I give you all credit since many on one side of language/tool X will just dismiss everything else. Overall, though, I know you agree with one of these points, might agree on a few more, and others you’ll find at least worth discussion/debate instead of “obviously true/false always!” as a zealot would push.
Almost makes me start a “have you considered rewriting it in C” counter-movement.
There was a guy in my CS degree program who honestly pushed for almost everything to be rewritten in C, and who refused to program in any language other than C. An interesting person, for sure.
Sure, do it. DO IT! Don’t post those things to a comment thread and forget them tomorrow. It’s not April 1st yet.
Promote safe and modern C, run meetups, create conferences focused on it, create outreach groups, write lots and lots of documentation, show the strengths C still has. It isn’t going away soon, community education will have huge impact for years to come. Don’t get caught in the whole language vs. language debate, and don’t do it because of “those Rust people were mean” (anger doesn’t produce good stuff), if your passion is “explaining safe C”, go!
Read up on how to get people involved, write lots and lots of docs, run around random C projects fixing peoples code. Drop the “re” and you got a title.
This may sound like I’m making fun of you, but I seriously mean it.
This is exactly what already goes on in safety-critical community especially for embedded software whose correctness and safety must be proven to evaluators before used in commercial products. The companies developing it came up with and discussed all sorts of techniques for error reduction. Tool companies emerged with products, mostly proprietary but some FOSS, to help with about every angle of correctness or traceability. Discussions in journal articles and at conferences are common. Reusable components became big. And so on and so forth.
So, I’d love someone to run with what you’re proposing to do something similar for mainstream C coding. Maybe using some of the same tactics and FOSS tools from safety-critical segment. It could definitely happen. The only thing that bothers me about the concept is potential side-effect of a resurgence of C. I’m not sure what the odds are but I wouldn’t want to set it in motion. Rather keep nudging them toward SPARK, Rust, embedded Java w/ tools, etc. Still good to do it, though, since C is so widespread & many developers are stuck with it due to company mandates or compiler availability. CompSci and FOSS has to keep improving ability to make C safe/secure in new or old projects given the high impact of that work.
You just described the embedded, software industry approach to most components you can think of that might be available in a common, memory-safe language. That had a predictable effect on the security of those systems as well. :)
Note: Only criticizing those with CPU to use them. Obviously, 8- and 16-bitters or 32-bitters with severed memory/CPUuse limitations will have to make sacrifices. Although, SPARK and ATS can handle some of that if extra work is put in. Still open topic as the tech evolves.
Never heard of rust, is it similar to myrddin?
The Rust Evangelism Strikeforce should hold regular meetings to do these rewrites.
I’m rewriting one of my Python libs (https://github.com/solidsnack/query-selector/) in Rust (https://github.com/solidsnack/sqlmod) to be able to share the implementation with Ruby, Node & Swift.
We run topical hackfests, I’m so tempted :).