Disclaimer: I work for Mozilla and am a Node.js core maintainer. The opinions expressed here do not reflect those of Mozilla or the Node.js project.
After watching the events unfold the last 2 days I decided to sit down, with my two cartons of Trader Joe's eggnog, and simply express with all humility and confidence what libuv@47d98b6 definitely was not.
Over the last year I have had the pleasure of being mentored by Ben. He is largely responsible for my initial major involvement writing performance improvements for Node, and has easily surpassed triple digit hours guiding my ridiculous ideas to fruition. My obsession with performance has even become somewhat an ongoing community joke. Because of his time and training I'm now in a position of being able to speak to many of you about the crazy and awesome new things happening in Node.
At the same time I've learned a lot about Ben as a programmer. Mostly that he is very precise with his code. Commits have always had to fill one of two criterion. 1) They are an acceptable code change (with accompanying documentation, tests, etc). 2) Documentation specific changes must clarify a technically incorrect point. So while his wording may have been a bit terse, I wasn't surprised the PR was closed. As for the revert of the initial merge, my only comment is that it wasn't for the reasons the majority of the community very clearly believes.
To clarify and demonstrate my previous point I would like to make an exhibit of his commit history. First we'll examine Ben's use of male specific gender pronouns in libuv:
for i in `git log --author="Ben Noordhuis" --oneline | cut -d' ' -f1`
do
git show $i | grep -i '\<he\>\|\<him\>\|\<his\>'
done
This grep
is meant to be as loose as possible to also catch any gender inclusive pronouns in the use of commit messages. So there is some actual code we need to filter through. Once this is done we can see only three results. The first two are from when Ben merged libuv stable branch to master. So, of his 1062 commits there is only once case of using a gender specific pronoun that dates back to Oct 2012.
Moving to Node core. This proves to be more difficult because of the large number of dependencies. But if we trudge through every commit message, searching every code comment, we find one case. From libuv. The same comment that we had just previously seen. So, if Ben's 1342 commits in Node core he doesn't have a single case of using a gender specific pronoun.
Based on this I would like to ask the community one favor. Please stop treating this as a case of sexism and gender preference. It absolutely is not. Those who have engaged in this discourse without empirical evidence are an equal threat to the community's health. This type of angry outcry and incessant flogging via social media only ingrains fear. Tweets stating they wish to have had the pleasure to fire Ben, or a stream of cleaver quibs stating what a leader is and isn't, aren't helpful to community growth.
So, one last humble time, please stop.
I appreciate that you're being thoughtful here, and I want to reply in kind. The issue is not Ben's intent, but rather his actions -- and what those actions can be reasonably inferred to convey. Do I believe that Ben suffers from gender bias? The only honest answer to that is that I don't know -- but it's also beside the point.
To describe an analogous situation: I had once had someone on my team who, over a lunch with a small group of co-workers, mentioned that he believed that it had been scientifically demonstrated that blacks had a lower IQ than whites. After lunch, I took him aside and I told him that if ever said anything like that in the workplace again, I would terminate him on the spot. He was shocked -- I don't think that he thought of himself as a racist (!), rather believing that was merely repeating what to him was a fact. But if he's not racist, he suffered from a lack of empathy in this regard such that his views certainly were indistinguishable from one. So, is he a racist or not? I don't know, and it doesn't matter: it is not up to one's coworkers to need to sort out these subtle differences in intent -- it is up to the rest of us to make sure that our actions clearly reflect our intentions.
So what if our actions reflect something other than our intentions? When our actions drift away from our intentions, we must make our intentions explicit. And it is here that Ben primarily failed: when Isaac overruled him and incorporated the change, he had an opportunity to clarify what his true intentions were -- and change his actions to better match them. (Had he done this, I think things would have cooled down on their own.) Instead, he doubled down -- and took a bold action that left even less room for interpretation as to his intentions. This was a huge, huge mistake -- and one that we can all learn by: take the time to stop, watch and listen -- especially when lights are flashing and horns are blowing. Take other people seriously. Listen to their concerns, even where you might disagree with them. And seek to find compromise positions that leave people feeling included and listened to. This is not just about playing nice -- it's also about being an effective engineer, and it's why we say that empathy is a core engineering value.