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

Version: 2019-11-07

The Open Networking Foundation (ONF) is dedicated to providing a safe and
harassment-free professional environment (meetings, events, activities, both
online and offline) for everyone, regardless of gender, sexual orientation,
disability, physical appearance, race, age, religion, or any other protected
category. ONF does not tolerate harassment of any participant in any form. ONF
participants violating these rules may be sanctioned or expelled from ONF
projects and programs, including but not limited to online communities,
internal programs, and in-person events at the discretion of ONF staff, with no
refund. These individuals could also have their permissions revoked, and this
decision would be communicated to the violator’s company. In addition,
violations may be turned over to the appropriate authorities for resolution.

Expected Behavior
-----------------

* Be respectful, kind, and professional
* Exercise consideration and empathy in your words and actions
* Be mindful of others

ONF is an international community and assumes good intent, but also understands
that written communication, including emojis, does not always convey nuances,
such as humor. Please think about how your words may be misinterpreted by the
community before saying, posting, or sending them.

Unacceptable Behavior
---------------------

Intimidating, harassing, discriminatory, abusive, derogatory, or demeaning
speech or actions by any participant, at any ONF event online or offline as
well as in one-on-one communication carried out in the context of ONF will not
be tolerated.

Harassment includes, but is not limited to: offensive verbal comments related
to gender, gender identity and expression, sexual orientation, disability,
physical appearance, body size, race, age, religion; it also includes stalking,
following, harassing photography or recording, sustained disruption of talks or
other events, inappropriate physical contact, and unwelcome sexual attention.

Consequences of Unacceptable Behavior
-------------------------------------

Participants who are asked to stop any unacceptable behavior are expected to
comply immediately.  If a participant engages in unacceptable behavior, ONF
staff members or volunteer leaders may initiate any reasonable action they deem
appropriate, including expulsion from ONF online forums or summoning event
security or law enforcement.

Contact Information
-------------------

If you are being harassed, notice that someone else is being harassed, or have
any other concerns involving someone’s welfare, please notify a member of the
ONF team or email `conduct@opennetworking.org
<mailto:conduct@opennetworking.org>`_. In case of an emergency, please contact
law enforcement first and then notify ONF. ONF will be available to help
participants contact local law enforcement, provide escorts, or otherwise
provide assistance, so that those experiencing unacceptable behavior can feel
safe for the duration of the event. ONF values your participation.
