When you build a community you're creating a culture. That culture will be about more than the code, the modules, or the language. The people you draw in will have their own biases and behaviors that impact the kinds of people you continue to draw as you grow.
Cultures will naturally fight behavior that is divisive. That is, behavior that is divisive to the established members of that community. As a community grows larger it is harder and harder to change what the culture finds acceptable because changing it, even if it is inclusive in nature, is disturbing and divisive to existing membership. Fighting for change in established cultures means dealing with a lot of dismissive language and attacks for the "tone" of your argument.
That is why it is so important that a culture becomes comfortable with aggressively fighting exclusionary behavior. While it is certainly more beneficial to make pro-active steps to increase diversity we cannot be dismissive of the effect that passionate reactions to poor behavior have.
More important than the actors themselves this sets the tone for acceptable behavior in the observers. Spectators come to recognize what is and is not acceptable behavior. Most newcomers will mimic what they see and observe as good behavior and those unwilling to bend to the culture won't join by self-selection. It may sound harsh but this self-selection is an inevitability, you will either self-select out people comfortable with a dominating gender or race or by including them people of more diverse backgrounds will exclude themselves.
It's not enough to simply state your values, you must live up to them. You cannot accept behavior, or people unwilling to change behavior, that is racist, homophobic, or gender biased. While certain behaviors are more serious or offensive than others the more uncompromising the culture is to even the smallest exclusionary practice the more inclusive it will be of increased diversity in the long term. You want people uncompromising and unaccepting of exclusive practices because they are cultural anti-bodies to those joining that would actively hinder diversity.
We've worked hard in node to make it clear what is not acceptable. This applies to everyone, the culture demands it from not only new members but the established leaders. If you're thinking of joining the node community you should recognize and accept this culture and know that we don't accept exclusionary behavior and we never will.
[TW: nasty abusive words] I just wanted to say thanks. As a girl in open source, I often experience abuse - so much so that I've set my git installs to list my real name as "bluebie" to help minimise it. Just a couple of months ago someone called me a bitch and a slut on a programming forum after I knocked back his pull request. I had to work with the forum admin to develop policies on how to deal with it, because I'm one of the only women on there, and certainly the highest profile one. Pretty alienating.
Often times I feel like just hiding away and giving up on computer sciency stuff. I've pretty much abandoned freenode due to sexism. Having people like you, Mikeal, stand up and be articulate in precisely why and how bigotry, sexism, homophobia, transphobia, etc, is harmful, really makes a big difference to those of us mostly lurking in the background. I'd certainly be inclined to package up and release more of my code if my experience of open source communities was more positive.
Still, things are improving. Used to be you couldn't admit to being female on freenode. Nowdays, it's just incredibly annoying to do so (nevermind irc clients 'outing' you by taking your system user account "real name" and providing it at login by default, just like
git
does)