OCaml Community Code of Conduct

It’s a good question. The difference is that oaths and pledges have a religious aspect to them that promises do not. (Although I also try to be very circumspect in the promises that I make as a matter of integrity.)

There are a number of biblical prohibitions against oaths, pledges, and swearing but it’s certainly cultural as well. Speaking as a Quaker, the opposition to pledges is that we don’t align ourselves to anything but God. This has actually gone all the way to the U.S. Supreme Court who found a constitutional right to not pledge. So at the beginning of every school year, my wife and I write a letter to our children’s schools explaining that they will not be participating in the daily pledge of allegiance as is their right. (As you might expect, this goes over better with some teachers than others.)

3 Likes

Hello all!

Here’s our new draft of the proposed Code of Condcut for the OCaml community. The link in the original post is updated to reflect the latest version of the draft. Many thanks to everyone for the thoughtful suggestions. After taking into account the feedback we received here and in private, we’ve decided to go with the Coq Community Code of Conduct as our base text.

We’ve retained the section on strained situations from our previous draft. The text is due to @bobot, who wrote it for a previous iteration of the Code of Conduct text. We’d like to make it clear that this part of the text was not derived from contributor covenant. This section was written during the times of covid lockdowns and made a lot of sense to include, with many people having limited contact with the outside world. Thankfully we’re past the lockdown stages at most places, still we believe it’s useful for people to reach out to us in difficult situations even if there isn’t a clear code of conduct violation.

Scope

As mentioned in the document, the Code of Conduct is currently proposed to be enforced at:

and other spaces managed by the OCaml development team and OCaml Software Foundation.

Next steps

Any comments and ideas regarding the text are appreciated. We kindly request everyone to keep the discussions relevant to the proposed text and OCaml community. If there are no strong objections, the Code of Conduct will be enforced in the spaces listed above. The admins and moderators of those spaces have kindly approved to the idea.

We’d very much appreciate more maintainers following suit and implementing the Code of Conduct for their projects. It’s completely up to the maintainers to decide to do so for their projects. The maintainers can also choose to list the contact details of the Code of Conduct committee, at the discretion of the committee members. We will come back with more details on this process soon.

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

12 Likes

Thanks, a nice text again. I have one minor remark and two questions:

  • minor remark: there is a whole sub-paragraph at the end of the last rule, starting with “If actions have been taken with you”, that I think is out of place there and should be included in the Enforcement section (for example, right before “The members of the team are currently: …”).

  • question 1: Discuss has built-in moderation tools and people in charge of moderation (which in practice is pretty rare, most tool-supported actions are related to spam filtering). The behaviors that would typically get discuss moderation involved will also violate rules of the Code of Conduct. Should users use the Discuss moderation interface (flag posts, etc.), or go through the CoC committee instead, or both? (Maybe the recommendations on this question depends on the nature of the perceived behavior?) If we don’t decide anything about this, I guess people will make decisions about it independently, and all three options will happen, which is probably fine – but it may require nominating some CoC as moderators so that they get a better picture of reports arising from the community.

  • question 2: the CoC text as-is is formulated for online spaces. But the OCaml community also has some in-person events, for example the OCaml Workshop and the Mirage Retreat. If the organizers of those events were in favor, would it be possible to “apply the CoC” there as well? Is the current phrasing flexible enough for this? (Do in-person event deserve a mention of some kind in the document?) In-person events are relatively rarer than online interactions, but unfortunately have more opportunities for inappropriate behaviors, so they deserve a bit of thought. (CoC people may also be asked to help with a situation between several people that developed over a mix of online and in-person interactions.)

3 Likes

Thanks @sudha and the CoC team, I like the new proposal a lot better. In particular it also tries to explain the reason for each rule within the CoC itself, which is good (and helps clarify the intent).

Some minor remarks, but no objections as such from me:

  • there is a typo in the link (Condcut vs Conduct)

  • the ocaml-community CoC had a reminder to “presume good faith on the part of other contributors”, which might be useful to include in some form. Sometimes a PR review or reply can be interpreted as harsh (even if it doesn’t contain problematic language), when in reality it is just terse, or pointing out a genuine flaw/bug in the shortest possible way, and the intent of the author may not be reflected through online media adequately. I think the “be friendly and patient” in the current proposal has similar intent.

  • " OCaml online forums are only to discuss OCaml-related subjects. Unrelated political discussions or long digressions are unwelcome, even for illustration or comparison purposes." I’m not necessarily opposed to long digressions that describes how Haskell or Rust, etc. solve a particular problem if that helps solve or guide the discussion about something that is OCaml related. And illustrating or comparing with how something got solved elsewhere is how you come up with good design (e.g. adapting a solution or avoiding mistakes others have made), and depending on the topic it might require a deep dive in an area. Perhaps “long non-technical digressions”?

  • “violations of these rules outside these spaces may affect a person’s ability to participate within them”. I can see why this is needed, but I hope that will be used sparingly and on a case-by-case basis: e.g. if in theory someone constantly engages in personal attacks against (members of) the OCaml community in other spaces, it is reasonable to assume they wouldn’t be immediately welcome.
    OTOH expressing a controversial, or unpopular or wrong personal opinion in other spaces should have no relevance in someone’s ability to continue participating here, unless they actually violate some of the rules here.
    i.e. it shouldn’t be possible for someone to use the CoC as a means of launching personal attacks against a community member and try to get them banned from the community based on what they said on Twitter/other MLs/etc.
    Unfortunately that is how I’ve seen the original covenant CoC used (from a superficial search that is), contrary to the intention of those adopting the CoC to protect against attacks it became a way for anyone on the internet to perform such attacks against community members by using the CoC, which was my main objection against it.
    I don’t think you necessarily need to modify the proposal in any way, the word “may” is already sufficient, and I trust the CoC team to handle such situations appropriately without having to spell out every last detail on how such situations would be handled (e.g. by reminding the person reporting these alleged violations that they themselves should take another look at the rules around being respectful and welcoming to those they disagree with if it is obvious that they are only using it as an excuse).

5 Likes

We could also innovate, as in:
“The OCaml community doesn’t tolerate any form of violence.”
A CoC in one sentence.

That would be the executive summary.

Then, you can put the lawyer’s verbiage afterwards (define violence, define what happens if you
behave violently in the community, etc).

1 Like

It’s good to see that the Contributor Covenant has been abandoned. This new code of conduct doesn’t suffer from most of the problems of that unpleasant document. Unfortunately, it has some new problems of its own.

The people pushing for this code of conduct admit that there’s no actual problem to be solved, and that they don’t really care what the text says. Those both seem pretty unreasonable to me, particularly when you’re putting words in other people’s mouths as this code does.

It’s clear that nobody has looked carefully at the words of this new code, because they make very little sense. That’s a bad sign: it shows that people coming to the community can’t be expected to read the code, and that it won’t be possible to rely on the code to resolve problems. An ambiguous, badly-written code won’t carry any weight in resolving disputes.

I’m afraid that the team as currently constituted won’t carry any moral authority, either. Here are the high-minded words of the code:

Be friendly and patient. Be welcoming. Be considerate. Be respectful. Be careful in the words that you choose. Be kind to others. Do not insult or put down other participants. Remember that what you write in a public online forum might be read by many people you don’t know. Consider what image your words will give to outsiders of the development team / the user community as a whole. When we disagree, try to understand why. It is human to make errors, and please try not to take things personally.

In contrast, the last time I tried to engage one of the members of the team, @c-cube, in technical discussion, he started shouting and swearing:

… Am I making no arguments here? There’s been no plan to change it FOR THE 23 YEARS IT HAS EXISTED. no one has a suggestion of how it might change (the bigstring one would break memory behavior for so many programs it’s not funny).

This is seriously the last time I even consider touching this cursed stdlib.

I don’t have the patience, energy, or motivation to work on that, especially if it’s to face 2 years of nitpicking on the PR afterwards. So, no, fuck it.

I don’t think the OCaml community really needs morality police at all, but we certainly don’t need to be policed by people who don’t follow their own rules.

1 Like

Thanks for the work you put in!

IMO the most important aspect of the CoC is that it has an explicit reporting channel: an email address to contact in case of issues. Because the text has that feature, I’m ok with it, I find that it’s an improvement over not having any such information available.

My personal opinion (not that of people pushing for this code) is that (a) we might not know about an existing problem because there was no clear reporting channel and (b) we might have problems in the future that need a clear reporting channel. And thus I think it’s important to have a code-of-conduct that includes contact details for reporting issues.

As for caring about the text, well I care about it enough that I make some suggestions below. But also I’m ready to have a text that’s imperfect rather than no text at all.



All of this being said I have two issues with the text. I understand that it is adapted from an existing one and that it might not be worth doing modifications, but maybe it is? Here are my two issues:

First, the list of rules is inconsistent in terms of style and tone. Some rules have a strong-style header (“Be respectful”) and then a kind of wishy washy language about the intent of the rule (“Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. […]”) and no actual details on what constitute a violation of the rule (are “poor manners” a violation of the rules?).

Some other rules have a vague non-enforceable header (“Be careful in the words that you choose”; well I’m sure every one can carefully choose disrespectful words) and clear enforceable language afterwards.

This makes the CoC a bit hard to read but more importantly it makes it difficult to understand what the rules are. Maybe the rules could be made more uniform.

Second, some of the rules are very vague. This is already partially covered in the first point, but for this specific point let’s focus on the following example:

Remember that what you write in a public online forum might be read by many people you don’t know

I don’t understand what I’m supposed to do with that. I don’t think I can send an email to the code-of-conduct enforcement team and say that someone is forgetting they are writing in a public online forum.

Most of the rules seem to have the same problem. Even the wording on the last rule says “please try not to take things personally” which is not really an enforceable rule (“well I did try (but eventually lost patience) so I didn’t break the rule”).

Maybe the rules need to be split into “General advice” (like Remember that … and “Please try…”) and “Enforceable rules” (like “Be respectful” and “Harassment and other exclusionary behavior aren’t acceptable”).

4 Likes

I personally have a concern with this non-exhaustive list that may characterise people.

We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to people of any origin, color, status, educational level, gender identity, sexual orientation, age, culture and beliefs, and mental and physical ability.

In my opinion, if the aim of inclusion is important in the CoC, it should not mention a list (which might not be exhaustive) which seems less “universal” and which generalises categories that people might not want to be assigned to. It seems to me more respectful to use terms like “inclusive community” without necessarily going into detail to not only avoid a list (which can be seen as restrictive even if the sentence opens up the possibilities - one wonders why this or that category is not mentioned) but also to avoid reducing people to these characteristics.

Especially as some words may be deprecated, such as “mental ability” implying that mental disabilities (by negation) are an incapacity, an incorrect and exclusive statement. So, it may also imply the inclusion of people “not having the mental capacity to participate in the community properly”. One can easily fall back on the problem of the interpretation of these characteristics which can be different from one person to another.

5 Likes

Thanks for revising the text. I realize that it is impossible to get everyone to agree in a forum like this, and also how this open process makes it easy to attract criticism, so I’d like to be one of those who says the latest text is well suited to the times we are in. Thanks!

6 Likes

I’m not sure that CoC is really required, but the following part bothers me

In addition, violations of these rules outside these spaces may affect a person’s ability to participate within them.

I believe that spaces outside ours may have different CoC. Default behavior in other communities may drastically differ from ours. And also it’s hard to monitor and accurately evaluate events on other platforms. (I wish that our CoC would not have enough power to ban D.Trump, as Twitter did. Or RMS.) It would be much better to take into account only OCaml-related actions.

1 Like

Even better:
“The OCaml community doesn’t tolerate intolerance.”

2 Likes

Thanks Sudha and the committee for this alternate proposal. FYI, it is being discussed among the core OCaml development team.

Speaking of development team and of “spaces” (as mentioned in earlier messages), there’s one point that I’d like to understand better:

These rules apply to all spaces managed by the OCaml development team. This includes the the projects hosted in the GitHub ocaml organization, the discuss.ocaml.org forum, the caml@inria.fr mailing list, OCaml IRC, physical events like OCaml Workshop, and any other forums created or managed by the development team and OCaml Software Foundation which the community uses for communication.

There is no such thing as “the” OCaml development team. There’s the team in charge of the core system (ocaml/ocaml), and then there’s the team managing opam and its repository, the team for Dune, the people who do the website, the OCaml Software Foundation executive board, the organizers of the OCaml workshops, etc. There’s overlap between these teams, and they act in good cooperation, but they don’t form “a” team.

So, what is the intent?

  1. Each of these communities (that agrees to follow this CoC) post the CoC on their website, suitable amended. E.g. for ocaml/ocaml it would be “The development team in charge of the core OCaml system”, for ocaml/opam-repository “The team in charge of the OPAM package repository”, for the foundation it would be “The OCaml Software Foundation”, etc.
  2. We find another, clearer formulation. Tautologically, this CoC applies to spaces managed by organizations that have agreed to follow this CoC. The “This includes” list is a good starting point, but maybe a pointer to a web page with a full list is in order.
2 Likes

As a long time user of OCaml, I must say I haven’t witnessed strong abuse in the OCaml user group over the years. And each time there were public issues, they stopped rather rapidly. But I suppose we don’t see everything that happens, so I can grasp why some written rules may be considered necessary.

However, I think most CoC’s (and here in particular) blend two issues that should be kept separate:

  • A juristic issue, that is ruling what is considered as abuse, how it should be reported, addressed, to whom, which outcomes are possible, etc. A fair contradictory setting should be enforced (that is, people filing a complaint shouldn’t be the target of attacks, people accused of such a behavior should have the right to defend themselves…).
  • A moral issue made of subjective, laicized, religious-like mantras (be kind, be empathic…).

The latter seem obvious and inocuous but they are dangerous in the sense that they could create a situation where someone is abused in the name of these values, either in good faith or perniciously. Old and recent History show that it happens very easily.

For these reasons, I think a CoC should only be based on the first approach. Such a text could then be preceded by an explanation of its goal, namely maintaining an open group of OCaml users and developers, in the interest of the said group and of the evolution of OCaml itself.

1 Like

What makes juristic precepts less liable to abuse than ethical precepts?

If your basic assumption is that any guidelines or system that could possibly be abused or misconstrued is invalid, I don’t see how you can you can end up with any guidelines or any system whatsoever.

This is just a special case of Wittgenstein’s rule following paradox: if you are unwilling or unable to grant that there is a regularity, a rule (“die Regel”), patterning behavior into something we can agree on, you can’t have any reliable guidelines or system whatsoever (not even Nat).

I can’t help feeling that this vague and sweeping dismissal is both unhelpful and disrespectful. I’m disappointed to see this kind of uncooperative attitude from someone tagged as a “maintainer”, not to mention the petty personal attacks based on obvious moments of frustration. I can’t see anything constructive coming out of this kind of discourse, but it looks like a good way to sow division.


My defense of the general efforts of the CoC aside, I’m afraid I cannot understand how “rules” like “Be friendly and patient.” can be effectively enforceable with the threat of exclusion from the community. It is one thing to draw a hard line against harassment, racism, xenophobia, sexism etc. as did the previous CoC, but quite another IMO to try to enforce etiquette that is nice-to have, but can easily be “violated” in a fleeting moment of impatience or when someone is having a bad day. Put another way, it is obvious to me that someone should face a ban because they persist in blatantly racist behavior, and it is obvious to me that someone should not face a ban because they have a habit of infrequent frustrated outburst that don’t end up looking like harassment or abuse.

6 Likes

I think your message answers things that can’t really be extracted from my initial message (about the notion of precept, conflating moral values and ethics, about [my] “basic assumption” which I didn’t state…). So let’s just say that I’m advocating a statutory regulation, with rules that can be activated based upon provable, concrete facts. Sure this is imperfect and debatable and all but I think it’s better than what I think is the alternative, namely basing decisions upon the alleged state of mind of a suspected abuser (they were mean, they weren’t empathic…) or of the moral values of a CoC committee member.

2 Likes

I see: this actually helps clarify your point for me a great deal. I agree with your point about the need to be careful about not projecting things about “state of mind” etc… I can also see that I made assumption about your assumptions that aren’t actually implied by your statement.

Thank you for the clarification, and my apologies for my own projections there.

3 Likes

This makes me wonder: Is there an important benefit to listing the spaces covered by the CoC within the CoC itself? Doing so prevents outside groups and “unofficial” OCaml forums/events/organizations from adopting the CoC without modifying it. Maybe it would be sufficient to link to a canonical list of forums/events/organizations where the CoC is in effect? This would allow “unofficial” forums/events/organizations to participate as well.

It’s certainly difficult, probably impossible, to list them all within the CoC. It’s good to list some of them as examples, though. But my point was that the current formulation (“These rules apply to all spaces managed by the OCaml development team”) doesn’t quite work.

Once again, thanks everyone for all the feedback here and over DMs. Really appreciate everyone’s involvement in this. Below is our response. Feel free to nudge us if we missed somethig!

Scope of the Code of Conduct

The list of spaces has been modified to better capture the essence of the spaces this Code of Conduct applies to (thanks to Xavier & Gabriel for the wording)

These rules apply to the projects hosted in the GitHub ocaml organization, the discuss.ocaml.org forum, the caml-list@inria.fr mailing list, OCaml IRC, OCaml discord, physical events like OCaml Workshop, and any other OCaml-related space that adopted this Code of Conduct. A more comprehensive list of spaces is available at the code-of-conduct GitHub repository.

Built-in moderation tools

Platforms such as discuss have built-in moderation tools to make it easier to bring something to the attention of the moderators. At the moment, we think it might be best to keep admin activities such as spam filtering and Code of Conduct violations separate. We may want to display Code of Conduct details at platforms like discuss/discord etc. Happy to sync on this with the admins and moderators of the various platforms on this.

Offline events

This code of conduct document can serve as a good place to start for offline events such as OCaml workshop, Mirage retreat, local meetups etc., but it may not be sufficient to cover all the needs for physical events. The Code of Conduct team is willing to work with organisers of OCaml related physical events to improve the text and help with moderation.

Violations outside community spaces

We understand inhibitions about including violations outside community spaces, though we think it’s important not to skip it in the text. It is in order to account for interactions not within the places we’ve listed explicitly; such as direct messages, private mailing lists etc. in the context of OCaml community. Hopefully we have little need to fall back to this clause, and even when there is it will be evaluated in a case by case basis.

Reporting

As mentioned in the document itself, the rules apply to everyone in the community. We would like to make it clear that there are no exceptions to this, including Code of Conduct committee members. If a report is submitted on a committee member, the report will be treated as any other report, the committee composed by all members except the one reported against. If any other member wants to recuse themselves for whatever reason, they will be free to do so. In fact, members will be free to recuse themselves for any report before the discussions start, e.g. if the reporter or the person whom it is reported against is close to the member. This is one of the reasons individual emails to contact members are made available, people are free to contact a subset of the committee members to submit a violation report. Again, the member will recuse from the process when they themselves are reporting a violation. If a member’s actions are found to be in strong violation of the CoC, after necessary steps are taken, they may also be asked to resign and a new member inducted.

Next steps

The text has a more permanent place at GitHub - ocaml/code-of-conduct: Documents related to the Code of Conduct. You are welcome to use it for your OCaml projects. Recommendations for using this Code of Conduct can be found in the repository. Feel free to get in touch or use the issue tracker if you have questions.

2 Likes