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!
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.
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.
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.
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