===============
Reporting Guide
===============

.. note::

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

If you believe someone is violating the :doc:`code of conduct <CodeOfConduct>`
you can always report it to the LLVM Foundation Code of Conduct Advisory
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.

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.

.. note::
   The LLVM community has long handled inappropriate behavior on its own, using
   both private communication and public responses. Nothing in this document is
   intended to discourage this self enforcement of community norms. Instead,
   the mechanisms described here are intended to supplement any self
   enforcement within the community. They provide avenues for handling severe
   cases or cases where the reporting party does not wish to respond directly
   for any reason.

Filing a report
===============

Reports can be as formal or informal as needed for the situation at hand. If
possible, please include as much information as you can. If you feel
comfortable, please consider including:

* Your contact info (so we can get in touch with you if we need to follow up).
* Names (real, nicknames, or pseudonyms) of any individuals involved. If there
  were other witnesses besides you, please try to include them as well.
* When and where the incident occurred. Please be as specific as possible.
* Your account of what occurred. If there is a publicly available record (e.g.
  a mailing list archive or a public IRC logger) please include a link.
* Any extra context you believe existed for the incident.
* If you believe this incident is ongoing.
* Any other information you believe we should have.

What happens after you file a report?
=====================================

You will receive an email from the advisory committee acknowledging receipt
within 24 hours (and we will aim to respond much quicker than that).

The advisory committee will immediately meet to review the incident and try to
determine:

* What happened and who was involved.
* Whether this event constitutes a code of conduct violation.
* Whether this is an ongoing situation, or if there is a threat to anyone's
  physical safety.

If this is determined to be an ongoing incident or a threat to physical safety,
the working groups' immediate priority will be to protect everyone involved.
This means we may delay an "official" response until we believe that the
situation has ended and that everyone is physically safe.

The working group will try to contact other parties involved or witnessing the
event to gain clarity on what happened and understand any different
perspectives.

Once the advisory committee has a complete account of the events they will make
a decision as to how to respond. Responses may include:

* Nothing, if we determine no violation occurred or it has already been
  appropriately resolved.
* Providing either moderation or mediation to ongoing interactions (where
  appropriate, safe, and desired by both parties).
* A private reprimand from the working group to the individuals involved.
* An imposed vacation (i.e. asking someone to "take a week off" from a mailing
  list or IRC).
* A public reprimand.
* A permanent or temporary ban from some or all LLVM spaces (mailing lists,
  IRC, etc.)
* Involvement of relevant law enforcement if appropriate.

If the situation is not resolved within one week, we'll respond within one week
to the original reporter with an update and explanation.

Once we've determined our response, we will separately contact the original
reporter and other individuals to let them know what actions (if any) we'll be
taking. We will take into account feedback from the individuals involved on the
appropriateness of our response, but we don't guarantee we'll act on it.

After any incident, the advisory committee will make a report on the situation
to the LLVM Foundation board. The board may choose to make a public statement
about the incident. If that's the case, the identities of anyone involved will
remain confidential unless instructed by those inviduals otherwise.

Appealing
=========

Only permanent resolutions (such as bans) or requests for public actions may be
appealed. To appeal a decision of the working group, contact the LLVM
Foundation board at board@llvm.org with your appeal and the board will review
the case.

In general, it is **not** appropriate to appeal a particular decision on
a public mailing list. Doing so would involve disclosure of information which
whould be confidential. Disclosing this kind of information publicly may be
considered a separate and (potentially) more serious violation of the Code of
Conduct. This is not meant to limit discussion of the Code of Conduct, the
advisory board itself, or the appropriateness of responses in general, but
**please** refrain from mentioning specific facts about cases without the
explicit permission of all parties involved.

.. _members:

Members of the Code of Conduct Advisory Committee
=================================================

The members serving on the advisory committee are listed here with contact
information in case you are more comfortable talking directly to a specific
member of the committee.

.. note::

   FIXME: When we form the initial advisory committee, the members names and private contact info need to be added here.



(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
