Discussion about recent CoC events

Note that it’s already been split off. Nothing more to do here :smiley:.

1 Like

Tim, I was not a participant in the event, but after I came across the posts I felt just as others have (and probably more that didn’t say anything felt too). I lost all motivation to interact with that part of CPython again, until I saw that the CoC took the incident seriously. The other incident that was widely discussed on the mailing list has left a bad taste in general for me to interact through those venues.

I don’t approve either of far more overtly threatening things people have directed at me. … They hate my guts, and I hate theirs. So it goes.

I guess it’s up to you to accept that for yourself, but that’s not at all a healthy way to foster a community, and should not be a required mindset for others to feel welcome to participate. If people are making threats to you or someone else, that should be addressed. If I had to worry about someone who was consistently abrasive to me or others every time I made a contribution, I would not make a contribution.

The argument that the CoC should be more like a government’s legal system can have merit, to draw ideas for how to improve (or what to avoid). But the CoC does not have the same scope, resources, or consequences as a legal system, and has other needs geared towards a smaller community. I think at this point you need to lay out exact changes that you have in mind, otherwise the things you’re saying are coming off as dismissive to me at least and are hard to respond to without being vague and going in circles.

8 Likes

David, you make some good points, but I’m bowing out of this now. I don’t believe there are easy answers, and if I had major time to fully address it, I’d run for the SC myself. As is, Raymond Hettinger’s vaguely expressed concerns seem closest to matching mine, so I’ll vote for him too.

I haven’t been advocating for anything specific here. I have been advocating for people questioning the process. Those also serve who only toss tomatoes :wink:.

3 Likes

OK, thanks. It sounds like the CoC group has taken things seriously so far, and are also committed to improving their process and documentation as they learn more based on feedback like this.

2 Likes

I find myself agreeing strongly with this sentiment, although with the caveat that we should resort to removing people from the community entirely as a last resort (and suspension as a second-to-last resort). From my perspective, the Stefan case might not have gone this way had it been kept internal while Stefan deliberated w/ the SC instead of him publicly resigning. In an optimal scenario, he would have received help in improving his communications with others and then re-integrated back into the community, but it doesn’t always work out that way sadly.

Having to constantly feel like one is under threat of personal attacks and deal with non-constructive negativity repeatedly leads to more frequent burnout, which is enough of an issue in open-source development as it is. It also results in turning away newcomers to that area, increasing our “bus factor” substantially. That’s why I think that repeated cases of abrasive behavior shouldn’t be swept under the rug simply because that individual has made impactful contributions.

So rather than prioritizing tolerating the behaviors of (an) individual(s) that make everyone else’s experience worse off, it’s much more important to prioritize fostering a positive environment that people find rewarding to engage in. This makes contributing in general more enjoyable and greatly improves the long-term sustainability of CPython, IMO.

8 Likes

Let me comment this topic as a member of the current Steering Council, but also as an individual.

What we tried to do in the SC is to forbid some specific behavior that we no longer tolerate (but have been tolerated for years), rather than targeting specific persons.

Having to handle CoC violations as part of the SC was really stressful and painful for me. We spent multiple meetings about these issues and it was painful for everybody. I was really not comfortable with the two bans that we applied, but I’m proud that we did it and I don’t regret. Having to justify our actions is not easy for me neither.

Sadly many evidences are private to protect victims, but also the abuser. Please remind that the first core developer who has been banned was not named for a good reason, to give them a chance to change their behavior. We did our best to handle these CoC incidents privately, sadly for one case it had to be made public.

In another topic, Raymond wrote:

Honestly, a few years ago, I had the same feeling: Python is a very welcoming community and there is no conduct incident at all!

Then I met some (non core dev) developers in person who reported to me privately various kind of abusive behaviors in the Python community. I started to pay more attention to that on python-dev and bugs.python.org, and I started to see more and more patterns. Months after months, I got more and more reports in private.

Why not talking about these issues in private? Well. When the abuser is more famous than the victim, other people will first believe the abuser if the victim decides to start talking. It’s not only about the popularity, but also about technical skills, gender, origin, etc. More generally, the victim always feel ashamed of being a victim and prefers to attempt to forget what happened, rather than making it more known.

Multiple core developers suffered from various kinds of abuse, but this is little known. Since people talked to me in private, I cannot share what they told me without breaking their trust. I can only suggest you to ask around you if someone got bullied or harassed once.

I now always suggest to report CoC violations to the PSF conduct working group. I don’t want to be the judge since I’m far from being objective!

In my experience, it’s difficult to discuss how to deal with CoC violations with someone who has never been a victim. For example, people who have never been a victim usually see a CoC as a threat; they don’t understand that the purpose is to protect, rather the opposite.

By the way, I have been harassed multiple times as a core developer, and I don’t want to talk about that in public neither. All I can say is that I had a burnout and stopped from contributing to Python for 3 months, partially caused by this. I was really close from stopping completely to contribute to the Python project (I only decided to continue because I got a great opportunity at Red Hat).

The SC followed recommendations of the PSF Conduct Working Group.

The SC was not in charge of deciding if messages violated the PSF CoC.

14 Likes

I agree, the quoted statement by @rhettinger is just plain misleading. I didn’t even want to comment on this topic before I saw this quote.

I myself been a witness and even a target of a few abuse incidents (many of which I reported and still have evidence of) way before the SC became a thing. Some of which were way harsher than the links that @tiran shared. That said, this is a tricky topic to discuss openly because many here don’t want to publicly share the especially damning evidence as it will irreversibly harm the abusers. This is something that I, for example, don’t want to be responsible for, so I trust the SC to act on it.

The fact that those issues were essentially ignored in the past and that the abusers just continued the abuse is reprehensible. As is the fact that many core developers I know prefer to not open PRs against certain std lib modules because nothing but headache and shame would result out of that. I’m very happy that we started to pay attention to these issues. Those who cannot fathom that they behave wrong and that they hurt other people (sometimes continuously) for no reason whatsoever should not be missed.

12 Likes

I expect there’s not a person on the planet who hasn’t been the target of abuse, although openness to talk about it varies across subcultures and times. For example, #MeToo was no surprise to women - or to men who knew women.

It’s good to get those out in the open. But some abuses are more damnable than others. Alas, some level of it appears part of the human condition.

As one of the oldest people here, I cut my teeth on Usenet, including from before comp.lang.python’s first day. It was anything-goes. Not only was there nobody “official” to complain to, there was no enforcement mechanism possible. That’s where eternal “flame wars” started, the source of Godwin’s Law, and so on. python-dev rarely still resembles that, and usually only for relatively brief periods.

I doubt anyone with that background would even consider filing a CoC complaint - it’s just not in our view of possibilities. I personally grew a much thicker skin, and became a master at crafting killfiles (filters that removed selected posters and topics from view, based on writing regexps).

And, yup, I’ve seen relatively little in the Python world that matched the level of verbal abuse that was routine in “the good old days”. If I asked people for instances of abuse, I expect I’d have no time for anything else but reading them, so I don’t ask :wink:. Everyone has some story, if they care to share it.

A CoC standing against “serious” abuse is 100% fine with me. Less than that and it gets ever dicier. In my own life, from time to time people I’m engaging with threaten to file a CoC complaint against me. I send them back a link to the reporting email address (which seems surprisingly hard to find! best I know, the mailing address is only buried near - but not at - the bottom of https://www.python.org/psf/conduct/ ).

I suppose they think “what an ass! he thinks he’s so special he can’t be touched!”. But I’m actually thinking “what an ass! I’m calling your bluff - my dispute with you is purely over the technical merits, and/or your repeated failure to show any sign of digesting the background info I organized for you.” Threats of “calling the cops” are also a form of abuse. But too minor to fret over.

You’re in good company: the abuse heaped on Guido over the assignment-expression PEP caused him to finally give up his BDFL position. The abuse heaped on me regarding the same PEP kept me mostly off python-dev ever since too (although I remain its primary moderator, where I view my actual job as preventing spam from getting posted).

It’s OK if you name the modules, and also OK if Raymond is their primary maintainer :wink: But, seriously, without naming them it’s impossible to guess whether “abuse” is at work. I mentioned Raymond because he is the primary maintainer of several std modules for which people make an endless number of suggestions for change. He’s most likely to reject suggestions, which might come across as some kind of abuse, but to his eyes is always for good reasons. It took me months to convince him to add a piddly optional initial= argument to itertools.accumulate(), which is one of the few times I actually disagreed with him about the merits.

2 Likes

I’ve no problem with disputes over technical merits that avoid name-calling and other abusive language. I also trust that SC has no problem rejecting superficial CoC complaints.

To clarify, when I was talking about the abuse I witnessed I specifically meant incidents that involved a fair share of abusive language, often peppered with gaslighting.

Funny enough my own eyebrow-raising experience was about contributing to the decimal module.

The problem often isn’t about the challenge of pushing an API change. The problem often revolves around having excessive friction with mundane code maintenance.

In other words, a module author should not retain veto over everything affecting their code forever. And that’s something we still struggle with at times in CPython.

3 Likes

Sure, that’s totally one way to run a community. But it’s not the only option, or necessarily the best. I also grew up in the “anything goes” days of open-source mailing list interaction, and I can navigate it just fine when I have to. But I increasingly find myself unwilling to try, when there are so many other projects where the community is more welcoming, supportive, and pleasant to work with.

We can decide what kind of community we want CPython to be. We can decide that thick skins and killfiles are key skills for contributors, and lose the contributors who don’t want to deal with that. Or we can decide to make this a more civil, welcoming place, and lose the contributors who don’t want to deal with those restrictions. I think a lot of us would prefer the former, and that requires a functioning CoC and active enforcement of some kind.

14 Likes

Nathaniel, sure. I wasn’t advocating for going back to the wild west. Just explaining for the youngsters why the oldsters may be less exercised over transgressions that wouldn’t even have merited a comment in the bad old days.

There is a range of possibilities here. I don’t want to live at either of the extremes.

2 Likes

That isn’t an issue anymore, right? Its maintainer is gone.

I read this as meaning it was a current problem:

You can open all the PRs against decimal you like now, and they’ll just be ignored :wink:.

I don’t deny it, but it’s too abstract for me to be sure of what you mean. For example, there has always been resistance to massive multi-module “mechanical” changes, starting with Guido’s dislike of them (because they have a non-trivial chance of introducing bugs, and even when they don’t make git blame far less informative).

FWIW I’m not happy about the new status quo. :confused:

Unfortunately I don’t feel that this is the right venue (at least for me) to discuss this in non-abstract form. Sorry.

Perhaps the right way of approaching this problem would be to have an informational PEP with communication guidelines on how minor API and code maintenance changes should be proposed, argued, rejected, or accepted, as well as covering various code ownership related questions. This sounds like an obvious thing that all software engineers should have good intuition about, but at least my experience suggests that it’s not.

6 Likes

BTW, offense is in the eye of the offended. And I actually am somewhat offended by that you snipped my later:

A CoC standing against “serious” abuse is 100% fine with me. Less than that and it gets ever dicier.

which made it crystal clear that I was not advocating for a return to Usenet standards, but view the fragment you quoted as a point on a spectrum of possibilities. My initial reply to you should not have been necessary. Setting up a strawman caricature to tear down is a form of rhetorical abuse.

But, no, I do not want a CoC so petty it would allow me to hassle you over that. Usenet is one end of the spectrum; living in a North Korean re-education camp is the other, and I don’t want that either. Did you advocate for a North Korean re-education camp? No - but turnabout is fair play :wink:.

4 Likes

I’ll provide my experience as part of the community then (not just about CoC issues).

I am profoundly physically disabled; pretty much all I can do now is talk and use 3 fingers, and eventually I will become completely paralyzed. Also, my family is Jewish (I’m atheist though) and some died in the holocaust.

I’ve never, ever felt that I was treated differently by the Python community in bug trackers, in pull requests, in person or video calls, in IRC, etc. I’ve encountered folks who seemed to be having a bad day, and even those who are notoriously abrasive. That’s just life and never did it feel personal. I have always felt included by virtue of our shared love of the language and the value it brings to the world.

Over the past few years, however, the atmosphere doesn’t feel quite as welcoming as it used to be and I find myself getting less and less involved, making acquaintances/friends, etc.

For starters, there has been a cultural shift within the tech scene and increasingly in Western society at large where people prefer to have minor interpersonal disputes arbitrated by third parties, in our case the SC. This change is actually an area of active research in psychology and sociology. One of the seminal papers is Campbell, B., & Manning, J. (2014). Microaggression and Moral Cultures. Comparative Sociology, 13(6), 692–726 (access on sci-hub here).

A key insight is:

a morality that privileges equality and condemns oppression is most likely to arise precisely in
settings that already have relatively high degrees of equality

That sounds like what the Python community has been for years: very egalitarian and inclusive.

A consequence of this shift is spurious accusations of CoC violations. Consider this one against Łukasz Langa: https://github.com/psf/black/issues/1536

While the person seemed well intentioned, it’s obviously ridiculous. The truly unfortunate part though, is that with the current culture of most members in Python leadership positions, it’s plausible that feature would have been implemented had the issue been left open or if a tweet about it gained popularity.

Another problem is self-censorship. Not only do I restrict what I say in friendly real-life scenarios (jokes, political talk, etc.), but I also find it stressful to decline or critique contributions for technical reasons even when being as polite as possible. If there is difficulty even imagining this scenario, consider then that a monoculture may have already been formed here.

Second, I find the emphasis on diversity to be a bit insulting. I don’t want my defining characteristic in people’s minds to be something I cannot control, basically becoming just a statistic.

The underlying assumption is that phenotypic expression somehow leads to certain thought patterns, or another version, an identity grouping is so homogenous that any member may adequately represent the group.

That is false. On basically every measurable metric (interests, IQ, etc.) the difference within groups is greater than that of between. Not only is that notion empirically untrue, but when applied to skin pigmentation, that is quite literally the definition of racism.

We all should be thought of as individuals, each with our own unique experience and ideas.

13 Likes

I completely agree with this perspective.

1 Like

My feeling as well. This community is becoming increasingly bigoted and intolerant.

2 Likes

From the perspective of general civil discourse, particularly against those with opposing viewpoints, I would certainly agree. I think that we could collectively do a much better job of thinking before we respond to others and considering that not everyone else shares the same exact perspectives (even more so with the global presence of the python dev community).

1 Like

Including me, certainly. :slight_smile: However, my concern is also with shutting down people (using threats of coercition) rather than merely responding to opinions (unless you meant “respond to” as “act against”).

The fact that we’ve banned two core developers who mostly kept to themselves, made statistically little fuss on mailing-lists, and were passionately focussed on the one or two topics they are experts in, speaks a lot to how “healthy” the community has become.

3 Likes

No, that’s incorrect.

The SC banned one core developer for three months after he posted racist and demeaning theories on a public mailing list on more than one occasion.

The second core developer was not banned. He left on his own accord while he was under investigation by the CoC WG and SC. He attacked at least four core developers, their employers and at least one contributor on one or more occasion.

5 Likes