OCaml Community Code of Conduct

I think that @gasche’s criteria makes sense; what is important is concrete rules and procedures. For what it’s worth, even though Ruby’s code of conduct lacks clear rules about enforcement, it states that it was based on “an early proposed draft of the PostgreSQL CoC,” so I took a look at Postgres’ current CoC and it meets gasche’s requirements (and is vastly different from Ruby’s CoC): PostgreSQL: Code of Conduct

I would also be satisfied with using something based on Coq’s code of conduct, which is also used by LLVM (LLVM Community Code of Conduct — LLVM 16.0.0git documentation) and comes from Django.

One point that I wish to see in a code of conduct is to discourage “gatekeeping.” I know that Rust has an emphasis on making “systems programming” approachable for everybody, and this contrasts with the attitude that some people have about C or C++ being a tough or exclusive club. I think this beginner-friendly attitude shows in Rust’s tooling, error messages, and documentation, and has helped its adoption. I think that some functional programming crowds can be elitist in a different way, where excessive category theory references, including memes and tongue-in-cheek jokes like “a monad is a monoid in the category of endofunctors” and zygohistomorphic prepromorphisms that are misinterpreted by outsiders, make functional programming feel intimidating or not appropriate for practical use. I think category theory is cool and am not trying to say “don’t use category theory and please dumb-down your code,” I just want to avoid an attitude of using category theory only to “show off.” I haven’t seen this so far in the OCaml world, fortunately. I also feel that when I was younger, I sometimes wasn’t as patient enough with people less experienced as I was than I should have been, and also that I have also benefitted from people more experienced than I am going out of their way to teach me interesting topics. So, I want to emphasize being welcoming to beginners.

Finally, I think the code of conduct should assume good faith for everyone, including those who break the rules, unless the violation was particularly egregious. (For example, if someone acts “gatekeepy,” assume it was unintentional before assuming it was malicious.) It should also provide room for people to grow and learn from their mistakes, then re-enter the community.

4 Likes

It’s not possible to make a choice that achieves everything that everyone wants, because people have goals that are mutually inconsistent.

But it’s certainly possible to find useful statements that everyone agrees with. For example, since everyone is against harassment, a document that is limited to making clear that harassment is unacceptable can be perfectly inclusive.

The Contributor Covenant, in contrast, is a divisive and exclusionary document because it doesn’t just list unacceptable behaviours; it is designed to positively advance a particular political agenda, and to exclude those who don’t share that agenda. It certainly excludes me (since I won’t take the “pledge”), and it’s likely to exclude others, too.

5 Likes

Letting “those who do the work decide” is a good rule for giving people agency in their own creations (e.g. when writing code). However, giving people who have power to throw people out of a community the additional right to make up the rules themselves is not such a good idea.

4 Likes

Could someone state plainly what they think this political agenda is and why it is problematic?

3 Likes

I don’t think the text itself proposed here has such an agenda (and I don’t think the intent of those posting was to have such an agenda), it is just something that comes by association with the original website IIUC.

I tend to agree with OCaml Community Code of Conduct - #34 by dbuenzli, and I’d suggest to avoid discussing the politics of the original author or site in this topic. If it really is unavoidable to discuss it perhaps another topic should be opened to avoid derailing the current discussion (discussions around politics can quickly turn into an opinionated/heated argument).

It is not entirely clear to me either what the politics behinds this is, but if it is political I’d first have to find out and understand what it means, whether I’d want to be associated with it or not, and that is not something I should be required to do in order to participate in the OCaml community.
(I did do some search on twitter and HN, and lets just say I didn’t particularly liked what I found, and would rather not get into specifics here).

I followed @edwin’s example and had a look at the criticism against the Contributor Covenant and it’s author and I see what people are afraid about now…

The way the CoC is written makes it impossible to tie your contributions to the OCaml community to your persona, unless you abstain from making any statements about anything else.

In my opinion @gasche is right, at large the OCaml community knows how to behave towards each other and having a ruleset for serious misconduct would be in order to avoid having the conversation only after an incident. So if we don’t want to write our own CoC and there isn’t a systematic problem in the community I’d vote for removing the whole pledge paragraph in the CoC proposal and just include the examples of acceptable and unacceptable behaviour (and the punishments). Shouldn’t this be enough in the future we could obviously adapt the CoC as needed.

I agree with everyone else that discussing the specifics of the controversy around the Contributor Covenant would be offtopic and possibly cause an argument, which was why I was trying to allude to it with only vague generalities, and not a detailed explanation, earlier. So far, I think everyone has been civil despite disagreement, which speaks to the respectful and perhaps more tight-knit nature of the OCaml community :slight_smile: . People have brought up the point that if OCaml is going to become more popular, we should have formal procedures for dealing with bad actors, hence a code of conduct.

However, the unfortunate irony is that in some other language communities (so read: I’m not talking about anyone here), the code of conduct and surrounding controversy leads to disruptive behaviors, from multiple parties, that it was supposed to protect the community against. I vaguely know that in the Scala community, there was a schism between libraries that even dragged in major figures involved with the language. (I am not familiar with the details and do not intend focus on this; I am just mentioning an example that happened in language that is also functional like OCaml and might attract a similar audience.) A disagreement that tied libraries to factions would be off-putting to bystanders and harmful for OCaml’s broader adoption, the opposite of our goal. I do not want this to happen to the OCaml community.

These controversies also tend to be tied to a U.S.-specific, incredibly toxic, culture war. OCaml is a French programming language, yet I, as a U.S. citizen, am able to enjoy its benefits of type safety and performant code, and I am grateful for Inria’s work and generosity. :slight_smile: I’ve noticed that other people in this thread are from places like the U.K., and I recently posted on a thread by someone from Ukraine. The Mincaml compiler demo is from Japan, and I’ve read papers about OCaml from Japanese universities. My hope is that people from China, Korea, the Philippines, Kenya, Mexico, and elsewhere can learn OCaml and participate in the community despite national divisions. This is perhaps the motivation for a diverse committee, as Dr. Xavier Leroy explained. This is also why I do not want to “export” U.S.-centric toxic culture fights, which will likely even be confusing to people in other countries.

5 Likes

I don’t really understand this concern. The document has a Scope section that states:

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces.

Followed by examples for those two things. Neither the phrasing nor the example seem to suggest that communication outside of the community space would result in any enforcement actions. So you can maintain a persona outside of the community spaces and tie it to your contributions inside the spaces.

Btw, the FAQ for the covenant thing the document is based on has an entry about that. And it states quite explicitly (emphasis mine):

Contributor Covenant only applies in project spaces and when an individual is representing a project. Your conduct outside of these situations is not governed by the code of conduct.

2 Likes

I wonder if I am alone in finding this mode of discussion a bit strange and unsettling: I see quite a few people making vague allusions to “fringe” or “toxic” political, practical, or cultural dynamics related to the proposed CoC, and using these allusions as the basis for objecting to it. Simultaneously, these same people suggest that it should be off limits to ask for clarification about what is so objectionable or so controversial, claiming that it is this question that brings politics into the discussion. Am I totally off base in thinking that it is the people who are objecting to the CoC on political grounds that are bringing politics into this rather than the question for clarification regarding what the political objection is?

I am fine with us not discussing particular political positions or ideas, but I don’t know how it can be avoided if some people want to object to the content of the proposed CoC on political grounds. If someone can help reconcile this apparent contradiction for me, I’d be grateful.

I’ll note that the linked FAQ claims

adopting Contributor Covenant does not imply any political or social orientation aside from the (unfortunately politicized) goal of making your project welcoming and inclusive to people of all backgrounds.

This seems to me pretty consistent with the body of the CoC.

6 Likes

Interesting! I learnt something today. You’re not the only one who objects to the use of “pledge” in a code of conduct.

Actually, as a native French speaker, I’m not sure where to position “pledge” in the spectrum that goes from “oath” (fr: (prestation de) serment) at one end to “promise” (fr: promesse) at the other end, going through “commitment” (fr: engagement) in the middle. My English->French dictionaries list all of “serment”, “engagement” and “promesse” as possible translations… Can you help me understand the exact meaning of “pledge”?

8 Likes

… with major, increasing British and Indian contributions. In these times of Brexit and growing nationalism in Europe, it’s important for a project like OCaml to not be tied to a single country.

21 Likes

I was wondering if we might amend the line somehow along these lines:

We as members, contributors, and leaders pledge will strive to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.

It also seems a bit more realistic, as we cannot guarantee the desired outcome.

I don’t think you’ve done anything wrong by trying to ask for clarification. I just think that explaining the controversy around this particular CoC risks making the thread go offtopic, so I feel apprehensive about giving more information. I also am not familiar with every single detail, only vaguely knowing about some incidents, so I don’t trust myself to explain it in a totally accurate way. My only suggestion is to go search online like other people in this thread have to get a sense of the controversy around the Contributor Covenant, which is “baggage” I’m afraid of bringing into OCaml.

1 Like

Something I would like to try to highlight w/r/t to the content of the proposed CoC: insofar as the named qualities or groups of people are accorded any particular support or privileges, it is only the privilege of having “a harassment-free experience”. Beyond that, the only aim stated is to cultivate “an open, welcoming, diverse, inclusive, and healthy community”.

As @raphael-proust notes, the scope is limited to behavior when officially representing the community or interacting within official community spaces. IIUC, if (for example) someone’s political convictions would lead them to support the harassment or exclusion of certain groups of people in their personal Twitter accounts (tho I would hope not!), then the proposed CoC wouldn’t have any bearing on them as long as they didn’t bring that into community spaces or do it while speaking on behalf of the community.

I agree totally. What I was trying to say before was that even though OCaml was developed in France, I as an American gets to participate in the community, and I’ve interacted with and used the work of OCamlers from even other countries. I would think it’s great if more people around the world like in China, Vietnam, India, the Philippines, and elsewhere got to be in the community as well. My goals align with your message that OCaml isn’t exclusively a French language.

Perhaps we could emphasize this “international” goal in the code of conduct, making clear that although OCaml was made by a French institute, that it doesn’t “belong” to France, and that people shouldn’t have French-centric attitudes? OCaml belongs to everyone.

I’m reminded of an old Chinese phrase, “Tianxiaweigong,” which means “The world belongs to everyone.”

2 Likes

Thanks everyone for all your feedback and engagement! We, i.e. the Code of Conduct committee members and Sudha, have discussed the feedback so far and are now giving a response in the name of all of us:

The text of the Code of Conduct

Multiple questions were raised about the base used for the Code of Conduct, its format, its wording, and the ideology of its creators. Some of those concerns made sense to us, so we’ve decided to move away from adapting the Contributor Covenant. We’re now discussing whether to assemble our own Code of Conduct or to adapt the Coq Code of Conduct, which seems quite convincing to us. Notice though that whatever we do, it won’t be possible to offer a Code of Conduct that everyone will be 100% happy with.

The scope of the Code of Conduct

We’ve noticed/heard that some people are under the impression that they’ll have to implement this Code of Conduct on all their OCaml projects. That’s not the case. It will be up to every individual maintainer if they want to implement the Code of Conduct or not. However, that being said, we obviously want this Code of Conduct to be as widely adopted as possible. That’s why we’re thankful for all your feedback and discussion! Let’s try to make this as widely adopted in the OCaml community as possible. Btw, as mentioned at the beginning of the thread, the maintainers of the four main communication platforms discuss, discord, IRC, and OCaml mailing list as well as the OCaml · GitHub maintainers are already on board. Now, when re-drafting the Code of Conduct, we’ll of course make sure that that keeps on being the case. Also, note that the one-month timeline proposed in the original post, which is not a hard deadline, applies only to the spaces listed in the scope. For other projects and spaces, maintainers and moderators decide when to enforce the CoC, if they decide to, which we hope they do.

The process we have in mind to adopt the Code of Conduct in a project/communication platform is the following: in the Code of Conduct, there will be a section where maintainers adopting the Code of Conduct can sign. When doing so, we’ll also ask them to add either a copy of the Code of Conduct or a link to it to their project/platform, in which they also provide a way to contact them in case of code of conduct violation. It will be up to every maintainer if they also want to provide our contacts on their project or not.

The committee doesn’t replace the existing moderators and maintainers. It works with them on some specific questions. The day to day moderation is not going to be affected.

The origins of the Code of Conduct

There have also been questions about the origins of the Code of Conduct and its committee. Both, Xavier and Anil, have already answered to that. To add a couple of details to their answers:

The content of the Code of Conduct, and the rules and members of the committee are not immutable. We hope that they will improve over time.

Our employers are not involved in the process. They were mentioned to be open about our current situations and to make clear that the committee is balanced in terms of university/company affiliation.

The bylaws of the committee

The draft we shared does not mention much about the operational side of the committee except for one point in the FAQ, which we’re going to re-write. Xavier covered how we try to have a diverse, representative and approachable committee. We are in the process of writing bylaws in addition to the Code of Conduct. They will cover such details.

  • the number of people in the committee
  • the selection process
  • some rules to avoid conflict of interest or a take over by a single entity

The bylaws are important because without enforcement the Code of Conduct is worthless. But they will be separated from the Code of Conduct itself. So that the committee doesn’t have to be involved in all projects.

The purpose of the Code of Conduct

The main purpose of implementing a code of conduct in your project is to make clear to people that they can contact you (or us) when they face or come across behaviour that might be worth reporting/discussing. The Code of Conduct points out what kind of behaviour we want/don’t want in our community, and it provides contact information.

Having this general Code of Conduct for the whole community has the typical advantages that come along with standardizing things.

The purpose of the Code of Conduct committee

The main reason for having a Code of Conduct committee is to keep the Code of Conduct efforts alive. We’ve learned from past efforts that simply writing a text and hoping that the community will adopt it isn’t enough. We’ll keep on working proactively on the Code of Conduct. A Code of Conduct needs maintenance work, just like any technical project does as well.

And yes, as Gabriel has pointed out, it might also come to strong Code of Conduct violations in which case we’ll have to be the last instance that decides on what action to take to keep the community as nice and inclusive as possible. However, we think and hope that those cases will be rare. We don’t see ourselves as judges and would not like to be perceived as such.

Accessibility and inclusivity in general

We are aware of imperfect accessibility and are happy to help where we can. But this is not the main goal here. We hope that both efforts go in a similar direction of more inclusivity.

For example it was mentioned that discourse is not perfectly accessible to blind people. We can help forward the feedback to the developers of the forum. However, we think that accessibility is a subject that is important enough that it should have its own working group, separate from the Code of Conduct committee. If anyone wants to take that initiative, that would be extremely appreciated by many (you could start a different thread for that)!

Happy inclusive camling,
@Khady, @mseri, @rjbou, @c-cube, @pitag, @sudha

28 Likes

Thank you @sudha for your (and others) efforts. Having a good CoC and committee
are important and necessary, and getting the clarifications of intents and steps forward are a significant trust booster. Looking forward to the next draft!

6 Likes

No objections to having a CoC, but like others I’m curious if any alternatives to the Covenant were considered. I know it’s very popular, but I’ve always been more fond of shorter CoCs like Ruby’s, which was already mentioned earlier in this topic.

As mentioned above, we are indeed considering alternatives including, but not limited to, Coq’s code or writing our own. There’s little chance that we’ll end up with something as short as the Ruby’s code of conduct as we consider that it is missing some critical information to make it actionable. Such as how to report and how the report is going to be handled.

I figured as much, as that’s often the argument against shorter CoCs, although given the super generic nature of the reporting and enforcement sections (they are pretty much common sense if you ask me) I think those can easily be condensed to a couple of sentences. Anyways, still the document is fairly short (and I guess somewhat familiar), so I hope people would bother to read it. :slight_smile: