<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
        "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link rel=stylesheet type="text/css" href="style.css" title="style">
<title>
Linux man-pages Contributor Covenant Code of Conduct
</title>
</head>

<body>

<!--BEGIN-LINKS-->
<form method="get" action="https://www.google.com/search">
<table border=0 cellpadding=0 cellspacing=0 width="100%">
<tr>
<td align="left">
<font size="-1">

Linux <em>man-pages</em>: &nbsp;
<a href="./index.html">home</a> | 
contributing | 
<a href="./reporting_bugs.html">bugs</a> | 
<a href="./patches.html">patches</a> | 
<a href="./download.html">download</a>
&nbsp; || &nbsp; 
<a href="https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git">git</a> |
<a href="https://man7.org/linux/man-pages/index.html">online pages</a></font>
</td>
<td align="right">
<input type="text" name="q" size=10 maxlength=255 value="">
<input type="hidden" name="sitesearch" value="man7.org/linux/man-pages">
<input type="submit" name="sa" value="Search online pages">
</td>
</tr>
</table>
</form>
<!--END-LINKS-->


<h1>Contributor Covenant Code of Conduct (draft)</h1>

<h2>Our Pledge</h2>

<p>
    In the interest of fostering an open and welcoming environment, we as
    contributors and maintainers pledge to making participation in our
    project and our community a harassment-free experience for everyone,
    regardless of age, body size, disability, ethnicity, sex
    characteristics, gender identity and expression, level of experience,
    education, socio-economic status, nationality, personal appearance,
    race, religion, or sexual identity and orientation.
</p>

<h2>Our Standards</h2>

<p>
Examples of behavior that contributes to creating a positive environment include:
</p>
<ul>
    <li>
	Using welcoming and inclusive language
    </li>
    <li>
	Being respectful of differing viewpoints and experiences
    </li>
    <li>
	Gracefully accepting constructive criticism
    </li>
    <li>
	Focusing on what is best for the community
    </li>
    <li>
	Showing empathy towards other community members
    </li>
</ul>

<p>
Examples of unacceptable behavior by participants include:
</p>

<ul>
    <li>
	The use of sexualized language or imagery and unwelcome sexual
	attention or advances
    </li>
    <li>
	Trolling, insulting/derogatory comments, and personal or political
	attacks
    </li>
    <li>
        Public or private harassment
    </li>
    <li>
	Publishing others' private information, such as a physical or
	electronic address, without explicit permission
    </li>
    <li>
	Other conduct which could reasonably be considered inappropriate in
	a professional setting
    </li>
</ul>

<h2>Our Responsibilities</h2>

<p>
    Maintainers are responsible for clarifying the standards of acceptable
    behavior and are expected to take appropriate and fair corrective action
    in response to any instances of unacceptable behavior.
</p>

<p>
    Maintainers have the right and responsibility to remove, edit, or reject
    comments, commits, code, wiki edits, issues, and other contributions
    that are not aligned to this Code of Conduct, or to ban temporarily or
    permanently any contributor for other behaviors that they deem
    inappropriate, threatening, offensive, or harmful.
</p>

<h2>Scope</h2>

<p>
    This Code of Conduct applies both within project spaces and in public
    spaces when an individual is representing the project or its community.
    Examples of representing a project or community include using an
    official project e-mail address, posting via an official social media
    account, or acting as an appointed representative at an online or
    offline event. Representation of a project may be further defined and
    clarified by project maintainers.
</p>

<h2>Enforcement</h2>

<p>
    Instances of abusive, harassing, or otherwise unacceptable behavior may
    be reported by contacting the project maintainer, Michael Kerrisk,
    at <a
    href="mailto:mtk&#46;manpages&#37;&#52;&#48;gmail&#46;com">&lt;mtk&#46;manpages<span>&#64;</span>gmail<span>&#46;</span>com</a>&gt;.
</p>
<p>
    In the event that you have a problem with the maintainer,
    there is no formal process, but it is suggested that you send a report
    to the Linux Kernel Code of Conduct Committee at
&lt;<a class="reference external" href="mailto:conduct&#37;&#52;&#48;kernel&#46;org">conduct<span>&#64;</span>kernel<span>&#46;</span>org</a>&gt;.
</p>
<p>
    All complaints will be reviewed and investigated
    and will result in a response that is deemed necessary and appropriate
    to the circumstances. The maintainer/Committee is obligated to
    maintain confidentiality with regard to the reporter of an incident.
    Further details of specific enforcement policies may be posted
    separately.
</p>

<h2>Attribution</h2>

<p>
    This Code of Conduct is adapted from the
    <a href="https://www.contributor-covenant.org/">Contributor Covenant</a>,
    version 1.4, available at
    <a
    href="https://www.contributor-covenant.org/version/1/4/code-of-conduct.html">https://www.contributor-covenant.org/version/1/4/code-of-conduct.html</a>.
</p>

<h2>Interpretation</h2>

<p>
    Above all the goal is this: be kind to one another.
</p>
<p>
    Other than that, the
    <a
    href="https://www.kernel.org/doc/html/latest/process/code-of-conduct-interpretation.html#code-of-conduct-interpretation">Linux
    Kernel Contributor Covenant Code of Conduct Interpretation</a>
    document will be considered as the starting point for the interpretation
    of this Contributor Covenant Code of Conduct.
</p>

  
<!--BEGIN-STATCOUNTER-->
<!-- SITETRACKING.linux_man-pages -->
<!-- Start of StatCounter Code -->
<script type="text/javascript">
var sc_project=5618989;
var sc_invisible=1;
var sc_partition=60;
var sc_click_stat=1;
var sc_security="4f8507d7";
</script>

<script type="text/javascript"
src="https://www.statcounter.com/counter/counter.js"></script><noscript><div
class="statcounter"><a title="customisable counter"
href="https://www.statcounter.com/free_hit_counter.html"
target="_blank"><img class="statcounter"
src="https://c.statcounter.com/5618989/0/4f8507d7/1/" alt="customisable
counter" ></a></div></noscript>
<!-- End of StatCounter Code -->
<!--END-STATCOUNTER-->
</body>
</html>
