The diversity thread is getting very multi-layered, so I think it would be helpful if we factor out the discussion on what our short and long term plans are for community outreach, improving diversity and growing our community.
Here are some of the ideas I've extracted from the thread:
There was one more idea that @nrc had which didn’t really get mentioned in that thread.
The idea was to offer mentorship to people wanting to contribute but not wanting to dive in directly due to whatever reason. This may help people, especially those from marginalized groups (who may have apprehension to diving in to a possibly toxic community), get involved. One major component of this idea is avoiding IRC. IRC is a nice platform, but absolutely horrible for new contributors, and it (it = IRC, not necessarily #rust) has a history of abuse towards women and probably other groups. It’s still a problem in many IRC rooms/networks. In most cases the prerequisite to joining a community is mingling on IRC; and as far as the Rust online community goes, that is mostly still the case. Reddit is another active Rust platform, but Reddit is known for similar problems (though the Rust reddit is pretty well maintained).
The rough idea was to have a page listing people who are willing to mentor people when joining the community. They can be contacted via various ways, email being one of them. IRC can be listed but should not be the only method.
People wishing to contribute can then contact these mentors, and ask for advice on which project to contribute to (depending on their interests and knowledge), or specific advice on picking a bug to work on or on working on that bug. Mentors can help connect them with the right people and also give step by step mentorship for a bug if nobody else is available.
Note that this is not a technical help service (that’s just not scalable). If someone is having trouble using Rust, they should go to stack overflow or discourse. If they’re having trouble (or want help) contributing to Rust projects, mentorship.
This wasn’t supposed to be restricted to marginalized groups only (though that’s an option). As mentioned above we suspect that people from these groups have a good reason to be wary of IRC, and might prefer other channels.
Nor am I trying to say that such people intrinsically need handholding over others; just that handholding is beneficial in getting involved in open source, especially for the first time, and a venue other than IRC will benefit those people wanting help in joining but don’t want to use IRC due to the reasons explained above.
If this is to work we need to design the program carefully though. The above idea is very fluid; I’ve just given one version of it. A lot of things could be tweaked.
My intuition here is that the most effective thing will be ground-up, local action (which seems to be in line with what both you and @skade have suggested). Giving talks is an easy place to start. I'm excited about finding good opportunities in Boston (I'm not really familiar with what meetups or groups exist, I'll have to search). I'm usually not one to "cold call" (or e-mail, as the case may be) and ask to speak, as I don't like to pressure other people, but this seems like a good time to make an exception. (None of this is to say "global-level" action is not needed.)
@jdm's comment about prior art stuck with me though. I'd love suggestions for good blog posts or other websites where people talk in more detail about things they have done and how well they worked.
Sadly, the Rust India community isn’t really a thing. There are scattered Rustaceans (and a lot of people know Rust basics and are slowly learning), but no meetups and I’m the only one I know of who’s doing talks. I’m hoping this will change next weekend when the launch party happens; since there seems to be a lot of interest in that.
As it grows I’m hoping to make efforts for diversity in tandem with growth. I’m optimistic about this; the largest Rust talks I gave had a pretty equal spread across genders in the audience.
Please contact me if you’re interested in helping out in India. Advice is appreciated; and I’d also like more mini-communities to start springing up – I can’t be everywhere at once
(As mentioned before, if there’s any way you think I can help with the other initiatives, count me in!)
I can recommend getting in touch with twitter.com/gautamrege with regards to how to run an indian software community. He’s an active person in Ruby India and is a great in all aspects, also with regards to diversity.
I’ve been recently wondering if there could be some value in having some common infrastructure for local groups. Your mention of local efforts made me think this could be helpful for this issue as well.
I was mostly thinking about things like Wikis and mailing lists (or other discussion avenues). The value here would be mostly in the discoverability of resources and groups, making it easier to create local groups, and also sharing resources specific to language or geography. A way to register IRC channels could also be nice. The basic idea would be to allow small, local parts of the community to take advantage of the fact that they are part of a larger community.
I should note that I’ve been thinking about this in a more generic context. I have no idea if it would be helpful with diversity, but I thought I’d bring it up.
For the inaugural Boston Rust meetup, I did a talk that had just a little bit of background on what Rust is all about, then walked through a few simple examples and described a few basic aspects of Rust in relation to that example.
In a one hour talk (which extended to about an hour and a half due to lots of questions from the audience), I was only barely able to scratch the surface. Even for the one short example, there was a lot of stuff I didn't have the time to fully explain. Just to understand some basic I/O, storing counts in a hash table, sorting with a custom comparison closure, and so on, requires talking about lifetimes, iterators, traits, the entry API, type inference, and more, and I couldn't do all of that justice in the time given.
So I would be interested in trying to run either a longer hands-on Rust training session from the ground up, maybe a day or weekend long, or perhaps doing a series of shorter evening sessions over the course of a month or two.
I've also been considering doing a talk on contributing to Rust at a future meetup; information on how to find good issues to work on, file bugs, build Rust and run tests, submit fixes, the RFC process, and so on. Though maybe @nikomatsakis or @burntsushi would be better for that, they both obviously have more experience with it than I do. It could potentially be done hands on, by preparing a list of easy fixes and/or doc fixes to suggest that people work on and being able to review them on the fly and possibly even get them r+ by the end of the night.
If we can find the interest, I'd be up for doing one or both of these for events focused on under-represented groups.
I know a few people who have been involved in various Boston area Rails outreach efforts, including one of the co-organizers of the Rust Boston meetup/release party. I will get in touch with the people I know to see if they can point me in the right direction of groups that would be interested in speakers, interested in spreading the word about Boston Rust events, or the like.
I'm also not much of one for cold-calling, but it would probably good to reach out to a few other local groups as well. I wonder if we should maybe move this discussion to the Rust Boston Slack (get an invite here), since it's mostly local.
Ruby has the onruby platform. It basically allows to run a subgroup and gives an interface to submit and vote on talks. It’s a clean software, independent of Ruby and easy to adapt. As awesome as meetup is with regard to targeted spamming, it costs money and is confusing to some.
That all doesn’t help with diversity, but platforms help giving training and group-feel (which isn’t necessarily a bad thing, as long as the feel is good).
Yeah, that seems to match what I intended to say. My initial idea came from the Perl equivalent. My thoughts where something like this might help were:
These groups remove entry barriers into the community (by language, and often complexity, since these channels (in my limited experience) are usually more practical than theoretical in topics). They are also helpful in connecting the community to the industry.
But I’ve mostly been wondering if something like this could be used to provide help to actively reach out on a local scale, and also give the local parties a place to organize. But I do get your point about it not being directly helpful and more of a vehicle.
Can Mozilla create a paid position in the Rust team for someone to take charge of community organization? This makes clear the extent to which it is a priority for the project.
Of course it should not be just one person’s job to grow the community, but it also should not just be a thing that other people do as a side project, inbetween the work they do according to their job title.
I’d be happy to help with Boston related activities. I am particularly fond of the workshop idea, especially since most people won’t have had a chance to try Rust yet. Of course, I am happy to serve in whatever capacity I am deemed most useful!
When I was a TA many moons ago, we ran “labs” that the students seemed to enjoy. For the most part, the structure was that there was a lecturer who introduced/motivated a problem, and had the students do a structured exercise. (Sometimes with more lecturing sprinkled in, sometimes not.) The part I loved most about it was that while the students worked, us TAs would go around the room and give students 1-on-1 attention as they worked their way through the exercise. Students were encouraged to help each other too.
I know there’s a lot here. I collected these by going through the archives of Model View Culture, Ashe Dryden’s blog and “Additional Resources” links, searching for phrases like “ensuring diverse open source community” and “running diverse tech event” on Google, and looking through the archives of the Geek Feminism blog’s “diversity” tag. You’ll quickly note a lot of common themes, suggesting that these strategies are both effective and well-known to those already engaging this this work, and thus worth our attention.
Resources/suggestions focused on building community and making connections outside of the existing network:
That's definitely an angle we should pursue. I didn't bring it up
mostly because I don't have a good sense for what's possible right now,
but I have already been talking to Mozilla management to explore options. There are likely dedicated organizations we may be able to work with as well.
@erickt I’d be interested in helping out with outreach in SF in particular. I think our regular meetup could be a good place to start. Maybe we can talk to some local groups about how best to do outreach in the area? I know Mozilla itself has also done outreach to disadvantaged groups, so I am seeking out whether there are resources there that might help.
That's exactly the kind of thing I had in mind. I've found that one of the most useful formats for learning a new technology. Introduce a new topic (structs and enums, parameterized types, borrowed references, iterators, traits, etc), talk about that topic a bit and walk through an example or two, then give a exercise to solve that will use that topic, and have a few experienced people walking around and helping out anyone who's stuck or answering any questions that people have. Something like a 20 minute talk followed by a 30 minute exercise and a 10 minute break, and do that for the course of a day (or do that spread out in weekly sessions over the course of a couple of months), and you can cover a pretty good amount of ground.
Concerning IRC, many organizations have been branching out a bit into slightly more discoverable and usable (and curiously: less weighted with IRC cultural history) slack channels. It’s a surprisingly effective fresh coat of paint on a regularly cited barrier. Public ones are easy to host and can bridge with IRC if necessary.
Concerning outreach, I’ve heard several reports that concreteness of welcome gestures is something to keep in mind. I.e. If you’re aiming to get someone to attend an event, a concrete fund to cover travel and accommodation budgets, or a concrete organization of less problematic networking spaces than drinking at a bar, or a concrete set of sponsored attendance seats in workshops or paid speaking opportunities or internships.
In other words, show you’re serious somehow, and treat the person’s time as worth something. You’re asking someone to take a risk and expend some labour, time and likely money on something they might be very very wary of, with dubious potential rewards to themselves. Back up the request with some risk taking and time/money/labour expending of your own.