==============================
LLVM Community Code of Conduct
==============================

.. note::

   This document is currently a **DRAFT** document while it is being discussed
   by the community.

The LLVM community has always worked to be a welcoming and respectful
community, and we want to ensure that doesn't change as we grow and evolve. To
that end, we have a few ground rules that we ask people to adhere to:

* `be friendly and patient`_,
* `be welcoming`_,
* `be considerate`_,
* `be respectful`_,
* `be careful in the words that you choose and be kind to others`_, and
* `when we disagree, try to understand why`_.

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 communicate
and participate in the community.

This code of conduct applies to all spaces managed by the LLVM project or The
LLVM Foundation. This includes IRC channels, mailing lists, bug trackers, LLVM
events such as the developer meetings and socials, and any other forums created
by the project that the community uses for communication. It applies to all of
your communication and conduct in these spaces, including emails, chats, things
you say, slides, videos, posters, signs, or even t-shirts you display in these
spaces. In addition, violations of this code outside these spaces may, in rare
cases, affect a person's ability to participate within them, when the conduct
amounts to an egregious violation of this code.

If you believe someone is violating the code of conduct, we ask that you report
it by emailing conduct@llvm.org. For more details please see our
:doc:`Reporting Guide <ReportingGuide>`.

.. _be friendly and patient:

* **Be friendly and patient.**

.. _be welcoming:

* **Be welcoming.** We strive to be a community that welcomes and supports
  people of all backgrounds and identities. This includes, but is not limited
  to members of any race, ethnicity, culture, national origin, colour,
  immigration status, social and economic class, educational level, sex, sexual
  orientation, gender identity and expression, age, size, family status,
  political belief, religion or lack thereof, and mental and physical ability.

.. _be considerate:

* **Be considerate.** Your work will be used by other people, and you in turn
  will depend on the work of others. Any decision you take will affect users
  and colleagues, and you should take those consequences into account. Remember
  that we're a world-wide community, so you might not be communicating in
  someone else's primary language.

.. _be respectful:

* **Be respectful.** Not all of us will agree all the time, but disagreement is
  no excuse for poor behavior and poor manners. We might all experience some
  frustration now and then, but we cannot allow that frustration to turn into
  a personal attack. It's important to remember that a community where people
  feel uncomfortable or threatened is not a productive one. Members of the LLVM
  community should be respectful when dealing with other members as well as
  with people outside the LLVM community.

.. _be careful in the words that you choose and be kind to others:

* **Be careful in the words that you choose and be kind to others.** Do not
  insult or put down other participants. Harassment and other exclusionary
  behavior aren't acceptable. This includes, but is not limited to:

  * Violent threats or language directed against another person.
  * Discriminatory jokes and language.
  * Posting sexually explicit or violent material.
  * Posting (or threatening to post) other people's personally identifying
    information ("doxing").
  * Personal insults, especially those using racist or sexist terms.
  * Unwelcome sexual attention.
  * Advocating for, or encouraging, any of the above behavior.

  In general, if someone asks you to stop, then stop. Persisting in such
  behavior after being asked to stop is considered harassment.

.. _when we disagree, try to understand why:

* **When we disagree, try to understand why.** Disagreements, both social and
  technical, happen all the time and LLVM is no exception. It is important that
  we resolve disagreements and differing views constructively. Remember that
  we're different. The strength of LLVM comes from its varied community, people
  from a wide range of backgrounds. Different people have different
  perspectives on issues. Being unable to understand why someone holds
  a viewpoint doesn't mean that they're wrong. Don't forget that it is human to
  err and blaming each other doesn't get us anywhere. Instead, focus on helping
  to resolve issues and learning from mistakes.

Questions?
==========

If you have questions, please feel free to contact the LLVM Foundation Code of
Conduct Advisory Committee by emailing conduct@llvm.org.


(This text is based on the `Django Project`_ Code of Conduct, which is in turn
based on wording from the `Speak Up! project`_.)

.. _Django Project: https://www.djangoproject.com/conduct/
.. _Speak Up! project: http://speakup.io/coc.html

