Closed CoralineAda closed 6 years ago
Surface level differences between 1.0 and 1.4:
@indrora Thank you so much for breaking down each addition and change. I'll make sure and carefully look at each of the clarified, expanded, and added sections (in addition to a general review of the code itself).
This code of conduct is a Trojan Horse for ideologues like Ada to needlessly inject identity politics into your project. Ada is a well-known anti-white, anti-male, Marxist activist.
I suggest this as a possible alternative - https://github.com/domgetter/NCoC
Identity politics only ever hurts the community in the end. Don't let ideologues get their claws into your community.
@bryanedds You criticized @CoralineAda for "needlessly [injecting] identity politics into your project" since she is a "well-known anti-white, anti-male, Marxist activist," which is just identity politics. Why don't you point out the problems with the code of conduct she is advocating, instead?
@CoralineAda Is there an easy diff available for 1.0 vs 1.4?
@dpyro https://gist.github.com/davismj/f9dff8ad56a10145e6040802a3216cd3/revisions
It's not straightforward.
@dpyro that was my intent with this comment.
It's not a perfect diff, more of a changelog. You should read both side by side and compare.
@davismj - Is it somehow identity politics to identify someone who is engaging in identity politics? No, as a principled moderate, I refrain from engaging in identity politics because it is racist whether it is used by the left against whites or by the right against non-whites. Horseshoe theory is a thing.
I've written an article about codes of conduct in general here if you'd like to have a look - https://medium.com/@bryanedds/codes-of-conduct-e49a63de4058
The criticism is general, but relevant and documents just a portion of the history how ideologues have used and abused this type of social legislation.
For specific criticism of this particular code of conduct, to me it seems obvious - there are no definitions for the terms that it builds itself on. It doesn't define 'harassment', it doesn't define 'hateful / hate', it doesn't define many of its terms. Of course, this is intentional, for that very ambiguity allows it to be selectively enforced against political enemies and never enforced against political allies.
If you want to adopt any sort of community code, you had better be damn sure you've taken the time to analyze the intent and practical outcome of it before foisting it upon your users. The people who spread these things are ideologically-possessed and absolutely poisonous to software communities.
MLK already solved this issue decades ago. He said, "I have a dream that my four little children will one day live in a nation where they will not be judged by the color of their skin, but by the content of their character."
"...not be judged by the color of their skin, but by the content of their character."
I say, throw this racist code of conduct garbage in the trash where it belongs. Don't be another of its willing victims.
@indrora After reading said CoC I think, that those very wide "examples" of positive and especially negative behavior do not really help, it can be spun in too many ways. I do not think it's worth incorporating that into project.
To clarify: I'm not criticizing you, just responding to you since you're the one provided said changelog.
Interpretation and enforcement of a code of conduct are the responsibilities of project maintainers. They already have the power to manage their communities; a code of conduct spells out the values for the community to follow and communicates and codifies an enforcement procedure.
It does not grant power to project maintainers that they didn't already have.
If interpretation is totally up to maintainers, I honestly do not understand the value of it outside of "we'll copy-paste that template that uses a long-winded and not very concise language to tell everyone to not behave like jerks in the eyes of the community".
Given how the Licensing change fell out, it seems to me that the CoC is working just fine already.
@KienHui An update to the language is useful (scope definition lets maintainers take off their maintainer hat and speak with their own voice, not the voice of the project, clarification of process and rectification, plus maintainer good-faith language). If 1.0 was being suggested, I'd have arguments against it. 1.4 cleans up a lot of issues with CoCs in general w/r/t scope specifically.
@siziyman unfortunately, these terms are rather loose for a good reason. For a legal example of the issue, check out 378 U.S. at 197 (Stewart, J., concurring) , a US case on obscenity, which helped bring the phrase "I'll know it when I see it" to popular use. Another form of this is the Elephant Test: It's hard to describe, but you can point it out.
You will always find people who will find edge cases to work around the letter of the law and be untouchable because they haven't broken the rules at worst, and at best you get...
Let's say we define a specific action as "harassment" -- for some arbitrary level of specificity (e.g. "harassment is talking to someone after they asked to not be talked to"). Someone will inevitably say "But I did stop talking to them!" -- after sending them a thousand messages, plus sending terrible things to their friends and family, etc. Here, they have not violated the letter of the law (they stopped contact after being asked to stop) but still did something which is, under various reasonings, childish and a form of harassment. Yet, there's a good argument to be made that this rather defeats the purpose ("spirit") of the law.
Does this sort of thing happen? Well, yeah. Using more ambiguous words and handling them on a case-by-case basis makes them easier.
For small, one-or-two person projects? A CoC is overkill: Friends being friends will regulate a lot. For bigger projects like this? It helps the dust settle after a scuffle like this a little more cleanly and with fewer bystanders taken out along the way. It was in place, it was used (even within the retroactive scope of the new one) cleanly, and the fallout now is settling much faster than it would have without.
While I disagree with the random personal attacks against the creator of this issue, I do agree that a shorter CoC would be better. The odds of anyone reading through a document decrease the longer it gets, and frankly, you could do just as much with a bullet-point list of things that are explicitly defined as against the CoC and a couple sentences explaining that the maintainers will be judging subjectively, on a case-by-case basis, and looking at the spirit of the CoC, not the letter. Maybe even have a bullet that explicitly forbids trying to argue the letter of the CoC in an appeal (e.g. the harassment example that @indrora brought up, which I've seen at least twice on other areas). It's more effort on everyone's part, yes, because maintainers can't point to section 3, subsection 4, paragraph 1 and ban and contributors can't really be certain if certain hot-button issues will get them banned, but if we all do our best to be reasonable adults and hold others to that standard as well then it's a lot less likely to have people causing issues because they totally did technically stop.
YMMV, though. I'm new to this community, and while I do have some experience moderating several (relatively large; on the order of thousands of members) communities, every one is different, and what works best for one may not work at all for another. I'm not trying to say "this is definitely the best", just proposing an idea which is, in my experience, easier in the long run than what's proposed here.
To be clear -- I'm not saying there should be no moderation. Just that we shouldn't limit moderation to specifically what's disallowed in a page of (quasi?) legalese.
I completely agree that a long, unreadable code of conduct is pointless as if people don't read it it's just used by the maintainers to justify what decisions will be made anyway. It's better to have a code of conduct that accurately and concisely summarizes what restrictions you want to place on the community for the purposes of streamlining the project, and keeping it that way so you don't get much debate. Moderators should, and will, make whatever decisions they'll make anyway, and the community may or may not agree with them. There's no point in codifying a long and complex code when it won't - and shouldn't - be followed anyway, as no long enough code can accurately summarize and/or detail all the complexities of human interaction and code issues that may come up in an open source debate.
The more vague a document becomes the less reliable of a benchmark it becomes. It starts out strict then just becomes a pick-and-choose who you want gone since you anything could be in violation. Certainly doesn't harbor a community outside the likes of people like Jamie. (Basically political adversaries, not doing that much for the project)
I read through the proposed CoC and it reads concise and direct to me (relative to size/scope/complexity of subject matter). I strongly support CoCs in general because they establish common expectations of what behaviour in the project space should look like and I think implementing this one is a Good Idea.
Disclosure or whatever:
@Sieabah Again, a fundamental assumption of my idea is that we're all reasonable adults. If someone decides to abuse their power to make something a clubhouse for their friends, especially on a project with as many contributors as this, that's neither reasonable nor mature. No, it's not secure against abuse by moderators; it's very intentionally omitting that. If your moderators are really intent on abusing their power, they'll abuse it either way. Case in point, Jamie, who abused his status in this repo to (at least attempt to) dismiss all dissent. A long CoC doesn't prevent that; all it does is make it harder for normal people to understand what's acceptable and what's not in a community.
A code of conduct is just a "here is how you're expected to communicate".
Of course we are all reasonable adults but that doesn't mean we all share the same background or know exactly the same stuff. There is a lot of miscommunication in open source (between said reasonable adults) that causes conflict and problems.
A code of conduct is just a way to say "here is what we expect" (nothing controversial there) so people can focus on making great software.
We've had good experience in Node.js with the updated CoC and a good (strict) moderation policy. We've made a lot of potentially controversial changes in the last year and have had very few incidents. As a project that traditionally struggled with this sort of thing I think it's working out so far.
I recommend you update to the latest version.
@nic-hartley the way I've traditionally looked at it is this. The first paragraph describes what the standards for communication are:
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
Which is basically "keep exclusionary stuff out of the project, be respectful and remember we're all human" but explicitly spelt out because different cultures see things differently.
Then it gives examples of good and bad behaviour. The next paragraphs is about enforcements:
I do not expect people to read the CoC very often - it should be obvious that discriminating based on age or religion isn't cool - but I'd expect them to refer to it when uncertain or when/if they want to report something.
@benjamingr I think I phrased my original comment badly. That first paragraph has dozens of words for the same thing: being a dick about some specific characteristic.
That paragraph is actually a good example, so let me rewrite it to fit with my idea of keeping it simpler:
To keep things open and welcoming, every contributor and maintainer promises to make participating in our project and community harassment-free for everyone. Everyone.
There's a lot less noise about specifically what characteristics aren't OK to judge on, no room for loopholes about "well I was judging based on testicle size, and it just happens to correlate with gender, but that's not my fault" (again, a real excuse, and one of the ones that made me take a permanent break from moderation), and it still gets the same message across. It's also a lot easier to read, at least IMO, and it doesn't remind me of EULAs or ToSes -- i.e. legal documents that you typically skip over and just click 'I accept'.
I think I phrased it badly in my original comment. My issue isn't with the overall length -- I mean, it's barely over a page long -- but how long it takes the proposed CoC to get its whole point across. There's definitely a word for that, but I'm completely blanking on it.
As for the rest of it, a lot of it is the same. I'm wholeheartedly for the ideas in it; I just don't like how they're expressed from a practical point of view. To cherrypick one other paragraph:
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
Compare that to:
Project maintainers can and will remove or edit any contribution that goes against this Code of Conduct. They also can and will ban any contributor, even long-standing ones, for violating it.
Hopefully that gets across what I mean, despite being a rough shortening that could use a lot of polish.
Anyway, to wrap up my ironically long point about length: Using fewer words is better. The proposed CoC uses too many.
I've said my piece on it, though, and I feel like if we keep talking about this we're both gonna repeat the same things over and over. Agree to disagree?
@benjamingr We've had good experience in Node.js with the updated CoC and a good (strict) moderation policy.
Remember when the board had to issue a statement emphasizing the expectation of of equal CoC enforcement amongst leadership? https://github.com/nodejs/node/issues/15011
I think this CoC *is* good, until this line:
"This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community."
A year ago in the Node community: Group-A
used this clause to push Person B
out of a leadership role for a retweet
and other things that were never disclosed to the public. Group-B
retaliated by reporting Person-A for year-old tweets
(I wanted to leave names and groups out). There are other mystery violations that remain unaddressed & undisclosed eg: "Discuss alleged misconduct of our community manager" https://github.com/nodejs/board/issues/62
If you adopt this, make sure to clarify what public places & individuals are "in-scope" for the project. It would have been helpful for Node back then.
(footnote: @nic-hartley The contributor-covenant
is very popular, thus you are likely to have read it already. Personally, I would prefer to read one popular, long CoC just once opposed to reading a bunch of shorter CoCs.)
@jakeNiemiec see "when an individual is representing the project or its community" typically means they take the time to act on behalf of the project.
Without details (that is, since the tweets have vanished into the ether, the content of the tweets) there's no good way to have a good conclusion drawn. There is an expectation that one's own personal twitter speaks for themselves -- However it appears that there were other outstanding issues, but again without knowing the contents of those tweets, there's no good way to know what language that individual was using (personally, I think tweets should be immutable after some time, but that's just me)
If anything, I would suggest up to @CoralineAda that a clarification be made on what "representing the project or community" looks like, changing the wording to something closer to
[...] applies both within project owned spaces (e.g.bug trackers, mailing lists, forums, etc.) and some publicly facing spaces when acting in the name of the project (i.e. project social media accounts, personal statements made on behalf of the project).
Benefit of the doubt should be given to personal, non project-run public interactions. individual contributors are responsible for their interactions in public spaces and their opinions may not be those of the project or community: Disagreement or controversial opinion is not a violation of these standards, harassment of an individual or persons in the name of the project may be a factor in a violation of community standards.
Is it wordy? Yep. It's not perfect and I suspect this isn't the place to hash out that specific detail. I think the response from the Node team is not the greatest but it appears that the person in question had become an issue both outside the project and within.
If someone wants to be a less than stellar human being on their own time, so be it. If they're going to say inflammatory things about someone and have "Developer on libyoyo" in their social media profile, that gets into a gray area, and may be considered a factor among several.
@jakeNiemiec note that all that happened before the moderation team and the new moderation policy. These sort of things weren't rare in the past but they have become rarer.
If anything, I'd say that just like in lerna the CoC works.
@nic-hartley
I've said my piece on it, though, and I feel like if we keep talking about this we're both gonna repeat the same things over and over. Agree to disagree?
Wait, I'm still learning - I've explained how I understand the current CoC and you stated you don't like the fact you believe it is prone to trolling and misinterpretation. Is that a fair assessment?
A logical next step would be to propose an alternative or write down what you don't like in each part of the CoC so it can be discussed.
It sounds like you have a background in moderation and you disagree with the way I see things - so I'm definitely not in the "agree to disagree" camp, I want to hear you out.
@benjamingr ...okay, at the risk of coming across as incredibly condescending, let me try to lay it out as though you're a five-year-old. (albeit with bigger words, and badly, because I suck at talking to kids)
For reference -- I've done a bit of moderation; I wouldn't really call it a "background", though. My background is very much in coding, and I'm the world's biggest fan of KISS everywhere. Also, just for fun, every example I'm gonna mention is a real person I've met over the course of trying to moderate, either in an official capacity or as a random high-rep user on Stack Exchange, and giving up when I realized I hate people. So much.
In every community, there are two groups I like to call "trolls" -- the people who know what they're doing is against the rules and just want to get other people angry -- and "dicks" -- people who genuinely believe they're right, but are equally genuinely not the type of person you're looking for in the community you're trying to build. And, yes, there are people who don't belong for every community. Trying to make a community welcoming to everyone is admirable, but impossible. In lerma's case, it seems pretty clear that we don't want to include anyone who honestly and openly believes women shouldn't code, even if they're in any other situation neither sexist nor mean. The names aren't perfect (the dicks aren't even close to always being dicks in the normal sense) but I've been using them for so long I'll confuse myself if I try to change right now.
The point of a CoC is to specify two things: who the dicks and trolls are in this community (albeit by action, not by name, unless you're wingdings) and what happens to them. To use my previous example, that means the lerna CoC might have a bit like:
Judging someone's contributions for anything but the contribution itself, and especially any irrelevant characteristics of the author like gender or race, is not okay. Even if you're just joking. If you do that, expect anything from a deleted comment to a permaban, depending on how bad it was and how often you do it.
A few key differences from the same point in the proposed CoC:
I don't think the CoC is prone to trolling and reassessment. Every CoC will eventually be changed, and trolls will always be there. I think it handles trolls badly by giving them leverage to argue points that really shouldn't be arguable, and I don't like that it tries to be one CoC for a wide variety of communities. I'd rather read a hundred short, simple CoCs -- and judge based on that whether I'd be a good fit for the community, which doesn't really require memorizing it -- than a hundred long, possibly slightly varied as disputes arose and clarifications were made, CoC. Even worse if the CoC is never changed, and instead all that context ends up rotting basically invisibly on Meta-- uh, I mean, in the moderation team's discussions. I want something that's a quick, easy-to-read document to inform me as to what's welcome and what isn't, and if that means I'm not welcome, so be it. I might be sad or disappointed, but I'm a reasonable person, and I understand that no one is welcome everywhere.
I hope that explains my position. I offered to agree to disagree because it seems like you just have the opposite stance on the last bit, and frankly, my choices there aren't based on logic. They're based on me having read too many legalese CoCs and being tired of it. It's perfectly reasonable to disagree, and I'm not going to be able to convince you that you're wrong and I'm right, because that's just an opinion, and they don't work like that.
Anyway, I hope that explains my view, because I made the mistake of typing this all out on mobile and my thumbs are cramping up something fierce. There's a couple more things to say, but neither is a deal breaker, just more context around this philosophy of mine, so I'll spare my thumbs and leave them unsaid.
Overreliance on CoCs leads to the exact kinds of situations described before in node, and IMO should be avoided for project maintainers making specific decisions as tuned to the situation. I haven't yet seen one where a lacking CoC or a 'stronger' CoC has actually made a difference other than making people think they've improved something by codifying their beliefs anyway.
@rfree-d
Full attack on this project by the SJWs had started. It's a tarp. [sic]
...what? The "full attack", presumably, being the one contributor who had a decent idea, executed it horribly, and when they started being toxic at literally everyone, was justifiably removed and their bad contributions reverted? That doesn't jibe at all with my understanding of an SJW. Could you explain?
Or just admit you're an SJW in denial, and that randomly insulting large groups of people is counterproductive. But I'd bet you're more eager to insult people and feel like you're contributing than you are to admit any faults of your own. You're probably gonna say I'm in league with the SJWs, or one myself, because clearly no one can disagree with you unless they're irrational and suffering from TBI. I can't wait to see.
(P.S. Someone ping me when that comment is deleted and I'll remove mine. Or just delete this, too. It's a direct response; it won't make much sense if what it's responding to is deleted.)
SJWs are usually left leaning idealogues that stand for up social issues on other people's behalf. The most notable occurrences are I remember are Hugh Mungus and Big Red.
Although social justice is a spectrum it almost always is never the group, minority, or specific person who is affected by the social injustice. So everyone coming out of the woodworks to say reverting is racist and bigoted are trolls or fall into the sjw category.
@Sieabah Ah, I misunderstood then. I apologize. I think I'm too on-edge, so this is gonna be my last comment for a little bit. (Also, the rest of this comment emphatically doesn't apply to you, but I do hope you have fun reading my venting.)
@RuPaulsFagRace I like how you joined about an hour ago -- roughly 30 minutes before your comment -- with an intentionally offensive name just to cherrypick several words out of a sentence, not only removing them from context but also literally changing two words' meanings by changing their grammatical purpose by not taking the whole sentence. You must have a fun life. Let's fix your blatant lies masquerading as errors. This was my actual statement:
The "full attack", presumably, being the one contributor who had a decent idea, executed it horribly, and when they started being toxic at literally everyone, was justifiably removed and their bad contributions reverted?
To break it down for the illiterate, like you:
The "full attack"
This is the subject of the sentence. It's the thing the verb is referring to.
presumably
This is me being a bit of a sarcastic ponce.
being the one contributor
Continuing on from before "presumably", "being" is the verb. Specifically, this part means that the rest of the sentence is going to refer to the claim that the thing referred to as a "full attack" is, in actually, just a single, specific ("the one") contributor. If you need more explanation, take first grade English.
who had a decent idea
This, and the rest of the sentence, specifies what that single specific contributor did. Specifically, a decent idea -- stop innocent children from being separated form their families -- but they...
executed it horribly
...which means that though the idea was good, the actual method they chose to implement it -- a license change which, aside from being only barely legal, would have at the absolute minimum completely trashed lerna's reputation as a thing which can be safely used.
and
This is a thing called a "conjunction". It says that the previous thought was a complete thought, and now we're moving on to a separate, but still related, one.
and when they started being toxic at literally everyone, was justifiably removed and their bad contributions reverted?
This part, which you conveniently ignored because it goes against your frankly embarrassingly bad attempt to be a troll, I leave as an exercise for the reader. Have fun breaking that down. It might take you a half an hour to really understand the whole single layer of meaning there, but I promise, learning to read is worth it!
All in all, the sentiment of the sentence was blindingly obvious to anyone who bothered to read instead of picking the first string of words they could reasonable make an irrational, hateful statement about, whether or not the meaning of that string was even relevant to the original sentence.
I'm going to do my best to stay on topic.
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone
What is harassment? What can I and can I not declare as harassment? What happens when people of different cultures have different ideas and thresholds of harassment?
regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
What is the purpose of enumerating these characteristics and only these ones? I notice that political beliefs, if any, is conspicuously missing from this list. I think @nic-hartley's use of "irrelevant characteristics" is far more encompassing, easier to interpret, and won't be construed as biased.
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
These are vague criteria. One person's creepy is another's person's ideas of a good time. It is one thing to advocate against sexual harassment it involves crossing clear boundaries and is frowned upon by many cultures. However, declaring "sexualized language or imagery" as unacceptable behavior is such a subjective and all-encompassing mandate that it must be selectively enforced since anyone can be guilty of it at anytime.
This is oppressive. A winking emoji can fall under this category. Whether it does will be determined by those who have the time and interest to spend the resources necessary to do so, regardless of interest (or not) in the project. I believe this is a recipe for a project to be astroturfed.
- Trolling, insulting/derogatory comments, and personal or political attacks
Trolling, insulting, and derogatory must all be sufficiently defined or they will be subject to the same selective enforcement issues that can be mandated by third-parties with no interest in the project or community.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
What happens when a project maintainer gets it wrong?
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
What constitutes "representing" needs to be defined or it will be selectively enforced.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [INSERT EMAIL ADDRESS]. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Can you be kicked off a project solely based on anonymous complaints? What is the threshold of actionable issues?
My biggest issue here is that this CoC prioritizes punishing certain behaviors instead of providing usable guidelines. If there are no concrete guidelines, then I don't see how this CoC offers value to the community.
I appreciate the discussions in good faith. Thank you all for your passion and perspectives.
I will be updating our CoC to the latest version of the Contributor Covenant as soon as I have the spoons to figure out an appropriate email to configure it with.
This project uses an out-of-date version of Contributor Covenant. The latest version (1.4) can be found here:
https://www.contributor-covenant.org/version/1/4/code-of-conduct.md
Please give serious thought to the enforcement mechanism you will be following, and add a description of this process to the appropriate section of the CoC.
Thanks!
Note to critics and harassers:
I opened this issue at the request of the maintainers.