cypht-org / cypht

Cypht: Lightweight Open Source webmail aggregator [PHP, JS]
http://cypht.org
GNU Lesser General Public License v2.1
986 stars 155 forks source link

Why to impose restrictions on contributing (e.g. in terms of a Code of conduct)? #208

Closed dumblob closed 7 years ago

dumblob commented 7 years ago

A "Code of conduct" was added to the repository in the commit https://github.com/jasonmunro/cypht/commit/fd0b797287ccaab1eb6ee769155f6bf5f7bb5e8a . Based on my experience is any Code of conduct in case of an open-source project a total nonsense (note, nobody can be sued for allowing a criminal - a legal person (natural or juridical) not behaving in her/his/its live according to some country/state (which?) laws - to contribute to an open-source project). Even when a the repository is "controlled" by a company (in which case the company itself shall take the needed steps inside of the company, so that no such "problematic" person will contribute to the project in the name of the company - but contributions in the person's free time, i.e. no more with the binding to the company, shall not be restricted).

Unfortunately it's not just unnecessary, but rather quite counter-productive. Just ask Google what everything code of conduct causes. Some less-known arguments include:

I'll be rude and try to guess without asking. Maybe you were seeking for a clearer (more formalized) contribution process. That's a managerial perspective of a technical issue - e.g. some people don't look through old issues and ask the same questions again and again. Or some people are not running linter to commit the code in a correct form etc. This has nothing to do with a Code of conduct as Code of conduct imposes restrictions on a more or less general behavior, but not on closely project-specific behavior, which is what's needed. Or maybe you just want to protect the name "Cypht" or a logo. In that case it again has nothing to do with the Code of conduct, but rather a trademark registration (which is a lawful act after which the subject is protected with a standard set of privileges named in most legislations) or in case of a logo a license how to use and not use the logo.

jasonmunro commented 7 years ago

I added the COC simply because github prompted me to, and a quick read of the boiler plate version they provided did not seem problematic to me. I have no expectation that it's legally enforceable, nor am I married to this particular set of guidelines. I am not interested in applying my opinions on contributors, but I do moderate comments on issues, and it makes sense to me that there should be some sort of formal reference about what is expected.

If my expectations of conduct alienate users I'm ok with that. I expect people to be polite and respectful, to stay focused on the technical aspects of the project, and in general to be courteous to each other even if their opinions differ. I'm open to suggestions of a replacement set of guidelines, or maybe that last sentence is good enough to accomplish what I want to convey :)

As always, thanks for the feedback!

dumblob commented 7 years ago

I added the COC simply because github prompted me to, and a quick read of the boiler plate version they provided did not seem problematic to me.

Well, exactly GitHub is one of those having issues (http://meh.schizofreni.co/random/lulz/2016/01/08/tales-from-a-gate.html ). I would be careful with all the things GitHub recommends.

I have no expectation that it's legally enforceable

Well, it is legally enforceable because it's hosted on GitHub (read carefully the GitHub Terms of Service). That's also one of the reasons why GitHub is offering anything to you.

nor am I married to this particular set of guidelines

Well, I might have misunderstood the "levels of commitment", but the commit in git history actually clearly, openly, and provably shows exactly the "marriage" and does it using the hardest possible measure - namely by imposing a particular set of guidelines through a commit signed by your GitHub identifier. (sorry for sounding so rude - it's not meant to be rude)

I am not interested in applying my opinions on contributors, but I do moderate comments on issues,

That's fine. Not just fine, it's even expected :wink:.

and it makes sense to me that there should be some sort of formal reference about what is expected.

And this is the hard part. We're stepping out from the project and switching to politics. Politics is though necessary only if the technical project needs to be "sold" to other people/groups. Otherwise it's completely unnecessary.

If my expectations of conduct alienate users I'm ok with that. I expect people to be polite and respectful, to stay focused on the technical aspects of the project, and in general to be courteous to each other even if their opinions differ.

That's totally fine. This issue looks really tiny, but legally there is a huge difference between expectations and imposed restrictions on contributing. If you want to stay with expectations, then Code of Conduct is not the right tool. Expectations seem to be rather person-related than project-related and thus I would probably rather write a blog post about my expectations on contributions, but wouldn't impose it.

I'm open to suggestions of a replacement set of guidelines, or maybe that last sentence is good enough to accomplish what I want to convey :)

You mean This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4? Or which sentence?

Btw. a harmless Code of Conduct basically cites the basic human rights, but nothing else (which means its existence is totally pointless, because the parts in accordance with the local law don't say anything new and those parts which are against the local law are ignored).

By the way I know several Muslims working in IT and being quite good at it :smile:. Anyway it's a highly subjective topic and it's up to the repository owner to decide.

jasonmunro commented 7 years ago

Honestly I don't see this as quite the issue you do, but I do appreciate your thoughtful response (as always).

Well, exactly GitHub is one of those having issues (http://meh.schizofreni.co/random/lulz/2016/01/08/tales-from-a-gate.html ). I would be careful with all the things GitHub recommends.

I'm not sure I understand how this is relevant. Someone intentionally creates drama to pit politically diverse individuals against each other within the community. The objective is to produce negative publicity for the project that was a win because "all publicity is good". During that a COC was ineffectively introduced to attempt to deal with the situation? (I only read the post, not any of the reference links).

Well, it is legally enforceable because it's hosted on GitHub (read carefully the GitHub Terms of Service). That's also one of the reasons why GitHub is offering anything to you.

I have read the TOS. Github as a private company can do whatever they want when it comes to content restrictions, It's the quid pro quo for free hosting. I don't see anything suggesting they can legally enforce my COC on my behalf or against my wishes. Am I missing something here?

Well, I might have misunderstood the "levels of commitment", but the commit in git history actually clearly, openly, and provably shows exactly the "marriage" and does it using the hardest possible measure - namely by imposing a particular set of guidelines through a commit signed by your GitHub identifier. (sorry for sounding so rude - it's not meant to be rude)

No offense taken. I have committed many things that were later modified or removed :) This is no different. I could even wipe it from git history if I wanted. Instead I might modify it in a way that more accurately suits my intentions.

And this is the hard part. We're stepping out from the project and switching to politics. Politics is though necessary only if the technical project needs to be "sold" to other people/groups. Otherwise it's completely unnecessary.

This is a bit of a false dichotomy IMO. In my mind a COC is a way to delineate unacceptable behavior as it pertains to contributions to the project. For example: Would I accept a patch from the author of the tales from the gate post? Yes. Would I permit this individual to use abusive language to another Cypht community member in an issue or code comment? Absolutely not.

That's totally fine. This issue looks really tiny, but legally there is a huge difference between expectations and imposed restrictions on contributing. If you want to stay with expectations, then Code of Conduct is not the right tool. Expectations seem to be rather person-related than project-related and thus I would probably rather write a blog post about my expectations on contributions, but wouldn't impose it.

I see your point here, but I feel that I am seeing "imposed restrictions" in a much different scope. These restrictions only apply to your interaction with the Cypht community. I'm not implying that actions outside the community have any bearing on that.

You mean This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at http://contributor-covenant.org/version/1/4? Or which sentence?

I meant the sentence just prior in my reply:

I expect people to be polite and respectful, to stay focused on the technical aspects of the project, and in general to be courteous to each other even if their opinions differ.

:)

Btw. a harmless Code of Conduct basically cites the basic human rights, but nothing else (which means its existence is totally pointless, because the parts in accordance with the local law don't say anything new and those parts which are against the local law are ignored).

When I saw the COC thing at Github (which is new), I had a flashback:

I was implementing my first corporate E-mail system, and I choose Qmail for SMTP. I had limited experience in Open Source communities, but I subscribed to the Qmail mailing list as a potential resource. It was simply unapproachable for someone with my experience level. I saw the carnage of those that tried. Later I got involved in the Squirrelmail project - which was much more accepting to an inexperienced contributor. When I left that project and started my own, I really wanted to insure an inclusive and welcoming environment to anyone who chooses to contribute.

Also, I'm not sure it's ever pointless to re-affirm basic human rights.

By the way I know several Muslims working in IT and being quite good at it . Anyway it's a highly subjective topic and it's up to the repository owner to decide.

Are you suggesting that adopting this COC is anti-Muslim? If so, why?

I'm not sure what I will do about the situation, but I appreciate your feedback and will keep thinking about it.

dumblob commented 7 years ago

I'm not sure I understand how this is relevant. Someone intentionally creates drama to pit politically diverse individuals against each other within the community. The objective is to produce negative publicity for the project that was a win because "all publicity is good". During that a COC was ineffectively introduced to attempt to deal with the situation? (I only read the post, not any of the reference links).

Oh, my mistake. I should have post more links and in a chronological order. It's exactly vice versa than you understood it. Namely, someone S issues a request R on a project P. R is a widely well known universal request requested from many other projects during the last 15 or more years (but only a subset of them by S). Owner(s) of P know R therefore very well and they prepare a pragmatical and ethical 2-step solution in case R will be requested at some point. It happens R is requested and the replay of the step 1 of the prepared solution is utilized (including a definitive closure of R; but not closure of free speech, i.e. not closure of discussion channels).

S and S-minded people are not pragmatical and therefore they add gas to fire (many of them unfortunately not knowing what they're doing). P decides to proceed with step 2 of the prepared solution. The step 2 is a plain marketing based on pragmatical reactions to S and S-minded people. Step 2 is still fully ethical as it uses the worldwide accepted and widely used approach. When the fire is already too much, P stops the discussion and then writes a balanced summary (but not a comprehensive one thus not being 100% suited for newcomers) of what has happened before, during, and after.

For some people it's surprising, that there is no difference between "reacting pragmatically for it's own sake" and "reacting pragmatically with some specific motivation in your mind". Why are these not different? Because we would never find out, the goal wasn't "just pragmatical answers for it's own sake", but "pragmatical answers with some additional goal" without reading meh's blog post. It's the same as when thousand people are doing the very same activity (like jogging or eating yogurt or singing or programming or criticizing Codes of Conduct :wink:), but each of them has a very different reason to do it - you'll never find out until they reveal the reason.

And if someone adjust her/his/its opinion on the particular activity based on revealed information post-mortem without getting approximately the same amount of post-mortem information from all the utilizers of the same activity, then I think such person is not worth taking seriously until her/his/its fundamental thinking processes change (with which I'd be more than happy to help with all courtesy and politeness).

I have read the TOS. Github as a private company can do whatever they want when it comes to content restrictions, It's the quid pro quo for free hosting. I don't see anything suggesting they can legally enforce my COC on my behalf or against my wishes. Am I missing something here?

Maybe the following game-changing "detail" could be of interest for you:

You agree to indemnify us, defend us, and hold us harmless from and against any and all claims, liabilities, and expenses, including attorneys’ fees, arising out of your use of the Website and the Service, including but not limited to your violation of this Agreement, provided that GitHub (1) promptly gives you written notice of the claim, demand, suit or proceeding; (2) gives you sole control of the defense and settlement of the claim, demand, suit or proceeding (provided that you may not settle any claim, demand, suit or proceeding unless the settlement unconditionally releases GitHub of all liability); and (3) provides to you all reasonable assistance, at your expense.

In other words, any content (including, but not limited to, any comment in any code snippet which has otherwise absolutely nothing to do with you) you create on GitHub makes you fully liable with all the bells and whistles for absolutely everything arising out of it ("arising out of it" is a vague legal term, which really means that e.g. your comment "Thanks!" to one of those millions of code snippets on GitHub I've never heard of could cause me a painful headache requiring medical treatment - in case I would sue you, you can't defend yourself and I have the whole legal s***t on my side against you).

It's really a thin ice (I'm unfortunately speaking from my experience, though not directly with GitHub).

This is a bit of a false dichotomy IMO. In my mind a COC is a way to delineate unacceptable behavior as it pertains to contributions to the project. For example: Would I accept a patch from the author of the tales from the gate post? Yes. Would I permit this individual to use abusive language to another Cypht community member in an issue or code comment? Absolutely not.

That's fine (or even perfect). But this has still nothing to do with a Code of Conduct. CoC means really to a priori impose restrictions on anyone who would want to get in touch with the project. But you wrote you would not permit to use abusive language to another Cypht community member. Which means there are no a priori imposed restrictions, but there is just an a priori known possibility with high probability (maybe even a sure event), that such behavior will be treated by a certain individual/roup way differently (e.g. by kicking the offender out) than e.g. a polite behavior.

In other words, we're moving from flat restrictions (imposed on everybody) to a situation-specific respectful behavior.

You can easily write something along the lines:

I, Jason Munro, am publicly stating, that I reserve the right to moderate in any way any communication, having something to do with this project (Cypht), based on very my own opinion, which usually stems from fully equal human rights, but is twisted by respecting situational needs.

It doesn't a priori constrain anyone, but roughly defines where might be borders and what will happen in case the borders are crossed.

I meant the sentence just prior in my reply:

I expect people to be polite and respectful, to stay focused on the technical aspects of the project, and in general to be courteous to each other even if their opinions differ.

That's a perfect sentence. Just go for it. But remember, this sentence is no Code of Conduct, it's just a clarification of how the "communication management" around Cypht might (not shall nor must) look like to suit the expected needs for a successful Cypht ecosystem.

Also, I'm not sure it's ever pointless to re-affirm basic human rights.

You're right. I wasn't clear enough (I'm really sorry for that). I meant pointless from the legal point of view. From any other point of view, re-affirming basic human rights is always good as it makes e.g. the newcomers feel comfortable by knowing the project is aware of humanity :smile:.

Are you suggesting that adopting this COC is anti-Muslim? If so, why?

Yes, I'm pretty sure about that (e.g. the equality is a no-go for Muslims nor for Indians). Analogically imagine you would come across my project (let's say an intercourse tracking application), where I would have a Code of Conduct including information, that we (the project community) require anyone in the community to practice Polyandry - other marriage types are not tolerated (neither in practice nor in communication). I would accept patches from non-Polyandry people, but in case they would talk about any "alternative" marriage types, I would immediately cut them short until they stop acting in a non-Polyandry way.

Would you want to contribute to such a project? Would you as a monogamy person feel the CoC as anti-monogamy?

But as I said in my initial post - rather than to "enforce/impose" restrictions/habits_of_a_specific_culture on everyone, I would skip this and write just what I myself expect and how I'll treat others. We could even offer to contributors to write their own subjective expectations additionally next to your expectations to have some good readings for newcomers :wink:. But I doubt it would be of any use. So I would stick with just expectations from owners (or those having the right to commit to master) - which is currently just you if I'm not mistaken.

Oops, sorry for an extremely long post. I'll try hard to rather be silent from now on.

jasonmunro commented 7 years ago

No need to apologize, I appreciate your point of view. I removed the COC. I did not feel very strongly one way or another about it anyway, and the fact is I will moderate the community as I see fit regardless. My aim is to be as inclusive as possible and while I did not perceive the COC as discriminatory, that is irrelevant if others do.

dumblob commented 7 years ago

I hope I didn't scare you to death with the paragraph I cited from GitHub ToS. Should you feel uncomfortably, there are few other choices of a "full-featured" public git repositories (I would prefer European ones - e.g. https://git.fsfe.org/) in which case on GitHub could stay an up-to-date read-only copy to get more publicity (or a read-write copy, but with preference to issue pull requests and fill issues on the FSFE git).