Growing the Rust Community | Mozilla ♥ Rust

Let me tell you a little bit about what Rust is about. Rust is a secret weapon. Rust is a community project. Rust has learned from the mistakes of the past. Rust is a systems programming language that is safe, concurrent, and fast. I’ve got one word for you: Rust. What I love about the Rust community is how inviting it is, and how easy it is for new contributors and new users to get involved. The Rust community really values onboarding and really values helping other people learn how to become rust programmers too. I’ve just been you know pretty taken aback by how awesome and nice and helpful everybody is. You know, you go into #Rust the IRC channel, and you ask a question and there are thousands of people there, and you’ll get like three answers to your question because so many people started typing an answer before the other ones finished, right? There’s just that much enthusiasm of people that really want to help you, and you know help make whatever you want to do possible. The combination of having a reasonable code of conduct and consistent, fair enforcement has fostered a very welcoming, very focused community around the language. So one of the slogans in Rust is “Stability Without Stagnation.” On the one hand you want stability. You want a language that is not constantly breaking your code as it evolves. But on the other hand you don’t want stagnation. Right? You you do want the language to actually grow and evolve over time. You don’t want to get locked into things that turned out to be bad ideas, where you have better replacements. The Rust compiler has the ability to tell you when you’re using a feature of the language or the standard library that has been deprecated. It doesn’t prevent your app from compiling – it will still work just fine, but now you’re directed toward some replacement feature, some better way of doing things as we evolve the language. But there’s a another side to the story which is, how do we introduce new ideas over time? Rust follows a model that was pioneered by browsers, actually where we have very rapid releases, so we release a new version of Rust every six weeks, and as part of that there are multiple release channels that you can be on. The most important channels in Rust are the stable channel and the nightly channel. The stable channel we make the strongest guarantee about. Developers should feel confident starting with stable Rust today because the code they right now will still be compiling years into the future. We test the old stable and the new stable candidate on all of the Rust code we can find using a tool that Brian Anderson wrote, called crater. Based on the results of those tests we find places where the new stable candidate might cause problems for developers, and we go and fix those before releasing it. Nightly is where we do our experimentation. so if we have a feature coming down the pike that we want to iterate on, we can ship it to nightly users, they have to opt-in not just to being on nightly, but also to say, “I want to experiment with that feature,” and in a way they’re they’re saying upfront, “I understand that if I write code against this feature it might break in the future.” Right? “I am opting into being on the cutting edge,” and so that’s how we draw this balance between you know wanting to evolve and iterate, but not wanting to commit tot early or get stuck. Ensuring stability and backwards compatibility is one of the core tenants in Rust so far, and we’ve been doing this through a lot of very open process with the community itself. So one of the primary ways to do this is we have this process called the RFC process, which is a way for people to propose language changes, so we have all these forums and all these abilities to kind of speak up and say, “This is probably going to break me,” or “I don’t think that’ll work for me.” Whenever you want to change something you always have to ensure that it’s stable to get it past the entire community. One of the things I love about the Rust community is that they understand that Rust isn’t just software it’s also about people, and that means that the tools that we build are not just about letting one person be able to solve their problems, but it’s about having an entire ecosystem of people who can help build shared solutions, who can create software that may work for one person over here, but another person over there, and now they can start working together, and build something better than either one of them could have built on their own. Traditionally, large-scale languages are driven by corporations, and they have their own objectives, and their own agendas. It’s super important for a programming language not to be owned too much by any single interest for other users to feel safe investing in it. There’s a fear that, what if they change the language’s scope completely? What if they stop supporting this language? How will i be able to continue running my code? In order for Rust to be successful we have to make the most of our community, and that means engaging everybody that we possibly can. We want to build Rust’s success from the bottom up, not the top down. Come to Rust and you feel like you suddenly have superpowers. I love Rust. Congratulations on starting Rust. Go try Rust.

  1. I have to say this feels very different from a language produced by Microsoft or SUN (now Oracle). I learned long ago to never invest too much of my energy into learning a product or language whose future is tied to the whims of a corporation whose primary focus is profit. My first language was macros in WordPerfect 5, and version 6 change all the syntax of the language so I had to throw away all my old macros. I spent hundreds of hours learning Oracle Power Objects and Microsoft Fox Pro only to see the products be abandoned. I invested a lot of time learning Borland's OWL framework only to see it die.

  2. I'd say the person who invented garbage collection had a bad idea… And well, with strong type inference, Rust for me is the best lang so far.

Leave a Reply

Your email address will not be published. Required fields are marked *