Some open source communities seem to get their inspiration from Danté's "Inferno": "Abandon all hope, ye who enter here."
Despite the critical importance of using and contributing more open source, it's hard to get excited about joining a "community" that feels like standing before a firing line. Yet this is precisely how many open source projects operate.
Not so the Rust community. Begun as an ambitious side project by a Mozilla employee, the Rust programming language promises to blend the control of a low-level language with the flexibility of a high-level language. Or, as Serdar Yegulalp writes, "Mozilla's bigger ambitions for Rust ostensibly include not just system-native software like Web browsers, but entire operating systems as well, given the language's billing as a way to achieve speed without sacrificing safety."
That’s amazingly cool, but it also requires that developers tackle a steep learning curve. In many open source projects, that's a recipe for the über geeks to pillory lesser programmers interested in getting involved.
Fortunately, perhaps the most impressive aspect of Rust is the welcoming community that supports it. This community could become Rust’s not-so-secret weapon.
A future built on Rust
New applications increasingly demand new approaches to development. This is one reason that Google’s Go programming language has been on a tear, and it may indicate a rosy future for Rust. As RedMonk analyst Stephen O'Grady points out, "Anecdotal evidence has been accumulating for some time that the language is piquing the interest of developers from a variety of spaces."
Partly, this is a safety thing. As David Herman, principal language researcher at Mozilla, suggests, "Rust has something unique to offer that languages in that space have never had before, and that is a degree of safety that languages like C and C++ have never had. ... [T]here ar some things that make doing systems programming terrifying that are gone in Rust."
By itself this wouldn’t be all that exciting, despite the importance of security. A potentially greater benefit of Rust comes from its ability to deliver systems language control but higher-level programming language ease and familiarity.
As Herman explains, "Rust has a lot of features and conveniences that almost make it feel like a high-level language despite the fact that you’re doing things like manual memory management that you do in C++. And Rust has a lot of abstractions that make it not feel like manual memory management anymore."
In short, "low-level control and high-level safety." That’s a potent combination, one that promises to give developers far more control over performance without having to take on the burden of learning C/C++, or assume the risks of getting it wrong.
A cozy community
While the tagline sounds simple, the learning curve associated with becoming proficient in Rust is anything but.
There’s a great Reddit commentary that asks "Is Rust too complicated?" and finds, yes, it’s pretty complicated. But one of the factors that mitigates against the complexity inherent in learning any new language, and particularly Rust, is a community dedicated to helping newbies get onboard.
As one commenter (Jarcane) details:
I've yet to feel stupid programming in Rust. I've yet to feel like "oh, dummy, you should've known that." I've yet to feel embarrassed for not knowing something or not puzzling it out on my own. When I read the books, the tone that comes across is "Yeah, this is a little tricky, but don't worry if you don't get it the first time. You'll get it in time." When I ask in the channel, I get prompt and helpful answers, not just to my question, but often to what it means and why. As if there's an acknowledgement that every such question is an opportunity to teach, an expected event, instead of a mutual nuisance to be exchanged in the hopes someone else will return the favor later.
As they say, "There is a tone to the literature, to the compiler messages, to the IRC channel, which is this: ‘we understand.’"
This is very different from the Linux community where, for example, a community member might be welcomed by Linus Torvalds with a "*YOU* are full of bull----."
Or this from OpenLDAP’s Howard Chu: "If you post to this list and your message is deemed off-topic or insufficiently researched, you *will* be chided, mocked, and denigrated. There *is* such a thing as a stupid question."
Maybe it’s a valid response to suggest would-be contributors get a thicker skin. But does it need to be bulletproof?
In the case of Rust, you don’t have to choose between learning a new and exciting project and your personal dignity. I spoke with several members of the Rust community, as well as some outside observers, and each of them reiterated this essential point: The Rust community goes out of its way to help others succeed.
Which is why, among all its technical merits and ambitious promise, perhaps the aspect of about Rust, and the reason its future is so bright, is that it comes with a community that welcomes and enables newbies. To stick around, yes, but also to contribute. This is a project worth watching and a community worth emulating.