<!-- go/cmark -->

<!--* freshness: {owner: 'tommi' reviewed: '2026-06-17'} *-->

# Contributors Code of Conduct

Google and the WebRTC team are committed to preserving and fostering a diverse,
welcoming and open community. The WebRTC project is open to contributors from
all walks of life and should be a harassment-free experience for everyone,
regardless of age, body size, disability, ethnicity, gender identity and
expression, level of experience, nationality, personal appearance, race,
religion, or sexual identity and orientation.

## Scope

This Code of Conduct applies to our repos and organizations, mailing lists, blog
content, and any other WebRTC-supported communication group, as well as any
private communication initiated in the context of these spaces.

## Standards

Examples of behavior that contributes to creating a positive environment
include:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

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

## Responsibilities

You are empowered to politely engage when you feel that you or others are
disrespected. The person making you feel uncomfortable may not be aware of what
they are doing - politely bringing their behavior to their attention is
encouraged.

If you are uncomfortable speaking up, or feel that your concerns are not being
duly considered, you can email community@webrtc.org to request involvement from
a community manager. All concerns shared with community managers will be kept
confidential. While all reports will be taken seriously, the WebRTC community
managers may not act on complaints that they feel are not violations of this
code of conduct.

## Enforcement

Consequences for failing to comply with this policy may include, at the sole
discretion of the WebRTC community managers:

- a request for an apology;
- a private or public warning or reprimand;
- a temporary ban from the mailing list, blog, WebRTC repository or
  organization, or other WebRTC-supported communication group, including loss of
  committer status;
- a permanent ban from any of the above, or from all current and future
  WebRTC-supported or Google-supported communities, including loss of committer
  status.

Participants warned to stop any harassing behavior are expected to comply
immediately; failure to do so will result in an escalation of consequences.

The decisions of the WebRTC community managers may be appealed via
community-appeals@webrtc.org.

## Acknowledgements

This Code of Conduct is based on Contributor Covenant, version 1.4, available
[here](http://contributor-covenant.org/version/1/4) and
[Chromium](https://chromium.googlesource.com/chromium/src/+/main/CODE_OF_CONDUCT.md)

## License

This Code of Conduct is available for reuse under the Creative Commons Zero
(CC0) license.
