nipy / nipy.github.io

Main website for the Neuroimaging in Python community
http://nipy.org
8 stars 10 forks source link

Code of Conduct Enforcement #44

Closed emdupre closed 5 years ago

emdupre commented 6 years ago

Should the nipy code of conduct include resources for reporting behavior that violates community standards? This could be a more direct way to enforce standards established in the code of conduct.

Other communities that allow for reporting of code of conduct violations include Software Carpentry.

matthew-brett commented 6 years ago

Oh dear - yes - that's been a big discussion, currently going on over at Scipy. One piece of data was a (to my mind) fairly severe and unpleasant application of the violations policy at software carpentry, where a woman was thrown off the mailing list.

arokem commented 6 years ago

This also came up again in a conversation on Twitter (starts here), and I proposed to move it here.

My two cents are that CoC can perform different tasks for different communities and in different contexts. This one is meant to provide guidance to a fairly loose-knit community of practice, and meant to help in guiding conversations, rather than in enforcing community norms.

As I mentioned in that thread, I foresee a use of this CoC that looks like this:

A: "I believe the way that you presented that argument doesn't fall in line with our CoC, because it is overly verbose (the CoC asks that you be concise). Could you please rephrase that?"

B: "Thank you for pointing that out. Here's what I meant to say: ..."

As Matthew mentioned, the potential repercussions of CoC enforcement can be rather unfortunate. For example, removal of (foul-mouthed) new-comers from under-represented groups from your community.

Maybe it is best that individual software projects also come up with these kinds of mechanisms on their own (e.g., https://github.com/nipy/nipype/blob/master/CODE_OF_CONDUCT.md).

arokem commented 6 years ago

In particular, to provide a bit more contrast: I don't agree with a statement that says something like "if it doesn't have teeth, it doesn't mean anything"

chrisgorgo commented 6 years ago

"if it doesn't have teeth, it doesn't mean anything" is exactly something I recently heard from a member of a underrepresented group in context of code of conducts.

vsoch commented 6 years ago

Could it be more general to allow for flexibility? For example, you could give very clear guidelines for reporting a violation, and then assign a representative group in the community to review it. So the site would generally make the points:

I don't think it would fit (on this level) to have specifics, but rather general protocol that assigns roles in the case of a violation. If/when violations arise, then the communities can parse over these things. Nobody really does/thinks about these things until they are forced to anyway :)

cMadan commented 6 years ago

I don't think we need to re-invent the wheel here, there are many good 'standard' CoCs to borrow from. My favorite is the Contributor Covenant: https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

matthew-brett commented 6 years ago

I made some comments on the contributor covenant over at https://mail.python.org/pipermail/scipy-dev/2017-September/022108.html

arokem commented 6 years ago

@chrisfilo : I understand why it may not fulfill all the requirements you might want/need for a community to provide even sufficient conditions for everyone to thrive, but I also don't think that makes it meaningless.

@vsoch : I think the position taken in the statement "Nobody really does/thinks about these things until they are forced to anyway" is also a tad too dark. Sometimes people can become more thoughtful and aware of their words and actions, and their consequences, and adopt certain behaviors even without a threat of sanctions. I will concede that there are certain important cases where this is not so, but I think that it's also inaccurate to state that it is never so.

vsoch commented 6 years ago

@arokem I agree that saying never is probably too global. There definitely are a minority that are preparatory, and proactive, and I'd hope for them to be the people in charge of things.

Unfortunately for most I think it's more common to be reactive, and deal with problems as they come up. It's the same reason that people's health tends to suck. People "eat all the things" until they get sick instead of thinking in advance, and taking preventative measures. Only when they get a bad bill of health do they step back and think about the different options.

effigies commented 5 years ago

Just want to bump this thread to note that the conversation over in nipy/nibabel#733 has headed in a CoC direction. It sounds like Yarik is going to create a CoC repo which can be versioned, and nibabel will adhere to that. I've proposed the possibility of a nipy/conduct team for community-wide enforcement contacts.

vsoch commented 5 years ago

A shared CoC repo is a good idea if the nipy umbrella adheres to it. We are doing something similar with opencontainers with an “org” repo - if there are additional documents to the CoC (security, contribution, etc.) perhaps nipy should make a similar more general org repo? Whatever is decided, it would be good to reference from here.

effigies commented 5 years ago

@vsoch Do you have a link to that repo, or is it a work-in-progress?

effigies commented 5 years ago

Oh, duh. https://github.com/opencontainers/org

vsoch commented 5 years ago

Sure! https://github.com/opencontainers/org

There is actually a lot of works in progress – see the open pull requests. The pull request that is adding the contribution docs is going to also render a web interface from the github pages of that repo too. See https://vsoch.github.io/man-opencontainers for an early example.

yarikoptic commented 5 years ago

Having a dedicated to coc only repository would IMHO provide better visibility etc. Security and development aspects probably could vary across projects

yarikoptic commented 5 years ago

And nipy/conduct (echoing team name) for the repo as well might be a more descriptive name

vsoch commented 5 years ago

That seems reasonable to me, @yarikoptic. I think the purpose of opencontainers having it in one place is for usability - the user can more easily find everything in one nice bucket. But given that the right links are given, it shouldn't be an issue - the user would need to do more clicking, if that matters. I would maybe link between the repos to be sure that once navigated there, you can still find the other paths you did not choose.

matthew-brett commented 5 years ago

Another plea for not calling it a "code of conduct".

Call repo 'process' or 'procedures' or 'policies' maybe?

vsoch commented 5 years ago

Code of Conduct is a known thing. Process or Procedures is general and it doesn't tell me enough. I think given the common use of CoC, if a repo is created just for it, it makes sense to call it "conduct" or something similar. On the other hand, if you are creating more along the lines of an "org" repo (that contains a code of conduct) "policies" or similar is logical.

Generally, if I'm a user I want my expectation of the content to match.

Others thoughts?

emdupre commented 5 years ago

Happy to see this thread revived !

I'm also very much interested in keeping the Code of Conduct name. Could you clarify your concerns there, @matthew-brett ? To +1 @vsoch's point, I think part of the appeal of the name is that it's a known quantity amongst developers currently on GitHub. And, for developers new to GitHub, many standard guides (such as Mozilla open leadership training) will point to that specific document, rather than instructing to look for a more general community-development framework.

I do think there's benefit in having a general policies / procedures / governance document, but in my mind that's a parallel conversation.

One thing that will be important is that if we have an org level document, then all developers within the org (or some significant portion or minority decision-making body, depending on how governance in nipy works) will need to agree to adhere to it. That would mean deciding on things like which code to use and how it should be enforced, if we agree to that.

matthew-brett commented 5 years ago

"Code of conduct" is indeed the approved name for this document, but I think that's a very bad thing.

As I've said elsewhere, "code of conduct" is an unpleasant, patronizing and authority-laden name that is excellent for giving the impression it's a kind of legal document, and making people a bit scared, but not for creating the kind of atmosphere I think we should aim for.

A 'code of conduct' is a suitable title for the rules of a boarding school, or a prison, but not for a community of collaborating peers.

I'm not against it being findable via "code of conduct", but I am against it having that main title.

vsoch commented 5 years ago

I disagree that codes of conducts have that much negative oomph - there have been several "big company" open source efforts to publicize their code of conducts, and GitHub describes it well to "signal a welcome and inclusive project" src.

I suppose we can all feel differently about them, so at best I can speak for myself. When I see a GitHub organization have a Code of Conduct, it's a very positive thing. It indicates that they care enough to write a document that essentially says to be good to others, and be accountable. It helps to make people feel safe, and know that they can (and how to) ask for help if something happens that feels off. There is no legal binding thing here. It is just a written document that (if anything) strengthens a community to have it.

emdupre commented 5 years ago

EDIT: I had typed this up before seeing @vsoch's response, so I'll include it anyway although we're saying very close to the same thing :)

Thanks for clarifying ! The nipy code of conduct is currently clearly marked as such, so I was a little confused about where and when these points were expressed. Sorry for missing them, and thanks for re-stating.

I think we have very different perspectives on the nature of a code of conduct. I'm sorry that you find that the document name unpleasant and patronizing and feel that it creates a fearful atmosphere. This has been the opposite of my experience with codes of conduct to date.

To be explicit about my own experience: I have found that having a code of conduct creates a clear set of expectations for the kind of community you hope to build, in the same way that contributing guidelines create a clear set of expectations for how you expect development to proceed. I am generally relieved to see that developers have set a clear code of conduct in place. If I was contributing to a repository where they were not explicitly laid out and prominently displayed (as is the case for CODE_OF_CONDUCT.md files, where GitHub will highlight them when making contributions via the online UI), then I personally would doubt the community's commitment to upholding them.

But both your negative experience and my positive experience are obviously only two opinions -- I'm sure everyone on this thread has their own perspective on this issue. I think the larger question in play is how do codes of conduct more generally affect open source communities like nipy. This is especially important as open source has even worse diversity in contributors than tech generally. There, I cannot find anything indicating broad negative impacts -- obviously there will be edge cases, but from interacting with organizations such as Mozilla it seems that, on the whole, codes of conduct bring more benefits to open source than not. So I personally think embracing them is more likely to yield a healthy community.

Garyfallidis commented 5 years ago

@emdupre can I suggest removing enforcement from the title of the issue? We are not the police, neither the government.

matthew-brett commented 5 years ago

Just for reference - we've been through these kinds of discussions in a lot of detail at https://github.com/jupyter/governance/pull/23 and https://github.com/scipy/scipy/pull/7963 .

To @emdupre - I hope it's obvious that I (and I think everyone else here) agree(s) that it's a good idea to have a clearly defined set of rules, and a procedure for what to do when people break the rules.

The discussion though, is about tone. For the title "code of conduct" - it's just a point of English usage - especially "conduct". It implies a parental or us-them relationship. Think of all the phrases you've come across in English that have "conduct" in them - I think you'll find they are they nearly all have that connotation.

So - as you see me arguing strongly in the two discussions linked above, it is essential for the document defining the community, of whatever name, to be a) friendly and informal, matching the way we want the community to be b) easy to read and c) that it makes a clear distinction between desired community discussion (friendly, tolerant, thoughful) and the specific things that we will act against, such as, for example, explicit insults, thrreats or harrassment. But the tone is key. We have to convey that we know that the vast majority of our members will continue to act as they have done for the last decade or so, in good faith, and that we will make all possible attempts to resolve disputes peacefully, and by consensus.

vsoch commented 5 years ago

I can understand your logic @matthew-brett , but you're putting on blinders to the fact that this is a GitHub organization, and in the frame of a GitHub "Code of Conduct" it's far from anything parental, prison-like, etc. It is absolutely essential that someone looking for a known document called the "Code of Conduct" be able to find it, and you've given no suggestion that ensures this would still be the case naming it to "policies" or the like.

So - as you see me arguing strongly in the two discussions linked above,

Based on the observation that this is the third thread you've had to "argue strongly" in, do you think that might imply that others don't think there is a negative subtext in calling the markdown file on GitHub a "Code of Conduct?"

it is essential for the document defining the community, of whatever name, to be a) friendly and informal, matching the way we want the community to be

Agree! Many (more recent) Code of Conducts read very friendly and comfortably. This is a different thing from what the title is. The title of the file has purpose to identify and find it, and the content sets the tone. And based on what I'm seeing in all these threads, and across GitHub organizations I'm a part of, a "Code of Conduct" is a known document that does not carry a negative bias. It's overall a positive thing to find. It reflects well on a community. If, on the other hand, you think the actual content of the CoC is too harsh, that is something we can work on.

b) easy to read

Agree again, but this is still addressing the content of this markdown file. This is a different thing.

and c) that it makes a clear distinction between desired community discussion (friendly, tolerant, thoughful) and the specific things that we will act against, such as, for example, explicit insults, thrreats or harrassment.

Agree! This is important

But the tone is key.

Tone -> Content Discoverability -> Title

We have to convey that we know that the vast majority of our members will continue to act as they have done for the last decade or so, in good faith, and that we will make all possible attempts to resolve disputes peacefully, and by consensus.

It sounds like your concern is strongly with the content of the file, and that the name might not be something you are as comfortable or familiar with, as compared to many others. Might I suggest one of two things. You can have faith in what some of us are saying,stick with the known file name, and address your concerns with respect to the content of that file. Or, you can make suggestions for how the file name could be different and still have the file transparently discoverable by GitHub and a user looking for it. It's important to put yourself in the mindset of the user, for example:

Case 1:

without the named CODE_OF_CONDUCT that Github finds and highlights too.

"Where is it?" The user cannot find the file that outlines the code of conduct, and is left distressed, possibly stops contributing, everyone loses. This has happened to me personally.

Case 2:

with the named file that GitHub highlights

"Looks like I can contact X person to talk about this." The person reaches out, gets support, there is probably no action, but the situation is resolved and the user continues to contribute. In the time when this happened to me, I wish I had this option.

matthew-brett commented 5 years ago

It's true that I have had to argue strongly more than once, and it's also true that that is because other people disagree with me, strongly.

Unfortunately, the reason I had to do that, particularly for the Jupyter code of conduct discussion was:

a) There's a major bandwagon effect going on here, where it is generally assumed that all right thinking (by which I mean, progressive) people will support a strongly-worded anti-harrassment document, called a Code of Conduct and b) There's a further assumption that this document can't cause any harm and c) People get very angry if you disagree with with a) or b) - so most sensitive people of any gender, avoid the discussion, because it is too unpleasant. d) People whose political background is from the North America, tend to have a very different set of political sensibilities than those from Europe. As an example, nearly all the French liberals I know are shocked and appalled by the tone of documents that North American liberals generally find proportionate and acceptable.

The people that I was talking to were very upset about the direction the community has been taking, and very reluctant to say that for fear of being attacked. Their fear was justified, as I think you'll see from the Jupyter discussion.

vsoch commented 5 years ago

a) Did you not read my suggestion? The wording of the document is different from the name. I suggested that if you have concerns with the wording then you can come up with a first draft for suggestion. I would also want to know which others here have issue with the title?

b) (Again, scoping to the title) Can you please describe how the title "Code of Conduct" has caused harm? I have an experience of not being able to find one causing me significant distress to the point I left the community.

c) Tone is again content of the file.

That's a fair thing if people are upset. Why don't we take a vote across the nipy community to first ask what to call the document (using all suggestions here) and then we can work on the content within?

vsoch commented 5 years ago

I also don't feel like arguing with you anymore, it's really stressful, and I'm done. Have a good week.

effigies commented 5 years ago

Just to clarify the scope of this discussion, are we considering modifications to the existing code of conduct (established in #1) apart from detailing procedures for breaches?

I've read through the Jupyter and Scipy codes and the discussions that Matthew linked. I have more detailed thoughts, but the gist is that I find the Scipy one more tonally welcoming while not being noticeably more indicative that breaches will be ignored and tolerated by the community. However, since we already have a code, I'm not sure that the full discussion is relevant.

If there's a desire to change the content of the code, as a statement of principles, I would suggest that could be another discussion. Similarly, if there's a desire to change the title, another discussion would be appropriate there, as well.

To limit myself to the topic of enforcement, how do people feel about Scipy's Reporting Guidelines and SciPy Code of Conduct - How to follow up on a report? Would these be a useful model?

I admit I'm assuming that the overall consensus is that we should have some formal process for flagrant violations of community norms, and that much of the pushback such as @Garyfallidis's "We are not the police, neither the government." is largely a matter of connotation and not implying a greater disciplinary scope than is intended. If that is the case, I for one am happy to consider other names, as long as people who've experienced harassment or abuse can quickly ascertain the appropriate response, as @vsoch says. If that's not the case and the concept itself is repugnant to some, it would probably be best to establish that now and each project will then have to decide how to move forward.

arokem commented 5 years ago

I don't have much time this morning to answer as lengthily as I would like, but I will try to answer these last questions.

Bottom line: I think that the nipy org is the wrong scope for the practical mechanics of code of conduct violation and response. I just think that (in contrast to scipy and jupyter) nipy as a community of practice, rather than a project, is not the right level to pursue formal enforcement mechanisms and this is something to be delegated to projects. For example, nipype is undoubtedly a part of the nipy community, and yet the project has its own CoC and enforcement mechanisms. I see no conflict between the nipype CoC and the nipy CoC, and see the value of having both. If you think (as some seem to do, https://adainitiative.org/2014/02/18/howto-design-a-code-of-conduct-for-your-community/) that the lack of formal enforcement mechanisms make the nipy-level CoC document harmful, I am willing to consider removing it altogether, in favor of specific CoC for individual projects. As I noted above, I don't think that's necessarily true, but I might lack the right perspective.

I have a lot more that I would like to say here, but I have a kiddo sick with a fever running around the house and a stack of applications to two different programs that I need to review, so I will leave it at that.

On Mon, Mar 4, 2019 at 7:52 AM Chris Markiewicz notifications@github.com wrote:

Just to clarify the scope of this discussion, are we considering modifications to the existing code of conduct https://nipy.org/conduct.html (established in #1 https://github.com/nipy/nipy.github.com/pull/1) apart from detailing procedures for breaches?

I've read through the Jupyter and Scipy codes and the discussions that Matthew linked. I have more detailed thoughts, but the gist is that I find the Scipy one more tonally welcoming while not being noticeably more indicative that breaches will be ignored and tolerated by the community. However, since we already have a code, I'm not sure that the full discussion is relevant.

If there's a desire to change the content of the code, as a statement of principles, I would suggest that could be another discussion. Similarly, if there's a desire to change the title, another discussion would be appropriate there, as well.

To limit myself to the topic of enforcement, how do people feel about Scipy's Reporting Guidelines https://docs.scipy.org/doc/scipy-1.2.1/reference/dev/conduct/code_of_conduct.html#reporting-guidelines and SciPy Code of Conduct - How to follow up on a report https://docs.scipy.org/doc/scipy-1.2.1/reference/dev/conduct/report_handling_manual.html? Would these be a useful model?

I admit I'm assuming that the overall consensus is that we should have some formal process for flagrant violations of community norms, and that much of the pushback such as @Garyfallidis https://github.com/Garyfallidis's "We are not the police, neither the government." is largely a matter of connotation and not implying a greater disciplinary scope than is intended. If that is the case, I for one am happy to consider other names, as long as people who've experienced harassment or abuse can quickly ascertain the appropriate response, as @vsoch https://github.com/vsoch says. If that's not the case and the concept itself is repugnant to some, it would probably be best to establish that now and each project will then have to decide how to move forward.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/nipy/nipy.github.com/issues/44#issuecomment-469303381, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHPNoEJVWR8-v2Z5gwzD7PkaSBC8Gvuks5vTUErgaJpZM4P6_ff .

chrisgorgo commented 5 years ago

I just want to chime in to support @vsoch argument. CoC is an established name across many different projects/organizations and changing it would cause confusion that I don't think is worth it.

arokem commented 5 years ago

Yeah - I also don't have a problem with the name, unless it violates some expectations. For example, if you think that it's harmful to have a document called Code of Conduct, that doesn't include a private email address you can send an email to, if you think it's been violated.

matthew-brett commented 5 years ago

That's an excellent point - that if anyone is going to apply the rules in the relevant documents, it's not going to be the Nipy community, but the projects themselves.

Maybe that does suggest a compromise, where each project decides if it wants a "code of conduct" document, and what it should be called.

I'm sorry for the distraction, and I do agree with @vsoch that the tone of the document is technically separable from the name, in that we could call it something terrible and then be very friendly, welcoming and transparent in the document, but obviously, the title has a tone too. I think it's very unfortunate that "Code of conduct" is the name most people expect here, and if it was me, I'd call it something different, like this:

# Community code

This is the document that many other projects would call "code of conduct", 
but we wanted to distance ourselves from the tone of claimed authority evoked 
by the word "conduct".

And then have another page called "code of conduct" that directs people to this page.

But that's me. I think Ariel's right, that's not a doc for the Nipy community, but for the projects.

vsoch commented 5 years ago

I haven't kept up with the conversation, but wanted to share this quickly as it's relevant to the discussion - an organization can have a known shared set of community standards, pull request templates, etc. I also just tested if GitHub pages still works for a .github repository, and looks good.

effigies commented 5 years ago

Alright, thanks for the discussion, everyone. I agree it looks like the way forward now is for the individual projects to decide their own approaches. We'll pick back up over at nipy/nibabel#733, and see where we find ourselves.

While I hope a narrower scope will help us reach a consensus, I want to make clear that the entire community is welcome to participate in that discussion, so please feel free to chime in, especially if you see our conversation heading in a direction that would make you feel unwelcome if you saw that in a project you were considering joining. (And feel free to email me if you don't feel comfortable. I will launder concerns, and try to represent them fairly.)

I do appreciate that we have a community-wide statement of values, so with regard to @arokem's comments, I don't think we should remove it.

emdupre commented 5 years ago

I agree with @effigies here. I think it makes the most sense to go ahead and close this issue, since it was initially scoped at adding enforcement to the community-wide code -- from discussion, it's clear that the current general consensus is against this addition.

Other topics brought up in this conversation are certainly worthy of further consideration, but unless and until those conversations are started in other issues, I think it will fall to individual projects under the nipy umbrella to make their own decisions around codes of conduct and / or their enforcement.

Thanks again, everyone !