Adopting a code of conduct

Hi all,

The Orekit and associated communities are awesome. Browsing through the threads in this forum shows that discussions are always kind, helpful and everyone is treated with respect.

As the community grows, we have to consider that at some point in the future, some less kind people may step in and voluntarily or involuntarily harm it with bad behavior. We must be prepared for this.

There is a global trend in open-source communities to deal with this by establishing a code of conduct. One popular code of conduct is Contributor Covenant. It establishes simple rules as well as ways to enforce them with guidelines.

I would propose to adopt Contributor Covenant for our community. This will need a vote involving both the community and the PMC, but I would like to discuss it before starting a vote thread.

What do you think about it?

Full text of the Contributor Covenant:

Our Pledge

We as members, contributors, and leaders pledge 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.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

Our Standards

Examples of behavior that contributes to a positive environment for our community include:

  • Demonstrating empathy and kindness toward other people
  • Being respectful of differing opinions, viewpoints, and experiences
  • Giving and gracefully accepting constructive feedback
  • Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
  • Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

  • The use of sexualized language or imagery, and sexual attention or advances of any kind
  • Trolling, insulting or derogatory comments, and personal or political attacks
  • Public or private harassment
  • Publishing others’ private information, such as a physical or email address, without their explicit permission
  • Other conduct which could reasonably be considered inappropriate in a professional setting

Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders 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, and will communicate reasons for moderation decisions when appropriate.

Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [INSERT CONTACT METHOD]. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:

1. Correction

Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.

Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.

2. Warning

Community Impact: A violation through a single incident or series of actions.

Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.

3. Temporary Ban

Community Impact: A serious violation of community standards, including sustained inappropriate behavior.

Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.

4. Permanent Ban

Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.

Consequence: A permanent ban from any sort of public interaction within the community.

Attribution

This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at Contributor Covenant:

I agree with you that the Orekit community is exceptional. The cordiality of the members, the quality of the discussions, the will to confront the points of view before acting, force the admiration. I would like all the communities I frequent to be like the Orekit community.

Nevertheless, you are not safe from the arrival of philistine or people who take pleasure in conflict and would undermine the atmosphere and the desire to collaborate that you have.

If the project does not have a code of conduct, you will have a hard time making such a person listen to reason, to ask him or her to be cordial and constructive. If you do, he or she will complain about being the victim of personal and subjective attacks.

It is important to anticipate such situations and to provide a code of conduct for the project. Rather than reinventing the wheel, relying on an existing code such as the Contributor Covenant is a wise decision, even if it means not taking it as is and amending it if you feel it is necessary.

1 Like

Overall I’m supportive. What makes Orekit great is the people involved. This makes it clear that we don’t show favoritism but rather judge people by their actions.

Personally, approaching this as a code review, I see a few things that might need some more discussion.

Might be a quibble, but a certain level of education is required to participate in the community whether formal or informal. So far the language of the project has mostly been English, which must be learned somehow. Also learning enough computer science or astrodynamics to participate takes some education, though not necessarily a formal one. Perhaps change this to “formal education” since we don’t care about the degrees people have, only the quality of their work and their ability to communicate it in a way we can understand.

Might also be a quibble, but are there really no nations the community would be nervous about receiving contributions from? If someone from the North Korean government wanted to start making contributions would we accept them? Especially since Orekit is used for real satellites within ESA? Perhaps this needs to be balanced with software supply chain issues?

This term makes me nervous because in the US at least it has been used to show favoritism to some of the groups mentioned above and, paradoxically, exclude others.

It also seems at odds with enforcement actions 3 and 4 which exclude people from the community. Telling someone they are excluded from the community is certainly not inclusive.

Should probably be replaced with “The PMC” to clarify who the leaders are.

As I mentioned before I think Orekit has a great community and would like to see that continue. Orekit has been a very welcoming community for the decade I have known it and that has been a true strength. I remember that of my first contributions rewrote some code from a more established contributor, but after I provided some data showing the new approach was better the contribution was accepted. That is the kind of merits based interactions without favoritism that I hope will continue for years to come. As Orekit grows I think a code of conduct like the one above is a good idea to formalize some of the unspoken rules.

1 Like

I agree that as far as I recall we have had no problems with the sorts of things mentioned in the CoC. I think that it would be awesome if the CoC could just be, “Don’t be a jerk” or a “Golden Rule” thing but in practice on other projects that is insufficient. That’s where these more elaborate CoCs come into play. I don’t find any objection to the language proposed. It’s been used elsewhere and I don’t want to wordsmith it without being able to think through all the ramifications of doing so. For example I wouldn’t mind seeing “political affiliation” as a mentioned characteristic but that would be in the frame of normal mainstream political parties. You can’t do that of course because who gets to define “mainstream” etc. Therefore just keeping it as is is probably best.

Also it is worth noting that this is community interactive guidelines for keeping things professional with spelled out ramifications for not doing so. It does not impose any requirement to accept any and all contributions from anyone as long as they aren’t a jerk. This gets to a point Evan brought up in his tweaks. The CoC says nothing, nor should it, about having to accept shoddy code from a high school student. It is saying that we don’t verbally harass, treat poorly, etc. such a person that is trying to participate within their ability within the community.

I’m torn on this one particular clause as well. In general I don’t think it is a problem because it doesn’t discuss directly code contribution requirements it discusses that the interactions need to stay professional. Most open source projects accept contributions from people living in countries that are considered adversarial to the US and Europe to a certain extent, North Korea is just a most extreme example because of lack of other larger economic entanglements. It does bring up the fact that we should in general be on the look out for stealth changes which could introduce problematic behavior in the library, but that’s also pretty theoretical since the contribution group is pretty tight.

The first external contributor to Orekit was someone who had noticed that the documentation contained a number of spelling and grammatical errors, as well as clumsiness or unfortunate translations.

He suggested many corrections and, for a number of years, he reviewed new versions of the documentation. I’m not sure if this person had a background in computer science or space mechanics. His help was invaluable, however. This shows that it is possible to contribute to Orekit without having an education related to the technical or functional needs of the project.

On the other hand, if a contribution is not desirable, because it is not algorithmically or physically correct, because its technical quality is too poor or because the proposed function does not belong in the library, I hope you will be able to decline it politely, justifying your refusal, regardless of the author’s education and qualification level.

In my opinion, the level of education is not a criterion for contributing to the project.

Personally, I do not judge the relevance of a contribution in light of a person’s nationality or the personality of the president of his country. I am interested in the relevance of the contribution. I am all the more serene about this because, in the context of Orekit, this relevance can be verified by the competent people that you are, by your careful reviews and by the abundant tests that you develop and that are executed without ever tiring by the CI platform. A bug is still a bug, whether it was reported by a North Korean or even an American. :wink:

I understand your position and the misuse of the term irritates me too. However, I wouldn’t want someone to laugh at a contributor and denigrate them for being a woman, a homosexual or a person who stutters (this kind of behavior has been observed often among contributors to the Linux kernel, Sarah Sharp, a talented developer, even left the project because of it). This would be intolerable to me and that is why I think it is important to announce our desire for inclusiveness.

Furthermore, it is possible to honestly justify and assume a certain limit to inclusiveness by the limited resources of the project: we do not have the human and financial means to make all resources accessible in Braille, Chinese or even French. If Orekit were an application for the general public, or even an application that a government would consider imposing on its citizens, the accessibility of the application to blind people (one example among others) should be a priority. But this is not the case with Orekit. This tool is developed by a small number of specialists in space mechanics, for other specialists in that field. They have a limited amount of time and their employer sets priorities according to its economic interest.

I don’t know if it’s possible to write something not too awkward about it.

:+1:

1 Like

I’m less concerned about this term and believe that while there have been cases of using that term as a club on someone the ratio of that pales in comparison to the amount of exclusion that minority groups have and continue to experience both through unintentional and intentional behaviors. A lot of the hub bub in the US is hyper-coverage of those handful of excesses while we just accept the status quo as the way it is, the latter point why the inclusion of “inclusive” and the categories listed is there in the first place.

I don’t think we’ve had an inclusion problem in this community so can understand why adding that term here seems superfluous. However since you brought up the new dominant narrative in the US that the word inclusive is almost a pejorative I wanted to push back on that notion (as I usually do when I see it) because I don’t agree with the assessment that it is a negative term being used in general to achieve the opposite of the stated definition.

1 Like

In larger projects the enforcement committee is often separate from the core team, or upper management team. That’s in case the problem is with someone on that team in particular. However for a project our size I agree it’s probably best to have the PMC fill that function. If we get to some hypothetical point where we have dozens to hundreds of regular contributors factored into various teams then it could be revisited and amended at that time.

1 Like

Hi all!

I think this is a great initiative. The Orekit community is currently in a very good state, with many passionate, helpful and kind people. Adopting such a code of conduct would send the signal that the community is actively committed to keeping this atmosphere of goodwill.

Personally I would lean towards adopting the Contributor Covenant text as-is, for the sake of simplicity. I think it sets worthy goals and values, while leaving enough leeway to the community leaders to handle a specific or complex case like those mentionned in previous messages.

Maybe it could be useful to agree on the rules under which the Code of Conduct can be amended ? This way, if an unanticipated case were to happen, the community leaders could deal with it, and then edit the Code of Conduct to ensure the new rule is now explicit.

1 Like

You are right. This aspect must be addressed in the governance of the Orekit. In fact, as a first step, the governance needs to be amended to reflect the adoption of a code of conduct.