owned this note
owned this note
Published
Linked with GitHub
---
type: slide
---
# Introducing a Code of Conduct
---
## Trigger Warning: Harassment
---
## What is a Code of Conduct?
---
## What is a Code of Conduct?
* A Code of Conduct (CoC) lists a set of behaviours and responsibilities for participating within a community.
* A CoC also permits to define certain community guidelines
---
## Why Code of Conduct?
---
## Why Code of Conduct?
* Define community standards
* Signal a welcoming and inclusive project
* Have means to report inappropriate behaviour
* Outline procedures for handling harassment
---
## Diversity in Open Source Communities
In a 2017 survey, it was reported
* Gender
* 3% of all respondents were women
* Ethnicity
* 16% of them were ethnic minorities
* Other underreporesented groups
* LGBT+, disabled people, etc.
---
## Open Source Software
People matter as much as code!
---
## Who can ask for inclusion of a CoC?
* Project maintainers
---
## Who can ask for inclusion of a CoC?
* Project maintainers
* Contributors
---
## Who can ask for inclusion of a CoC?
* Project maintainers
* Contributors
* Potential contributors
* External observers
*Basically anyone!*
---
## Story of adding a Code of Conduct to the OCaml community
---
## OCaml
OCaml is an ML-family functional programming language
---
## OCaml
OCaml is an ML-family functional programming language
*ML as in meta-language, not machine learning ;)*
---
## OCaml
OCaml is an ML-family functional programming language
- Created in 1996 at INRIA, France
- Many users from academia and industry
- Growing community across the world
---
## OCaml
OCaml is an ML-family functional programming language
- Created in 1996 at INRIA, France
- Many users from academia and industry
- Growing community across the world
* *Self plug*: Come to my talk tomorrow on "An Invitation to OCaml" to know more about OCaml.
---
## OCaml community CoC
### Attempt#1 (2017-2020)
* Conversations within maintainers and community leaders to introduce a CoC
* Formed a team and wrote a CoC text based on Contributor Covenant
---
## OCaml community CoC
### Attempt#2 (2022)
* Form a team to write a CoC and act as arbitrators for violation reports
* Propose adding a CoC to major communication channels and GitHub source repositories
* Community feedback
* Amendments based on suggestions
---
## Forming a CoC enforcement team
---
### Duties of the CoC enforcement team
* Approachable point of contact for people to discuss issues and act as arbitrators for violation reports
* Enforce actions according to the guidelines in the CoC
* Scope:
* GitHub projects
* Communication channels such as mailing lists, discord, slack, discourse, private messages in the context of the community etc.
---
## Candidates
An ideal candidate for the CoC enforcement team is someone who is:
* Willing to do this work
* often this is unpaid, non-rewarding volunteer work
* Been part of the community and intend to do so for some more time
* A mix of recent and old contributors
* Generally nice and inclusive in their behaviour
* Project maintainers (not a hard requirement)
---
## Candidates
To avoid conflict of interests, don't include:
* People with power - e.g. BDFL
* People in prominent hiring positions
---
### CoC Team by-laws
A set of rules for having a diverse, representative and approachable committee
* Balanced in terms of gender, ethnicity, nationality etc
* Representative of the community's diversity
* Number of members roughly corresponding to community size
* Not too many people from the same organization to keep some decentralization
---
## Text
Two ways to go about it
* Use an existing Code of Conduct text as a starting point
* Write one from scratch
---
## Text
Two ways to go about it
* Use am existing Code of Conduct text as a starting point
* Write one from scratch
*There are pros and cons to both*
---
## Re-using an existing text
* *Pros*
* Tried and tested
* Less time consuming
* More extensive discussions about the text in different communities
* Can be tweaked for your community
* *Cons*
* Has past associations
---
## Writing a text from scratch
* *Pros*
* Tailored to your community
* Have more control over what's in the text
* *Cons*
* Reinventing the wheel
* Time consuming
* Important issues may be forgotton due to limited members in the team
* Less exhaustive
---
### Various stages of action for CoC violation reports
* Private conversation or warning
* Public conversation or warning
* Request an apology
* Short-term ban
* Long-term ban
---
## CoC Adoption
A CoC can be introduced when a project is created. It could as well be added at a later point.
---
### Proposing to add a CoC
* We went with the popular Contributor Covenant as base text
* Added a community specific FAQ section
* Request for feedback on discourse forum
---
## CoC Adoption
* Community should be onboard with the idea
---
## CoC Adoption
* Community should be onboard with the idea
* Important to get community feedback before enforcing
---
## CoC Adoption
* Community should be onboard with the idea
* Important to get community feedback before introducing
* Engage with the community to discuss delicate matter and reach a compromise
---
## CoC Adoption
* Community should be onboard with the idea
* Important to get community feedback before introducing
* Engage with the community to discuss delicate matter and reach a compromise
* Reasonable concerns lead to amendments in the text or process
---
### Points of contention
* Some commonly raised concerns about introducing a Code of Conduct
---
### Point of contention #1
_Explicitly listing protected classes makes others feel excluded_
---
### Point of contention #1
_Explicitly listing protected classes makes others feel excluded_
Why list protected classes?
* Underrepresented groups are more vulnerable to harassment
* Does not mean in-group people are excluded
---
### Point of contention #2
*There's no need for a CoC; everything is functioning smoothly*
---
### Point of contention #2
*There's no need for a CoC; everything is functioning smoothly*
- Everything is "seemingly" all right - we don't know for sure
- That's not a guarantee there won't be incidents in future
---
### Point of contention #3
*A CoC is centered around diversity*
---
### Point of contention #3
*A CoC is centered around diversity*
- It is established with data that disparity in diversity is a problem in tech in general and OSS in particular
- Underrespresented groups are more vulnerable to harassment
---
### Point of contention #4
*Interactions outside community spaces might be scrutinized*
---
### Point of contention #4
*Interactions outside community spaces might be scrutinized*
- Interactions outside community is generally **not** a concern
- Unless there are serious issues like hate messages, etc.
---
### Point of contention #5
*Some members may leave the community - it will be a loss for the community*
---
### Point of contention #5
*Some members may leave the community - it will be a loss for the community*
* People may also leave due to abuse/harassment - also a loss for the community
---
### Point of contention #6
*Issues with text*
---
### Point of contention #6
*Issues with text*
* Nearly impossible to come up with a text everyone is 100% happy with
* Text can evolve based on community's needs
---
### Point of contention #7
*CoC enforcement team members may misuse their power*
---
### Point of contention #7
*CoC enforcement team members may misuse their power*
* All members of the community are held to the same standards
* Reports on a team member will be treated like any other report
* They will be excluded from the investigation
---
## Amendments
* Changed to Coq community's Code of Conduct
* based on Django Code of Conduct
* Some minor changes to text
---
## Takeaways
* A CoC lists responsibilities and expected behaviour for participation in a community
* It signals a community's values to contributors and other communities
* Has means for reporting and taking action for harassment
* Aims to make the community more inclusive
---
### Acknowledgements
Thanks go to, in no particular order:
Louis Roché, Marcello Seri, Raja Boujbel, Simon Cruanes, Sonja Heinze -- **members of the OCaml CoC enforcement team**
Xavier Leroy, Gabriel Scherer, Sebastian Hinderer, KC Sivaramakrishnan, Anil Madhavapeddy and many more
---
# Thank You!
---
### References
* [DEI Survey](https://www.linuxfoundation.org/research/the-2021-linux-foundation-report-on-diversity-equity-and-inclusion-in-open-source#:~:text=Given%20that%20people%20of%20vastly,and%20well%2Dbeing%20is%20important.)
* [OCaml Code of Conduct discourse thread](https://discuss.ocaml.org/t/ocaml-community-code-of-conduct/10494)
* [GitHub: Adding a Code of Conduct for your project](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/adding-a-code-of-conduct-to-your-project)
* [Code of Conduct Conversations in Open Source Sofware
Projects on Github](https://par.nsf.gov/servlets/purl/10347026)