I had an interesting exchange last week. We had someone in the chatroom asking for help, morgan was doing his part, and I chimed in and proceeded to get attacked.
Me: I’m not 100% buying this, why are you using numerics?
Other: thats because you are stupid.
Um. OK. That was unexpected, but… a couple lines alter there was a “;)” so, I shrugged it off. I can take a bit of ribbing, and chose to respond by being self deprecating…
Other: you dont know unix
Me: Nah, not at all. Isn;’t that what happens when a guy starts singing soprano?
As a core, part of my job is to review code, change requests, and challenge even the assumptions already baked into the code. In this case, the code in question was something that origianlly existed to support PKI tokens, which are on their way out. Now the code was being used for Fernet key rotation. As you can see, it was an interesting technical discussion. But in focusing on the technical side, we all let the attack go un-responded. Then later:
Me: you called me stupid. Now you need to justify yourself
It might not be apparent, but the other person had got under my skin, and I responded. This, too was a mistake. However, at the time I thought I was being levelheaded. We had not had any attacks like this in our chat room yet, and I was not prepared for it. Now, if it is going to happen to anyone, I am glad it was be addressed at me; I can take it. But it is not about me.
Other: you have just proved over 100 lines that you truly are stupid, I will frame it and put it on the wall in austin
Me: go for it.
Me: feel free to insult me all you want. Do not insult other people in this channel.
Yep…I’m still too cocky. And you can see that the tension in the room rises. Other people were excusing themselves from the conversation. But you can see, I am finally starting to switch into oversight mode.
The discussion turns technical again. I’m now fully engaged. The problem set has to do with getpwnam calls inside containers…a lot like the issues we had BProc nsswitch module. Since I was irate, I was being detail oriented. But I think that the whole conversation about user identity inside versus out side the container is an important one to have. And then this:
Other: I will seriously kill you in Austin!
This was over the line. Based in the context, I did not take it as a real threat, and I still don’t. It was an expression of frustration of someone that thinks they know the answer having to justify it yet again. I know that frustration. But, I also know not to respond like this.
Other: seriously, are you lobotomized?
Then back to sane technical conversation, and later:
Other: what planet are you from?
To be honest, this is back to borderline to acceptable ribbing to me. I responded with a link to my My Alma Mater.
I needed to go do family things. As I left, I finally said what I should have said at the begining.
Me: let me make one thing clear. We are all professionals here. You’ve picked on the most mellow of people to insult, which is why you have gotten away with it. The rest of the core developers here are getting very antsy at your attitude. I am willing to help,. but if you keep this up, it will be a kickban, and I do have perms in this room to enforce that. Have I made myself clear?
Later, the PTL, coming back from dinner, had this to say:
I’m the keystone project lead. I’ve read the scroll back earlier and have determined that you have violated the code of conduct (https://www.openstack.org/legal/community-code-of-conduct/), and lost the privilege to be a community member. There was a threat of violence, even if it was meant as hyperbole, that is unacceptable; it chases away other community members and makes for a hostile environment. As a result i am performing a kickban. For information on how to proceed please see the code of conduct website.
Let me be clear, I am not blaming myself as the victim here. I am blaming myself as a community member that did not stop an abusive conversation at the start. It does not matter that I was the target of the abuse: I am core on the project, and it is within my role to maintain a positive environment in the chat room. I made a mistake in letting the other person off simply because it was me. I would not let someone abuse anyone else in my community that way, but didn’t realize that, in not addressing it, I was encouraging a hostile atmosphere. It is about the community, and the environment in the chat room, and the project.
So, we were all caught unprepared. Fortunately, no real harm done. If something like this happens again, here is how I think we should react.
The first time someone says something that is a personal attack, the conversation stops.
It should not be the person attacked responsibility to respond, although they are certainly welcome to do so. The response should come from the other community members, especially those that have Operators privileges in the in the room.
Post a link to the code of conduct. Here is is: https://www.openstack.org/legal/community-code-of-conduct/
If I am there, and you are the person attacked, and do not feel comfortable responding, send me a private message and I will step in. If not, find the operator of the room and ask them to respond. If they don’t, please send them a link to this blog, but also send a message to the Foundation member listed on the Code of Conduct page.
Its easy to feel sorry for the person that we kick banned. “Oh he was probably a dumb kid” or whatever, but remember, there are many, many people that get abused and just disappear. You would not take your kids to a party at a place that had a history of brawls in the parking lot. You don’t want a summer intern, new to Open Source and Open Stack and programming, to witness a hostile environment.
And I am still not certain it makes sense to allow calls that take numeric user ids from inside a container when the Name Service Switch module that backs them is not available. I am willing to be proved wrong, though, and look forward to discussing it with anyone that cares to discuss it civilly.