owned this note
owned this note
Published
Linked with GitHub
---
type: slide
---
## Fostering Diversity in Open Source Communities: Introducing a Code of Conduct
---
## Trigger Warning: Harassment
---
## What is a Code of Conduct?
* A Code of Conduct (CoC) outlines the expected behaviours and responsibilities for participating within a community.
* It also serves to establish specific community guidelines.
---
## Why Code of Conduct?
* Define community standards.
* Signal a welcoming and inclusive project.
* Providing a reporting mechanism for inappropriate behavior.
* Establishing 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 underrepresented groups
* LGBT+, disabled people, etc.
---
## Open Source Software
People matter as much as code!
---
## 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
*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
* *Self plug*: Come to our workshop tomorrow on "A taste of Functional Programming with OCaml" to know more about OCaml.
---
## OCaml community CoC
### Attempt#1 (2017-2020)
* Discussions among maintainers and community leaders to introduce a CoC.
* Formed a team and drafted a CoC based on the Contributor Covenant.
---
## OCaml community CoC
### Attempt#2 (2022)
* I took the initiative to drive this forward on behalf of the OCaml Software Foundation.
* Established a team to draft a CoC and serve as arbitrators for violation reports.
* Proposed the addition of a CoC to major communication channels and GitHub source repositories.
* Sought community feedback.
* Made amendments based on suggestions.
---
## Forming a CoC enforcement team
---
### Duties of the CoC enforcement team
* Serve as an approachable point of contact for discussing issues and act as arbitrators for handling violation reports.
* Ensure the enforcement of actions in accordance with the CoC guidelines.
* The scope includes GitHub projects and communication channels such as mailing lists, Discord, Slack, Discourse, and private messages within the community context.
---
## 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 long-time contributors
* Generally nice and inclusive in their behaviour
* Project maintainers (not a hard requirement)
---
## Candidates
To avoid conflict of interests, we didn't include:
* Individuals with significant power, such as BDFL.
* Individuals occupying prominent hiring positions, including CXOs of companies engaged in the community.
---
### CoC Team by-laws
Self-imposed rules for forming a diverse, representative, and approachable committee:
* Achieve a balance in terms of gender, ethnicity, nationality, etc.
* Ensure representation of the community's diversity.
* Maintain a number of members roughly proportional to the community's size.
* Avoid an overrepresentation of individuals from the same organization to promote decentralization.
---
## 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*
---
### 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
---
### 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
A Code of Conduct (CoC) can be implemented when a project is created, or it can also be added at a later stage.
---
## CoC Adoption
* Community should be onboard with the idea.
* It's crucial to solicit community feedback before implementation.
* Engage with the community to facilitate discussions on sensitive matters and work towards a compromise.
* Legitimate concerns should result in adjustments to the text or processes.
---
### Points of contention
*Debunking some commonly raised concerns about introducing a Code of Conduct*
---
### Point of contention #1
_Explicitly listing protected classes makes others feel excluded_
Why list protected classes?
* Underrepresented groups are more vulnerable to harassment
* Listing protected classes does not imply exclusion of in-group individuals.
---
### 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*
- It is established with data that disparity in diversity is a problem in tech in general and OSS in particular
- Underrepresented groups are more vulnerable to harassment
---
### 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*
* People may also leave due to abuse/harassment - also a loss for the community
---
### 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*
* 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 the text to Coq community's Code of Conduct
* Derived from 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)