How to deal with toxic people
It's no secret that open source maintenance has its dark sides, and one of these is having to sometimes interact with quite ungrateful, entitled or outright toxic people. As a project's popularity increases, so does the frequency of this kind of interaction, adding to the burden shouldered by maintainers and possibly becoming a significant risk factor for maintainer burnout.
I've been maintaining a quite popular project for almost ten years straight now, and had to develop the one or other coping strategy to deal with these interactions, in order to not let them drag me down and negatively affect my motivation and mental health. In this talk I want to first give a classification of the most common forms of bad and toxic behaviour I've seen, and then share my personal approach to dealing with them, explaining why this has worked for me along the line.
In the end, the viewer should take away some concrete advice on how to handle possibly volatile interpersonal situations in the context of an open source project without compromising on their own mental well-being.
This session took place in track Community, Diversity, Carreer, Life and everything else and was classified suitable for none domain / none python by the speaker.
Transcript (auto)
Auto-generated from the recording utilizing Open-Source AI. Speaker labels (Speaker 1, Speaker 2) reflect diarization, not identity. Timestamps refer to the recording.
Speaker 1 [00:03]
Hi there, and welcome to my talk, How to Deal with Toxic People, Lessons from the Trenches of Open Source Development, here at PyCon TE 2022. My name is Gina Ahoyzke, but I'm also known as Foozle around the net. I'm a 39-years-old software engineer, maker, hobby baker, 100% nerd, and I've also happened to be a full-time open source maintainer on my project OctoPrint, which is the snappy web interface for 3D printers written in python and i've been doing open source now for most of my adult life and over eight years straight now of those just on octoprint full time and even almost a decade now on octoprint exclusively and you can imagine that during this time i've seen a lot of upsides but also downsides of doing open source work and today I want to talk about one very significant one of these downsides. So I want to show you today some of the most common bad behaviors that I've encountered and provide some coping strategies that have helped me to handle these behaviors. Some to diffuse the situation, some for personal sanity and in general I just want to try to provide a toolbar for maintainers and some guidance for open source users on how to deal with these situations. So let's first talk about bad behaviors that I have seen. What common bad behaviors are there for open source maintainers that they have to face? First of all there's the big big issue with entitlement from users. People think that you owe them and obviously only them something that usually boils down to some kind of misunderstanding of the social contract of open source or a misunderstanding of the realities of open source that open source projects are usually maintained by a small group or even just a solo maintainer and often usually a very very under funded maintainer to boot and i've brought some examples with me here today of paraphrased um of paraphrased examples of this entitlement in action, so to speak. Why isn't this obscure feature implemented already that I need for my personal workflow? How rude of you to implement something that I want. Wow, this bug is still open. Get off your lazy and fix it already. And yeah, sometimes the nerve of people just leaves you speechless. What else do we see? Well, there's also a ton of frustration that can fire back at maintainers. People who tell you that your work or your mistake just cost them so, so many hours of their life, who are ungrateful because they just ran into some kind of bug or just seem to be very frustrated about anything that they encountered right after an update. People who have run into an issue with a project or sometimes just something related to your project who just now want to vent the frustration at this problem that they faced and you are the first obvious victim of choice here to vent at so they do that and these situations are especially tricky because sometimes there actually is a real issue at the bottom of all of this some bug that you actually did introduce in your latest release or something that you need to address in your documentation for example and obviously as a maintainer you want to solve this issue but also you really do not want this kind of communication right it's just a bit too aggressive and speaking of aggressiveness there is also outright attacks that you sometimes have to face as a maintainer i do not want to repeat these things here to be honest but sometimes yeah stuff around this in this shape and form is something that you have to face when you maintain software. Sometimes it's from people who just want to troll you. Sometimes it manifests as the next step of entitlement or frustration. In any case, yeah, being at the receiving end of something like this is never fun and actually quite, quite exhausting. So how to cope with stuff like this then?
Speaker 2 [04:33]
like this then
Speaker 1 [04:34]
The most important part really here is first to disengage and cool down. Your natural first instinct might be to just jump right in and give them an earful in response to whatever they told you and whatever you feel would be the best response here. Just first of all, don't do anything. Because if you jump right in and escalate the situation, it will only make you look bad and trust me when i tell you that it will also really only feel good for a very short time what instead you should do is first of all let off the steam you just felt boil up in yourself offline personally i can really just recommend to get yourself a punching bag into your office this over there is actually mine and yes this is a real picture from my office and I have owned that one now since January 2019 and it has done a tremendous job in keeping me sane healthy and relaxed
Speaker 2 [05:40]
But if that is
Speaker 1 [05:41]
If that is not an option for you to add to your office, then maybe just do jumping jacks, run in place, take a brisk walk around the blog, anything that can get your heart rate up, really. So that is the important part, getting your heart rate up, really getting it pumping and burning some of this stress. If any of that is completely out of the question, I don't know maybe you're injured and you just cannot do that all of that right now or just you cannot annoy people around sitting around you or you're afraid of being looked at strange at least count to 100 and then back down again whatever you do do not immediately engage because the most important part here really is that your initial stress response cycle needs to run through and once that has run through then you can actually respond but not before okay stress response cycle what is that um your body is primed to respond to a perceived threat we've all heard this thing with the saber-toothed tiger in the bushes and you having this fight or flight response um when you when you smell it or when you hear it and then immediately being primed to run or to fight it or something like this and this does not only apply to saber-toothed tigers in the bushes but this also happens the same mechanism really happens when you have to face any of those toxic behaviors because your brain will perceive them as a threat and your body will prime yourself to fight or flee just as if it had somehow sensed the presence of a saber-toothed tiger and this priming now needs to run its cycle because otherwise you get stuck
Speaker 2 [07:31]
Why?
Speaker 1 [07:31]
so how this works inside your body is your brain sends out this this this chemistry stuff that tells your body to enter this fight or flight response and then it checks whether you did anything to acknowledge the the stressor so be it the saber-toothed tiger or the toxic behavior that you just witnessed and if you didn't then it decides oh well maybe you didn't get the memo and increases the the chemicals in your body so your fight-or-flight response gets
Speaker 2 [08:03]
Yeah, it gets amped up.
Speaker 1 [08:04]
amped up even more and now it checks again and if you still haven't reacted it continues so you are in in this kind of endless loop that keeps on going and going and going until you do anything that pretty much tells your brain yeah okay I got the memo I know there's something that is threatening us and I look I did something against that I ran away or I punched a punching bag or I or I just did jumping jacks, or ran in place, or something like that. Once you actually do this, your brain will realize, okay, this person actually now acknowledged that there is a problem, everything is fine again, we can carry on as usual, and reduce all this chemical cocktail in your bloodstream again. And that is what you want to achieve here. um completing this this initial cycle allows you to get your head back into gear and frankly it's also something that is really good for anyone to know how to do regardless of whether they are a maintainer or if they are just someone who regularly has to face other problematic situations in their life um i don't know complicated family members or just your average daily daily insanity out there so um yeah completing the cycle is important and you should really try to figure out what allows you to complete your stress response cycle as quickly as possible and be your usual calm and and and calculating self again so once you have achieved this goal and are actually back on track and actually have your head back in gear and are in full control of your emotions again what can you do to actually address these kind of behaviors one of the things that you can do is remind the people of the realities of of of what open source actually is and the realities here are that open source doesn't give anyone the right to demand anything open source is based on collaboration and cooperation instead and that also means that users need to do their part in solving issues or getting features implemented they cannot just go and demand that someone else does all the legwork they also have do their own part and obviously not everyone can code and that is totally fine because code is not the only thing that people can do to contribute to a project and to move things forward here. You can just be part of the community, help others that are facing issues with issue analysis or with advice, guide other people through problems, provide maintainers with everything they need to solve a problem, help out with documentation, help testing fixes. All of this is possible for everyone. You don't have to be a developer to do that. And all of this takes off the load and the responsibility that every maintainer has to carry and leaves them time to do other stuff like implementing features or fixes. And obviously if you give maintainers more time and room to breathe, the likelihood that they will actually get a chance to fix bugs that you are facing or implement features that you desire also increases. Especially if they notice you exist and are trying your best to help the project and only need, I don't know, something like half a day's work in order to be helped a lot on your own as well. So what I really do not like to do here and what I would also prefer if people stop doing it is just slapping whoever is in front of you there with a very passive-aggressive patches welcome. Because first of all, patches welcome just makes it sound like code is the only form of welcome contribution, which as we just pointed out, it certainly isn't. is a ton of other stuff that people can do in order to help a project move forward that doesn't even involve touching a single line of code. And so I would personally prefer if we as a community could stop, avoid doing that. With one exception though. When someone comes on your issue tracker and goes on and on and on like how they could implement or fix whatever there's something in hours or even minutes and be done with it in a segment and why do you not do that and this feature is so trivial and why do you not do that right away that is a point where i will actually say hey you know this is open source why don't you do it and show me how it's done maybe i can learn something from you here um usually nothing happens then but um in any case i think in this case, in this particular case, something like patches welcome is fair game. But in any other case, just don't. Okay. If this didn't work, what else can you do? You can remind people of boundaries. You can tell them that they just overstepped yours if they call you names or yeah put pull your competence in question or something like that um many people actually don't seem to even notice that they overstep your boundaries especially if they in this frustrated or blind or blind entitlement mode so um i've i've i've have it happened a lot that after i communicate clearly that i understand you have a problem here and i really want to saw that but this is not how we are going to talk to each other that um they took a step back went huh realized how they had behaved and apologized um it caught me by surprise as well i did not expect to get apologies out of that i simply wanted to lay down boundaries but it works surprisingly often um and after that a constructive exchange can happen again and usually also does happen which is really really nice and obviously this does not work at all if you yourself are still in attack mode and in saber tooth tiger needs to be punched in the face mode so see above again for first disengaging and and calming down again and running your stress response cycle if you cannot find the right words to make your point clear refer people to something like Brad Cannon's really amazing post, The Social Contract of Open Source, which I've also linked to here and which I can only recommend to read, even if you are currently not facing a problem or have to tell anyone else about how they just overstepped your boundaries, because it really drives the point home of how to communicate with people and where expectations might drift apart between maintainers and users yeah and if all of that doesn't work and the abuser still doesn't back down and still continues to attack you or vent at you or in general just yeah reduce the friendliness of the room they are engaging you right now there are always additional measures you can just refuse to work on whatever is upsetting them if it only affects them so for example they really want this specific feature to implement re-implemented and you just say i'm not going to do that after how you treated me maybe someone else will i will be happy will be happy to merge anything that anyone else does but after how you've just treated me, I certainly will not put any minute of work into that. But again, that is only fair game if it is something that only affects the person who mistreated you. If it is something that affects the whole community, I don't know, some kind of big bug that you just introduced in a last release, yeah, no, that is really not fair to do. What else can you do? Well, you can point the abuser to the door. You hopefully have something like a COC in place and you can quote that and you can tell people how they repeatedly ignored it and repeatedly went against it and then you can just tell them to please leave with the words like you are no longer welcome here or something like that. And if even that doesn't work and they still don't step down and I mean don't apologize but in any case don't don't stop doing what they are doing then the band hammer is always the option so forceful removal of the person from the channel in question or even the all of the channels of your project and i have done this in the past when there really was no other option left but it really should be considered the last resort what i find very very important to point out here is that um you do not have to accept abuse a lot of maintainers appear to think that they need to just yeah um need to just take all of that and i'm telling you no you do not for your for the sake of your project's community and a welcoming atmosphere and that it's really really better if you do not accept this kind of behavior you will immediately create a better climate for everyone and that also seems to attract more people who will also defend said climate so it doesn't just fall down to you alone as the maintainer speaking about maintainer all of all of what i what i just told you is is pretty maintainer focus but yeah what can the community as a whole of a project or of a whole ecosystem do to help deal with toxic people what i hear a really really a whole bunch of times during my years or during my life really as an open source maintainer is well yeah toxic people this is just like it is an open source and as a maintainer you're just expected to take this kind of abuse and live with that and yeah if if if you cannot toughen up to that then you're just made out to be a maintainer. No, no, I absolutely do not agree with that. You see, all of us as human beings, really, not necessarily as open source citizens or as users or whatever, but really just as human beings, we all know bad behavior when we see it and we can call out bad behavior when we see it. We can remind people of the code of conduct. We can remind people of unwelcome tone and attitude. We can flag and report bad behavior so that moderators and maintainers can take action on things they might not immediately have seen. And in general, we can just as a community step up for better treatment of each other. We do not have to leave all of this dealing with toxic behavior and toxic people to the maintainers alone. We really can step in, we can speak up, we can, as I said, we can remind people when they are behaving like that and how they are crossing boundaries with that. What I find important here is that at all points we still take the best steps that we can take to not escalate the situation. So if we feel like we are going into full-on attack mode then again we could we should just step back calm down run the stress response cycle before we respond again to something like that but we certainly can speak up download report and etc so in any case always remember yourself also when you're talking to people like that that there is a human on the other side so whether you're talking to toxic elements of your community or whether you're talking to a maintainer as a user or whether you as a maintainer are talking to a user there is always a human on the other side even if you are frustrated right now even if you're angry right now if push comes to shove get a punching bag run in place or do jumping jacks but do not respond to anything that angers you before you have run your stress response cycle responding in anger will always just escalate and make the situation worse that was my talk thank you very much for your attention you can reach me on twitter as at fusel and i will also put the slides up on fusel.net slash slide slash pycon de 2022 dot pdf also finally a thank you to all these nice people on unsplash that i have listed below there for the images that i was able to use for this talk here and thank you and i have you and i hope you have a pleasant day
Speaker 2 [22:05]
Bye
Speaker 3 [22:18]
Hi, hi, can you hear us?
Speaker 2 [22:23]
I can hear you.
Speaker 3 [22:24]
Perfect.
Speaker 2 [22:24]
Perfect. If you can hear me?
Speaker 3 [22:25]
If you can hear me.
Speaker 2 [22:26]
Yes. We have a bit of a delay here.
Speaker 3 [22:28]
thank you for your amazing presentation for your amazing talk I think oh I left the questions downstairs one moment all right so I see there are no questions online well oh no there are a lot of questions online it just took a minute okay uh first off uh lisa asks would you advise not to engage and answer at all if someone is thus rude online i think this route online.
Speaker 2 [23:14]
If someone is really, really, really rude, I think it is still important to point out that they are being rude. So if push comes to shove, just immediately ban them. I mean, if someone is so rude, like, I don't know, death threats or something like that, that you don't feel that they are actually even remotely interested in civil discourse with you, then I think it's fair game to either, if something like this happens on a public platform, platform like i don't know on github on discord or something that is something where i would actually report it to the platform itself if it escalates that much because then they will also be removed from the whole platform instead of just your project but that is a case where i would say yeah ban them and do not largely engage them just basically go like yeah this is not how we talk here ben um but yeah as i said banning should always be a last resort and simply not engaging them just like trying to ignore the problem it will not make the problem go away so there are some people out there who then will just go repeatedly message you on several channels i've had this happen where people where i was asleep when someone suddenly decided they had some beef with me and they messaged me on pretty much every platform and uh yeah it's important to put the foot down in such cases and make them go away. Just ignoring won't solve the issue.
Speaker 3 [24:37]
Thank you. What do you think of patches welcome for library? Library users are usually also developers.
Speaker 2 [24:44]
Yeah, I always think that this is too passive aggressive because even as a library developer
Speaker 1 [24:49]
developer.
Speaker 2 [24:50]
or a library user, rather, even if I'm a developer myself, there might be reasons why I'm not able to contribute a patch right now, but this problem is still bothering me. This still doesn't allow me, of course, to vent my frustration at the maintainer in question and be nasty in any kind of way, but still, patch is welcome. Only assumes the only meaningful contribution that you can do here in order to get this fixed is code, and if for whatever reason you cannot do that right now, then, well, tough luck. Your problem, not mine. And I think that is simply not the right message to send, regardless of whether the person in front of me is actually capable of contributing code or not. For example, I myself, if I now face a problem with the library, yes, I could fix it, probably.
Speaker 1 [25:30]
it probably
Speaker 2 [25:31]
given my capabilities but i have my hands full already with octoprint itself so i usually also
Speaker 1 [25:31]
uh
Speaker 2 [25:37]
just have to report and hope that stuff gets fixed instead of actually actually fixing it myself
Speaker 3 [25:43]
What are differences in reaction against toxic behavior in companies dealing with customers in comparison to open source?
Speaker 1 [25:52]
Uh, so.
Speaker 2 [25:53]
so i used to be in a in a i've been i've been actually working full-time an entrepreneur for eight years but before that i was
Speaker 1 [26:00]
software.
Speaker 2 [26:01]
uh software consultant uh in the industry and uh yeah i remember that it was tougher there also of course highly depends on the culture of the companies or if you are in a culture where you always have to agree with the customer no matter how they treat you that i is something that i would consider a huge problem and it's actually something where i would say this company is not a place for me um but yeah this is i guess something that you should also talk and discuss with your line manager and try to figure out solutions for that. Because in my humble opinion, also, if you're employed by a company, you should not have to be treated like that and be allowed to lay down some boundaries. Or maybe even the company could lay down some boundaries if a client is that toxic in behavior. Just not necessarily throw them out, but just silence them for a couple of days or something like that until they had a chance to cool down.
Speaker 3 [26:59]
Apart from only dealing with toxicity, how can one help and support toxic people to get less toxic?
Speaker 2 [27:07]
that's a good question so as i said my approach so far has been and and surprisingly successful approach has been to simply show them when they are being toxic and when they are misbehaving and when they are crossing boundaries that they often apparently aren't even aware that they are crossing them in the heat of the moment i have honestly no idea on more long-term solutions uh how to do that i think that is something where the whole community also has to step in and just constantly and with fervor remind people that, no, we are not talking to each other like that. No, we are still not talking to each other like that. If you want to go anywhere, then please treat the person across the screen as a human being that they are and not as your personal punching bag. So that would be my approach, but I have absolutely no scientific data or basis to say that this works.
Speaker 1 [28:02]
this works.
Speaker 2 [28:03]
But yeah, it's the only idea I have right now.
Speaker 3 [28:06]
Do use the same techniques also in other circumstances.
Speaker 2 [28:10]
Oh, absolutely. Yeah. So after I went through a breakup, the punching bag was also in heavy rotation. And also sometimes when something like just completely upsets me or something, when I notice I'm entering this loop, this feedback loop, where I'm getting angry and angry at something that maybe isn't even that problematic or something, or I get upset about something, it doesn't have to be anger. can also be despair or something, then I try to deploy the same techniques. Yeah, go for a brisk walk, go punch the punching bag, stuff like that. That's absolute wonders.
Speaker 3 [28:49]
Do you feel there's a gender bias in these sort of aggressions?
Speaker 2 [28:55]
i honestly don't know i feel that like some people just treat everyone like crap regardless of what they think they are i also i face the funny situation that a lot of people who use octoprint seem to think that i'm at least one man if not maybe 12 or something so they they i don't think that when they attack me they necessarily do that because i'm a woman but rather just because they have a problem the problem needs to be fixed now and they suffer from everyone is an npc but syndrome. So yeah, they just want their issue solved now, no matter what. So yeah.
Speaker 3 [29:29]
All right. I think we can close with Nick asking, not really a question, but thank you for Octoprint. It's amazing.
Speaker 2 [29:39]
Thank you. You're welcome.