Skip to content

Instantly share code, notes, and snippets.

@trevnorris
Last active December 29, 2015 21:19
Show Gist options
  • Save trevnorris/7729322 to your computer and use it in GitHub Desktop.
Save trevnorris/7729322 to your computer and use it in GitHub Desktop.

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.

@trevnorris
Copy link
Author

[...]Ben decided that their feelings didn't matter as much as whatever opinion he had about the specifics of the change[...]

I don't disagree. Again, the point of this post was just to clarify to those who got the wrong idea. This was never meant to pardon Ben from what happened. Simply to clarify what actually did happen.

I feel like your reaction is that I'm trying to get Ben off the hook from the actions that were taken. That was never my intent, and I feel like I tried to make that pretty clear in my post.

@mikeal
Copy link

mikeal commented Dec 1, 2013

@trevnorris also, about the people calling him sexist, I didn't see that so much. There was a lot of stuff flying around about sexists and bigots but it was mostly directed at commenters who were trying to seek some sort of justification for the language staying as is or dismissing the efforts entirely. being that Ben said very little about why he didn't want the change people took offensive at his initial dismissive tone and later at his hostile reversion of the patch. those weren't acceptable, and overwhelmingly other people thought that it wasn't acceptable either, and only a few people went as far as to assume Ben's motivations were sexist in nature.

The problem was that the thread itself, as always, became about the sexism inherent in the comments trying to provide greater justification for the gendered language. This fueled twitter comments to point at "the issue" as a sexist incident.

@trevnorris
Copy link
Author

@mikeal And the purpose for this post was to nip the possibility of inflating ideas about Ben being sexist in the bud. That's all. Really, honestly, that's all it was meant for.

@mikeal
Copy link

mikeal commented Dec 1, 2013

@trevnorris

I feel like your reaction is that I'm trying to get Ben off the hook from the actions that were taken. That was never my intent, and I feel like I tried to make that pretty clear in my post.

no, not at all. i understand what you're saying, i just don't agree that the reaction to his behavior was much more than a reaction to the actual behavior. sure, some people took it further, but for the most part people were upset by his visible behavior and not because they inferred some great sexist motivation. i think that, if that were the case, the reaction would have been much greater. we've seen incidents like that fairly recently in other communities and the reactions were of a whole other proportion.

@trevnorris
Copy link
Author

@mikeal We've typed a lot for mostly agreeing. Seems like the disconnect was agreement on the quantity of community members that "took it further". Well, let's just say that I want to make sure it goes from X% to 0%. :)

@isaacs
Copy link

isaacs commented Dec 1, 2013

You and I have already discussed in private, and agreed, that his actions weren't sexist. This post is to inform the community that may have gotten the wrong idea in a clear and concise way what did not happen. Nothing more, nothing less.

@trevnorris Yeah, I'm agreeing in public now so that other people can see. Don't spoil the surprise by telling them that we practiced it already :)

@mikeal
Copy link

mikeal commented Dec 1, 2013

@trevnorris agreed :)

@trevnorris
Copy link
Author

@isaacs. Haha. Sorry, everyone. Spoiler alert.

Now, time we enjoy our weekend. I still have a kicking opening talk to prepare for Node Summit. :)

@bcantrill
Copy link

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.

@trevnorris
Copy link
Author

Do I believe that Ben suffers from gender bias? The only honest answer to that is that I don't know [...]

This should have been explicitly stated in your blog post. You clearly mention here the issue isn't his intent

[...] but rather his actions -- and what those actions can be reasonably inferred to convey.

Instead there are direct accusations in your blog post that his actions were driven by intent:

[...] to reject a pull request that eliminates a gendered pronoun on the principle that pronouns should in fact be gendered would constitute a fireable offense [...]

[...] rather the insistence that pronouns should in fact be gendered.

And while not explicitly stated in the following, there is strong inference to the same:

To me, that insistence can only come from one place: that gender—specifically, masculinity—is inextricably linked to software [...]

(emphasis mine)

I would take much less issue with your blog post had it been worded as you've explained it here, but to conflate the person's intent with what could be "reasonably inferred to convey" is irresponsible. Instead you are allowing people to believe his intent was to be gender biased.

Whether intention would or wouldn't affect your decision to fire an employee is beside the point. Readers should be allowed the right to their own judgment of the situation based on all the facts. Isn't that a cornerstone of transparency?

@trevnorris
Copy link
Author

@ago I'm sorry about this, but I'm going to use moderation privileges and remove your comment because it does not address the topic of discussion here of Ben's intent vs his action. But thank you for taking the time to respond, none the less. :-)

@ago
Copy link

ago commented Dec 2, 2013

No problem. :) sorry for offtopic!

@bcantrill
Copy link

@trevnorris: Well, I do believe that he rejected the original pull request on principle. "Trivial" is an overloaded term in this regard -- and at the time, I gave him the benefit of the doubt that he meant trivial in terms of technical scope, not as a value judgement. But that benefit was essentially exhausted when he attempted to revert Isaac's acceptance of the patch. This does constitute insistence on the point -- to the point that he's willing to not only ignore what everyone was saying on the issue, but also upend the governance of the project. This is a serious transgression, and it pushed it to the point that the intent no longer mattered. And it still doesn't: this isn't a question about whether Ben suffers from gender bias, because Ben is allowed to suffer from gender bias; it's a question of whether Ben's actions are acceptable in an entity that -- as an organizational principle -- does not tolerate gender bias.

I believe that it's also important to understand my perspective in this: I woke up Saturday morning to many people publicly demanding to know whether Joyent -- as an organization -- condones gender bias. Even if there were not laws that prohibit such bias, we would not practice or tolerate it -- and I had a responsibility to my company, my team and my own conscience to make that unequivocally clear. To the degree that you felt or feel that my blog entry did not contain necessary nuance with respect to Ben, I apologize -- this was a deeply unfortunate situation all around, and I did the best that I could to balance the facts and their many complexities with the need for public, timely, absolute and irrefutable clarity on this important issue.

I would be happy to discuss in person this week at NodeSummit if you'd like (or we can continue online, if you prefer); I admire your concerns here (even where I don't necessarily agree), and I want to be sure that you feel that they've been adequately considered and addressed...

@trevnorris
Copy link
Author

@bcantrill Thank you for continuing to clarify your position.

As far as continued conversation on the subject, if it continues I'd prefer it happen online. Being able to reread my thoughts before they're expressed has always proven to be my most constructive means of communication when addressing potentially sensitive subjects. So, I request we table this during NodeSummit and focus on enjoying the massive agenda. :)

Concerning your plight on Saturday morning, I can understand the feeling of urgency you must have had to make your and Joyent's position clear based on the immediately expressed community perception. In that haste I doubt much, if any, time was taken to considerately review the post. To this I won't give much thought as I've learned -- paraphrasing from a movie I much enjoy -- not to "[...] second guess an operation from an armchair."

From your explanation I understand that, when the severity is sufficient and with specific topics such as gender bias/racism/bigotry/etc., you do not distinguish between intent and action. Please correct me if I'm wrong.

I'd like to address the topic with more candidness, and hope we've built enough rapport that you won't take offense.

First I would like to point out this situation happened on the libuv repository. Had this PR been on the Node repository I'm confident it would have played out differently.

Over the last year Ben has mentored me, and is the primary reason I am a Node core contributor. Well, that and Isaac actually suggesting I ask Mozilla to sponsor me (thanks Isaac! :-). I fully recognize my opinion is bias because of this, but I hope you can understand why I feel the need to be involved as I have and stick my neck out. Possibly even where it's not wanted, but I've always felt true community has a proper sense of loyalty. So I'm acting on it.

While Joyent does own the copyright for libuv (which I recognize is accompanied by much more that legal stewardship) the majority of personal ownership, IMHO, goes to Ben. He has written a massive amount of libuv's code and is currently responsible for 40% of all commits. Either directly or indirectly, a commit to libuv affects far more projects than would a commit to Node. It has amounted to a really amazing project, and all I've seen from Ben is his commitment to keep it as such.

Unfortunately it now seems too clear that the Joyent Engineering Team's directive and Ben's project leadership style are very different. This has culminated to where we're at today, and I'm concerned about the long term ramifications. Not for Node, but for libuv.

My honest hope is that the relationship can mend enough that Ben feels incentive to continue working on libuv, and Joyent feels his contribution is still important. So when more of the dust has settled (hopefully soon), I'd like to see this happen.

I do feel Joyent should clarify they realize Ben's actions were not out of gender bias or malice. I also have a personal opinion of what should happen on the other end of this mutual olive branch, but that's not a conversation to be had here.

Again, I offer this hopefully without offense. I have tried to tread as carefully as possible to help keep tempers low and understanding high, and I'm now entering the third hour of trying to carefully construct this post. Fortunately Isaac is usually there so I can focus on the code. Unfortunately on this one we differ in opinion so I'm left to fend for myself.

Finally, I would like to point out there has been no shortage of community members that has expressed disappointment at Ben leaving.

@trevnorris
Copy link
Author

@tvdx Same as above, I'm afraid your comment is off topic. It's been removed, but please feel free to chime in further if you have something topic specific.

@gpakosz Likewise. This has proven to be quite sensitive, so I'm trying to keep any comments or arguments focused on the topic.

Thanks both of you for jumping in and contributing. I'm really trying hard to keep this specific, so please address me directly if you feel like I've inappropriately removed your comment. :)

@bcantrill
Copy link

No offense taken, so no worries on that front. As for the review of the post: it was pretty thoroughly reviewed inside of Joyent -- everyone who was up and online took a look. The words remain my own and I bear responsibility for them, but I feel confident saying that its core reflects consensus on the engineering team. And yes, I think it's fair to say that when conduct begins to breach core principles, one is judged (and must be judged) by actions -- regardless of intent.

In terms of libuv without Ben's day-to-day involvement: it will survive. I've worked on several large (and long-lived) source bases over my career, and they have all survived surprising degrees of turnover. Indeed, that turnover is often healthy: it gives people who wouldn't necessarily venture into a subsystem the chance (if not the mandate) to stretch themselves -- and allows the source base itself to be moved in new (and often necessary) directions. Node has survived post-Ryah; libuv will survive post-Ben.

Finally, as for Joyent clarifying the intent of Ben's actions: I don't really feel it's on us to do that, because we were much more focused on the actions than the intent. (That is, Ben denied being a misogynist, but he was never accused of being one.) If Ben wants to clarify his intent, he's welcome to do so, but I personally think it's probably best to apologize and move on...

@jmar777
Copy link

jmar777 commented Dec 2, 2013

@trevnorris - Thank you for your post. I'll do my best to respect your moderating efforts, and keep this as on-point as possible.

@bcantrill - Reading through your responses, I feel the need to comment on the idea that the intentions can be rendered irrelevant here. Intentions do matter. So much so, that I would argue that it is common sense. The difference between vandalism and accidental destruction of property, murder and involuntary manslaughter, a roughhousing injury and domestic abuse, etc., are all intent. This is not to say that good intentions (or lack of bad intentions) get you off the hook for the consequences of your actions. But we do, however, treat someone who accidentally dropped their kid differently than we would treat someone who intentionally beats their child (for the sake of hyperbole).

I would also like to suggest that even using your own reasoning, Joyent has an obligation to clarify their initial message. Specifically, while it may not have been your intent to label Ben as a misogynist, that is indeed the result of your actions. Regarding your response to @trevnorris...

Finally, as for Joyent clarifying the intent of Ben's actions: I don't really feel it's on us to do that, because we were much more focused on the actions than the intent. (That is, Ben denied being a misogynist, but he was never accused of being one.)

... this appears to be an appeal to your intentions (or lack thereof with regards to mislabeling Ben). Your intent may have been to focus on his actions, but your comments exceeded those actions in scope. For example,

[...] to reject a pull request that eliminates a gendered pronoun on the principle that pronouns should in fact be gendered would constitute a fireable offense [...]

... speaks to the why of his actions, not merely the actions themselves.

I've been engrained in the Node community for a long time now. I may not be a core maintainer, but I have been a contributor over the years and spend a great deal of time working in and for the Node community. That is to say, I care deeply for it, and that is why I am chiming in at all. Community aside, however, it also pains me to see Ben personally chased out of the community. I can't defend his actions, and quite frankly I shouldn't have to in order to assert that Joyent crossed a line here, and needs to own up on their side as well. We do indeed need unequivocal responses to sexism, and I cheer Joyent's proactive position on this. I think we could also use a little "benefit of the doubt" in some situations as well. Ben's mistakes could very easily have been a learning situation, where everyone came out better on the other side. Joyent could have clarified that they don't endorse gender bias without any public shaming or labeling. And I could have just kept my nose out of this :)

I don't necessarily know how to put a ribbon on this, but I would urge you to give special consideration to what a reader could reasonably assume based on your words, and clarify where you may have implied more than you intended. Inasmuch as Joyent's corporate blog was used as the platform for this message, I believe Joyent has a responsibility in this regard.

@bcantrill
Copy link

@jmar777, I appreciate the thoughtful discourse here -- but what I can't get past is Ben's attempt to revert the commit. That, to me, is the moment that this crosses into an area where intentions no longer matter. And I didn't, in fact, label Ben -- but I do believe that his actions are indistinguishable from someone who is acting on the principle that pronouns should be masculine, and so did a lot of other people...

@yeroc
Copy link

yeroc commented Dec 2, 2013

@bcantrill, Ben's reaction and response in reverting the commit seem quite consistent with the reaction of someone angry over someone not getting sign-off on a commit and quite unrelated to the content of the commit itself? Especially, after he had himself denied the commit. Is that not the most logical explanation? People tend to be territorial and such reactions are common. In any event, it seems that the best thing would have been for you to reach out to Ben personally first to get clarification on intent.

@jmar777
Copy link

jmar777 commented Dec 2, 2013

@bcantrill, thank you for the reply.

That, to me, is the moment that this crosses into an area where intentions no longer matter.

I have to admit that I am struggling to understand this. It seems to imply that, prior to that moment, Ben's intentions did matter. Additionally, his actions in reverting the commit (regardless of intent) resulted in things being in their initial state, and the state they remained in after he initially closed the PR. The only real difference at this point, as far as I can tell, is not the action itself, but the fact that he was now in a position of insistence against the PR.

At this point, IMO, it was quite reasonable to imagine that came from a bad place. This seems to be the same conclusion that you made yourself:

To me, that insistence can only come from one place: that gender—specifically, masculinity—is inextricably linked to software [...]

In truth, I have a hard time not seeing intentions being implicit in that statement, though. It does not refer to the action itself, but where it came from.

I can't help but see this in your most recent comment as well:

but I do believe that his actions are indistinguishable from someone who is acting on the principle that pronouns should be masculine

This seems to imply that the actions themselves (regardless of intentions) are condemnable for their resemblance to actions performed with bad intentions.

Further, tying the issue back to a lack of empathy (in the original post) further elevates the importance of the why, which is in large part synonymous with the intent behind the actions.

Here's the crux of my concern, then:

  • I see several assertions that, at some point, intentions should cease to matter.
  • I don't see a compelling argument for why that is the case.
  • I have a hard time reconciling the actual statements that have been made with that view altogether.
  • However, if indeed intentions do cease to matter, that seems to happen only after a very fuzzy line has been crossed.
  • On the other hand, if intentions do matter (which is clearly where I stand), it seems they were not sufficiently considered.

@bcantrill
Copy link

@jmar777: I hear you, and we might be just getting to the point where it's a judgement call on which reasonable people can differ. It's obviously blurry: I assume that we agree there is some point where it's reasonable to ask "why are you doing this?" and some point where one changes to "I don't care why you're doing this -- it's unacceptable." To the degree that we disagree, it might just be about where those points are. Reverting the commit of the project lead to resolve an issue that goes to inclusiveness -- to me -- crosses into the realm of unacceptability. To you, however, it merits follow-up questions. (But surely there is a point where you too would not stop to understand intent and assume that the actions spoke for themselves.) I think that's fine -- we just have a slight disagreement here, and I'm probably a victim of some additional information here (like what exactly Ben said privately to Isaac when he did this, which was very, very nasty).

As to why there's this distinction, I don't know what to tell you other than human behavior is nuanced and complicated, and not all things are equal. I can certainly understand if you don't find that sufficiently compelling (as a software engineer, I'm not wild on nuance myself and definitely prefer things to be right or wrong), but that's what it is. I think it's okay that we disagree here, BTW -- and I think it speaks highly of you that you're willing to engage in an earnest discussion on such a charged issue...

@jmar777
Copy link

jmar777 commented Dec 3, 2013

@bcantrill, thank you again for taking the time to reply. I think you are correct on all counts there, regarding both where we do and where we don't agree. And as you said, that's okay. I don't doubt at all that there is a point at which I would concede that actions speak for themselves, and as hardly needs to be stated at this point, that simply wasn't the case for me in this scenario.

Human behavior is indeed nuanced, and while I may wish things were handled differently, I certainly don't envy the position you were in. And, perhaps if I had full knowledge of what was said less publicly, that would impact my thinking as well. As it stands, I really do appreciate your time and persistence in addressing the concerns that have been raised. Thanks again. :)

@trevnorris
Copy link
Author

Sorry to everyone whose comments I've removed. Forgot to mention this earlier: I consider this thread closed, and any additional comments will be deleted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment