..
   This work is licensed under a Creative Commons Attribution 3.0 Unported License.
   SPDX-License-Identifier: CC-BY-3.0

.. _LLVM Community Code of Conduct:

==============================
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 rare cases, violations of this code outside of these spaces may affect a 
person’s ability to participate within these spaces. Important examples 
include `sexual and gender-based violence`_, `hate crimes`_, and `hate speech`_. 
We do not conduct proactive research, but we have an obligation to respond 
to any reported concerns. We are not interested in evaluating severity, 
responding punitively, or holding people accountable. Both the relevance 
and our response is instead focused on how a person’s continued participation 
impacts the community’s safety, wellbeing, and inclusivity. We specifically 
prioritize remaining a welcoming community to victims as well as groups 
subjected to systemic marginalization or underrepresentation.

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.

Bans
====

The code of conduct committee may decide to ban an individual from the
community for violating the code of conduct. The goal of a ban is to protect
community members from having to interact with people who are consistently not
respecting the code of conduct. Please refer to the
:doc:`Developer Policy<DeveloperPolicy>` section on Bans for how to handle
interactions with former community members. If you need further guidance,
please contact conduct@llvm.org.

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

The committee will consist of a minimum 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)
* Stella Stamenova (sstamenova\@llvm.org)
* David Blaikie (dblaikie\@llvm.org)
* Mike Edwards (medwards\@llvm.org)
* Cyndy Ishida (cishida\@llvm.org)
* Tanya Lattner (tanyalattner\@llvm.org)


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

* `July 15, 2023 <https://llvm.org/coc-reports/2023-07-15-report.html>`_
* `July 15, 2022 <https://llvm.org/coc-reports/2022-07-15-report.html>`_
* `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.

Thanks!
=======

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

License
=======

All content on this page is licensed under a `Creative Commons Attribution 3.0
Unported License`_.

.. _Django Project: https://www.djangoproject.com/conduct/
.. _Speak Up! project: http://speakup.io/coc.html
.. _sexual and gender-based violence:
.. _hate crimes: https://hatecrime.osce.org
.. _hate speech: https://www.un.org/en/genocideprevention/documents/UN%20Strategy%20and%20Plan%20of%20Action%20on%20Hate%20Speech%2018%20June%20SYNOPSIS.pdf
.. _Creative Commons Attribution 3.0 Unported License: http://creativecommons.org/licenses/by/3.0/
