Code of Conduct
===============

The QEMU community is made up of a mixture of professionals and
volunteers from all over the world. Diversity is one of our strengths,
but it can also lead to communication issues and unhappiness.
To that end, we have a few ground rules that we ask people to adhere to.

* Be welcoming. We are committed to making participation in this project
  a harassment-free experience for everyone, regardless of level of
  experience, gender, gender identity and expression, sexual orientation,
  disability, personal appearance, body size, race, ethnicity, age, religion,
  or nationality.

* Be respectful. Not all of us will agree all the time.  Disagreements, both
  social and technical, happen all the time and the QEMU community is no
  exception. When we disagree, we try to understand why.  It is important that
  we resolve disagreements and differing views constructively.  Members of the
  QEMU community should be respectful when dealing with other contributors as
  well as with people outside the QEMU community and with users of QEMU.

Harassment and other exclusionary behavior are not acceptable. A community
where people feel uncomfortable or threatened is neither welcoming nor
respectful.  Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery

* Personal attacks

* Trolling or insulting/derogatory comments

* Public or private harassment

* Publishing other's private information, such as physical or electronic
  addresses, without explicit permission

This isn't an exhaustive list of things that you can't do. Rather, take
it in the spirit in which it's intended: a guide to make it easier to
be excellent to each other.

This code of conduct applies to all spaces managed by the QEMU project.
This includes IRC, the mailing lists, the issue tracker, community
events, and any other forums created by the project team which the
community uses for communication. This code of conduct also applies
outside these spaces, when an individual acts as a representative or a
member of the project or its community.

By adopting this code of conduct, project maintainers commit themselves
to fairly and consistently applying these principles to every aspect of
managing this project.  If you believe someone is violating the code of
conduct, please read the :ref:`conflict-resolution` document for
information about how to proceed.

Sources
-------

This document is based on the `Fedora Code of Conduct
<http://web.archive.org/web/20210429132536/https://docs.fedoraproject.org/en-US/project/code-of-conduct/>`__
(as of April 2021) and the `Contributor Covenant version 1.3.0
<https://www.contributor-covenant.org/version/1/3/0/code-of-conduct/>`__.
