Towards a More Integrated Rust Community


#1

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!

References:
http://www.linuxfoundation.org/tools-managing-open-source-programs/
https://bitergia.com
https://developer.github.com/v3/
https://www.atlassian.com/software/views/open-source-license-request


#2

You have just stepped into a political minefield.

A lot of “Rust projects” are parts of existing, separate projects with their own governance models and community meeting places. html5ever and rust-url, for example, are maintained by Servo developers, and a lot of their planning is done in Firefox’s Bugzilla. The same is true for Tor, Mercurial, Dropbox, and other existing organizations that have adopted Rust. They’re not going to stop discussing the parts of their projects that happen to be written in Rust on their regular channels, and I doubt the Rust moderation team would want them to (different community norms are half the problem, and the increase in workload for the mods is the other half).

Even within “the Rust project,” it’s not quite that simple, since rustaceans.org and /r/rust are technically not officially run by the Rust project. And while the Twitter feed is being officially run by Rust, they have little power to moderate over it compared to what Reddit and Discourse provide. This means that all three have very different social norms, which is half the reason people choose the particular platforms to begin with.

And did I mention that the Rust community team probably doesn’t want to build their own social network?


Now that I’m done raining on your parade, it’s time to present the upsides:

There’s no reason why crates.io couldn’t provide some nicities like support for Gitter badges or Twitter feed embeds (opening a crate’s page and getting its official Twitter feed in the sidebar sounds really nice, actually, and pretty easy since I already know that Twitter has an API for doing that). It doesn’t have to be a single social network to be better than the status quo. It just has to improve discoverability; I should be able to, given a crate, quickly figure out where it’s preferred discussion platform is without having to hunt for it.

Beyond that, the project-internal stuff can be, and probably should be, unified onto one platform. If I were you, I’d learn Ruby and try to get better collaborative editing for wiki-fied posts in Discourse. That way, Rust can stop using GitHub for its RFC’s. Since it would be the same moderation team either way, it wouldn’t be a big political shift like trying to unify u-rl-o and /r/rust, there are big tangible benefits that everyone can agree on (QUOTE BOXES!!!111), and it’s having a group that does social software for a living (Discourse) improve their existing product instead of getting a group that really just wants to work on a programming language (Rust) to build a social network. Still sounds like trying to turn an aircraft carrier around, though.


#3

I’m well aware of the fact that most people don’t like change, and I’m not expecting certain individuals or teams to drop everything and build a social network, but if someone reads this post and thinks it’s an idea worth working on that’s all that really matters. It’s an idea I thought I’d express to the community and see what others think. Also, I’m not trying to force anyone to do anything. No one has to write open source code or have a Twitter page for a project anymore than join in on a community focused on crates. The idea was to create a forum more closely linked to the very code we use and discuss. The idea is mostly targeting those of us who haven’t written the crates. I’m not naive enough to think companies with Rust projects will suddenly start doing things that aren’t in their best interests.

Publishing the governance was really more about documenting who does what, not trying to actually change process. The Rust team release information in blog posts but beyond that I’ve missed the previous community posts so it’s difficult to know how it’s all structured.

Personally I couldn’t think of anything worse than further cluttering up a crate’s page with a Twitter feed embed. But even that wouldn’t be enough to drive me to code in Ruby. shudder

I guess I’m an idealist who believes that aircraft carriers can be turned around. Mostly because they can. Communities migrate. Also, compared to other communities, it’s not really that big. I would guess that it’s bigger than MySpace and smaller than Facebook.


#4

I’m not quite sure what you’re proposing, then.

It sounded like you wanted every crate to automatically get a discussion board, hosted on crates.io. “Bringing the discussion closer to the code” as you put it. I think that’s a terrible idea because we either leave the moderation up to the crate owners, which means that if a crate owner fails to live up to the CoC then it’ll reflect on crates.io and Rust as a whole, or the moderation team needs to take care of it, which means increasing their workload. Political problems, not technical ones.

If you meant something else, then what did you mean?


#5

Let me try and explain myself better.

Firstly, improve the crates site UX so that there is more attention focused on crates that are trending and crates that are popular over the long term. Also, crates that are a hot discussion topic (this could be sourced from discussion activity in the social network). Perhaps add features like “related”, “similar” or plays “nicely with” project data. That’s something I’ve always wanted to see on GitHub. Tools like Bitergia could be used to help provide more insight into the health of these repos thereby helping Rustaceans get a better view of the open source landscape.

Secondly, create a social network that migrates the existing Discourse Rust Users forum, so that it’s possible for the Rust community to engage in a more structured and custom environment than a basic white label forum. They could provide a more centralized and structured front to the community. Here crate owners could opt-in to create a interest group for their crate that users could subscribe to (Yes, it would be great if every crate owner opted-in, if the moderation were left up to the crate owner, then it could work at scale. Then it would perhaps just be a case of moderating the moderators). So the crate owner would be the moderator. The crate group owner could use this to answer questions regarding their work, highlight issues from GitHub etc and also publish the status of the project, upcoming release dates etc. This would involve obviously pulling crates.io data into the crate group in the social network.

Thirdly, as you eluded to with the Twitter feed, the most recent (and important) discussion and issues being discussed in the social network group could be embedded in the crate.io page, in a way that makes it obvious that this discussion is taking place in the social network, and if a crate user wanted to learn more or get involved in the discussion, they would have to do so inside the social network. Or you could embed the discussion feed and provided the ability to OAuth with the social network and reply to comments in the social feed, directly on crates.io. Having said that, as you’re concerned about crates.io reputation, I do believe people will understand, (given their experiences with other social networks) that crates.io can’t be held accountable for the words and opinions of others. No one blames Facebook if one rogue actor gets them self banned for bad behaviour.

I hope that’s a little clearer. If I could describe this entire endeavour in one word, I’d use the word “informative”. That would be the goal, and I think it would be easier to achieve in a structured social network. You could even pull the Internals User group into the network, so that features being discussed and planned out for future release could be more easily published across the social network, instead of just living in another silo.


#6

It could also be a showcase for what you can achieve developing with Rust. Sure, the front end could be Angular or similar but then they could use it as a proof of concept for WebAssembly.


#7

The problem is different people have different preferences. There are many people who like this forum and wouldn’t want to shift it to crates.

Your points do make sense but the thing is we should not bring everyone to one platform. Instead we should provide the same experience across all platforms. So people don’t need to jump from one platform to the other to get help related to certain crates or features. It is tough but I guess a lot of people will like to help to reach it.


#8

A lot of people liked MySpace and Friendster at one time too. I think you could actually extrapolate out from the Discourse forum so that it does look familiar. Personally, I don’t think you’ll never achieve the same experience across all platforms, and you are describing exactly what is happening right now. I do have to jump from one platform to the next to find help with a code base. First you go to Crates, then GitHub, then you find out what (if any) support is offered, and where. Gitter, E-Mail, Stack Overflow, Google Groups, IRC.


#9

Yeah I agree we have to jump from one platform to the other. That’s why i said we have to try and find a good way to provide the same experience across the board in some way or the other.


#10

Or you can gather that info by scraping existing social networks. I think Stack Overflow and Twitter have APIs for doing this kind of thing already, and I know we could use Discourse tags and webhooks to scrape Users.

Also, if crates.io tried to scrape discussions around a certain crate from other social networks, it could tell you, in an organic way, where most of the discussion is happening.

Not in so many words, but people do quit their social media accounts after observing too much toxicity. Full disclosure: I ragequit Reddit some time ago.

No, it couldn’t, because we can’t trust all of the crate owners the same way we can trust the handpicked moderation team. The model you’ve described is the same one Reddit uses. Do not imitate them.

As far as general Rust support goes, the preferred answer seems to be “just have people monitoring and answering questions on All Of The Platforms.”

The problem is getting help with specific crates, because crate authors aren’t going to have a presence on all of the platforms.


#11

I think we’ve moved past scraping, hence Restful APIs. I think scraping will probably get you blocked more often than not.

You seem to be quite convinced that nobody can trust crate developers to manage a conversation. I don’t think sweeping generalizations are ever helpful. If someone has spent a massive amount of time working on a project and are hoping to get some level of recognition that goes with that, I would be more inclined to believe they’d behave in a professional manner. You see this all the time in the GitHub issue world. Who moderates GitHub issues? I don’t know but it hasn’t stopped that community from thriving.

I have no idea why you posted a cartoon about standards. I never mentioned standards once. I did mention the word structured though.


#12

Usually.


#13

Yes I agree with this. The best thing to do is tell people to create issues on the issue board of repository. Makes it easier for maintainers to triage. .


#14

If you wait for all 7 billion people to get along permanently, you’re going to be waiting a very long time.


#15

I think there’s a lot of really good ideas in here, but a lot of focus is on the 5-year plan instead of the next 6 months. If you want to influence the direction of the project the best way to do that is to be directly involved in moving it forward, even if some of the workflows you currently have to cope with are not to your liking.

For starters, you could join the Crates team and figure out where assistance is needed.

:wave: Discourse team member here. If the Rust team or Crates.io contributors would like to discuss this further, PM me!


#16

Just to note: The crates team is not a thing yet. I simply proposed my idea over there,… nothing is happening yet!


#17

It does look like Bitergia has been used internally at Mozilla for Rust project analytics, and some research was done into customising Discourse to provide some sort of security level implementation, so it looks like I’m barking up the right tree. :joy:

https://wiki.mozilla.org/ParticipationSystems/discourse_evolution


#18

Recently I’ve been experimenting with a UX redesign for crates.io, and thought I’d share a design from that. Comments welcome.