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

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 the 
: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.

Reporting
=========

If you believe someone is violating the code of conduct you can always report
it to the LLVM Foundation Code of Conduct Committee by emailing
conduct@llvm.org. All reports will be kept confidential. This isn't a public
list and only members of the advisory committee will receive the report. For
details on what to include in the report, please see the :doc:`Reporting Guide
<ReportingGuide>`.

If you believe anyone is in physical danger, please notify appropriate law
enforcement first. If you are unsure what law enforcement agency is
appropriate, please include this in your report and we will attempt to notify
them.

If the violation occurs at an event such as a Developer Meeting and requires
immediate attention, you can also reach out to any of the event organizers or
staff. Event organizers and staff will be prepared to handle the incident and
able to help. If you cannot find one of the organizers, the venue staff can
locate one for you. We will also post detailed contact information for specific
events as part of each events' information. In person reports will still be
kept confidential exactly as above, but also feel free to (anonymously if
needed) email conduct@llvm.org.

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

The committee will consist of a mininum of 5 members and members are asked to
serve at least a 1 year term. New committee members will be selected by the
current committee and the LLVM Foundation Board of Directors.

When responding to a Code of Conduct report, the committee follows the
following 
:doc:`Response Guide<ResponseGuide>`.

The current committee members are:

* Kit Barton (kbarton\@llvm.org)
* Kristof Beyls (kristof.beyls\@llvm.org)
* Mike Edwards (medwards\@llvm.org)
* Hal Finkel (hfinkel\@llvm.org)
* Cyndy Ishida (cishida\@llvm.org)
* Anton Korobeynikov (anton.korobeynikov\@llvm.org)
* Tanya Lattner (tanyalattner\@llvm.org)
* Chris Lattner (clattner\@llvm.org)
* Tom Stellard (tstellar\@llvm.org)


Transparency Reports
====================

* `April 28, 2022 <https://llvm.org/coc-reports/2022-04-28-report.html>`_

For details about what a Transparency Report is and what it contains, please see the :doc:`Response Guide<ResponseGuide>`.

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

If you have questions, please feel free to contact the LLVM Foundation Code of
Conduct 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

