===============
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 individuals 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
would 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
