I recently read Aaron Turon’s post on Retooling the Rust Libz Team. I’ve been reading some of the open source guides on The Linux Foundation website regarding creating an open source program office and felt rather inspired by what I read, especially the topic of tools for measuring open source project success which I was reminded of as I read Aaron’s post. Perhaps Mozilla already use tools like Bitergia.com, however, having given some thought over the last few days to building open source communities and how to go about managing and tracking open source project health and dependencies I feel as though a lot more could be done to improve the community interaction around crates.io.
I’m new to Rust. I started learning it in December 2017, and as most know, one of the first place newcomers gravitate towards after learning the basics of the language is crates.io. When I think of crates.io, I think of the classic information silo. “Well it’s just a registry” some would say. And so it is. I think that’s a problem. If you look at GitHub, you find that while they host repos and attempt to foster a community, the latter only seems to exist if you have an issue with a repo. On GitHub, there are no features for discussion around a repo, or an organization for that matter. If the repo owner hasn’t published contact details or a Gitter forum name, you’re left scrambling around for how to get help or advice on the code in question. It’s the same for crates.io, and that’s a shame. It’s then time to head off to the Rust Users forum and search and post and hopefully find some relevant discussions. Of course, it doesn’t have to be this way.
Rustaceans.org is not an online community (it’s another registry, another silo), but it really should be the heart of the Rust community, fully integrated with crates.io. I’m not suggesting crates.io remain as is, though. Think about what you could facilitate and gain insight into if you merged a Rust community network with crates.io, or how this would help aid discussion around open source. Right now, the Discourse forum software that’s used has no idea that crates.io exists, and crates.io has no idea that Discourse exists: there is nowhere on crates.io facilitate discussion around a crate.
If you start to think more around a (social, enterprise, open source – call it what you like, some call it Enterprise 2.0, examples like SocialText & Yammer – I’m not suggesting using an off the shelf solution, as that is part of the existing problem) network that’s custom built to integrate these information silos that exist, you may well find it far easier to get feedback and follow the relevant discussions around topics of interest, and it would be a unique experience for everyone, not just newcomers to Rust. You could even use it for groups, such as the ones Aaron is talking about creating to delegate responsibility. Has any programming language community ever build their own custom social network that’s tightly integrated with GitHub? I don’t know of one offhand.
What about crates.io. Well, it should be a stand alone site as it is now, even though it should be tightly integrated with rustaceans.org 2.0. Think SSO. I would totally redesign crates.io. It’s not just that it doesn’t look remotely like any of the other existing Rustified silos, but there just seems to be too much data crammed onto a single page for each crate, and some of the most valuable information (that I use at least) for deciding on which crate to focus on, is actually right at the bottom of the page. The trend graph is one of the most important pieces of information when it comes to assessing project health yet, it is the last thing on the page, and it’s also too short a time period. Multiple versions (and repos!) trended on one graph can be useful, but a default view that shows the general repo health over a year would be better to assess the numbers over a longer term. Sometimes repos have a huge usage figures because they’ve been around for years, not because they’re the best current solution. Often a new repo will see massive immediate interest, but it’s hard to find them. There is no real trending on crates. Oh but there’s “Most Recent Downloaded”. Unfortunately that doesn’t mean it’s trending, it just means that was the most recent dependency added - unless I’m mistaken. I think the UX on crates.io could be massively improved. You could do well to find an experienced UX designer who’s willing to take on board ideas from GitHub, GitLab etc in the redesign.
I’m guessing 99% of the crates repos are hosted on GitHub. For those that are, you could make incredibly good use of the GitHub API to pull that user interaction into crates.io (more than currently exists) and Rustaceans.org 2.0. It’s incredibly featureful. Even for code snippets as Gists. Discussions around issues for repos on GitHub could be had right inside what we now see as the Rust Users forum if it were a custom built social network. The project governance, team structure, release schedule, blogs, Crate of the Week, crates.io/GitHub metrics, issues/tickets, discussions, could all be built into this Rustaceans.org social network.
If you designed it correctly, you could probably even release the GitHub integrated social network aspect as an open source solution itself for other projects to use to help build their communities, and then plug-in the crates.io aspect/data just for Rustaceans.org.
You could even plug Bitergia dashboard data into areas of interest within the Rustaceans social network. Rustaceans could get a much more visual experience of what is happening in the open source Rust community. Meet-up event data anyone?
Apply to use Atlassian software for free (for open-source projects) and you could even integrate JIRA issues into the social network too.
Where do you want the Rust Open Source community to be in 5 years. We could be the most enlightened and informed open source community on the planet!