% 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)=

# 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-friendly-and-patient),
- [be welcoming](#be-welcoming),
- [be considerate](#be-considerate),
- [be respectful](#be-respectful),
- [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), and
- [when we disagree, try to understand why](#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 Discord 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][sexual and gender-based violence], [hate crimes][hate crimes], and [hate speech][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](mailto: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](mailto: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](mailto: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](mailto: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:

- Aaron Ballman (aaron.ballman@llvm.org)
- Kristof Beyls (kristof.beyls@llvm.org)
- David Blaikie (dblaikie@llvm.org)
- Jonas Devlieghere (jdevlieghere@llvm.org)
- Cyndy Ishida (cishida@llvm.org)
- Tanya Lattner (tanyalattner@llvm.org)
- Stella Stamenova (sstamenova@llvm.org)

## Transparency Reports

- [July 15, 2025](https://discourse.llvm.org/t/llvm-code-of-conduct-transparency-report-july-15-2024-july-15-2025/88622)
- [July 15, 2024](https://discourse.llvm.org/t/llvm-code-of-conduct-transparency-report-july-15-2023-july-15-2024/82687)
- [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](mailto:conduct@llvm.org).

## Thanks!

This text is based on the [Django Project][django project] Code of Conduct, which is in turn
based on wording from the [Speak Up! project][speak up! project].

## License

All content on this page is licensed under a [Creative Commons Attribution 3.0
Unported License][creative commons attribution 3.0 unported license].

[creative commons attribution 3.0 unported license]: http://creativecommons.org/licenses/by/3.0/
[django project]: https://www.djangoproject.com/conduct/
[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
[sexual and gender-based violence]: https://hr.un.org/sites/hr.un.org/files/SEA%20Glossary%20%20%5BSecond%20Edition%20-%202017%5D%20-%20English_0.pdf
[speak up! project]: http://speakup.io/coc.html
