CINXE.COM
Python Software Foundation Code of Conduct Working Group Enforcement Procedures - Python Software Foundation Policies
<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="canonical" href="https://policies.python.org/python.org/code-of-conduct/Enforcement-Procedures/"> <link rel="prev" href="../Best-Practices/"> <link rel="next" href="../Procedures-for-Reporting-Incidents/"> <link rel="icon" href="../../../assets/images/favicon.png"> <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.39"> <title>Python Software Foundation Code of Conduct Working Group Enforcement Procedures - Python Software Foundation Policies</title> <link rel="stylesheet" href="../../../assets/stylesheets/main.8c3ca2c6.min.css"> <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"> <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> <link rel="stylesheet" href="../../../stylesheets/extra.css"> <script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> <script async type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="psf-policies" /><meta name="readthedocs-version-slug" content="latest" /><meta name="readthedocs-resolver-filename" content="/python.org/code-of-conduct/Enforcement-Procedures/" /><meta name="readthedocs-http-status" content="200" /></head> <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#python-software-foundation-code-of-conduct-working-group-enforcement-procedures" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <header class="md-header md-header--shadow" data-md-component="header"> <nav class="md-header__inner md-grid" aria-label="Header"> <a href="https://python.org/psf/" title="Python Software Foundation Policies" class="md-header__button md-logo" aria-label="Python Software Foundation Policies" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for="__drawer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class="md-header__title" data-md-component="header-title"> <div class="md-header__ellipsis"> <div class="md-header__topic"> <span class="md-ellipsis"> Python Software Foundation Policies </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> Python Software Foundation Code of Conduct Working Group Enforcement Procedures </span> </div> </div> </div> <form class="md-header__option" data-md-component="palette"> <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0"> <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4M7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"/></svg> </label> <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1"> <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <div class="md-header__source"> <a href="https://github.com/psf/policies" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg> </div> <div class="md-source__repository"> GitHub </div> </a> </div> </nav> </header> <div class="md-container" data-md-component="container"> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href="https://python.org/psf/" title="Python Software Foundation Policies" class="md-nav__button md-logo" aria-label="Python Software Foundation Policies" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> Python Software Foundation Policies </label> <div class="md-nav__source"> <a href="https://github.com/psf/policies" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg> </div> <div class="md-source__repository"> GitHub </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../PSF-Privacy-Notice/" class="md-nav__link"> <span class="md-ellipsis"> PSF Privacy Notice </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" > <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0"> <span class="md-ellipsis"> pypi.org </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> pypi.org </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../pypi.org/Acceptable-Use-Policy/" class="md-nav__link"> <span class="md-ellipsis"> Acceptable Use Policy </span> </a> </li> <li class="md-nav__item"> <a href="../../../pypi.org/Code-of-Conduct/" class="md-nav__link"> <span class="md-ellipsis"> Code of Conduct </span> </a> </li> <li class="md-nav__item"> <a href="../../../pypi.org/Terms-of-Use/" class="md-nav__link"> <span class="md-ellipsis"> Terms of Use </span> </a> </li> <li class="md-nav__item"> <a href="../../../pypi.org/Privacy-Notice/" class="md-nav__link"> <span class="md-ellipsis"> Privacy Notice </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked> <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0"> <span class="md-ellipsis"> python.org </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> python.org </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../CVE-Numbering-Authority/" class="md-nav__link"> <span class="md-ellipsis"> CVE Numbering Authority </span> </a> </li> <li class="md-nav__item"> <a href="../../Contributing/" class="md-nav__link"> <span class="md-ellipsis"> Contributing </span> </a> </li> <li class="md-nav__item"> <a href="../../Copyright-Policy/" class="md-nav__link"> <span class="md-ellipsis"> Copyright Policy </span> </a> </li> <li class="md-nav__item"> <a href="../../Legal-Statements/" class="md-nav__link"> <span class="md-ellipsis"> Legal Statements </span> </a> </li> <li class="md-nav__item"> <a href="../../Privacy-Notice/" class="md-nav__link"> <span class="md-ellipsis"> Privacy Notice </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" checked> <label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0"> <span class="md-ellipsis"> Code of Conduct </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_3_6"> <span class="md-nav__icon md-icon"></span> Code of Conduct </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../" class="md-nav__link"> <span class="md-ellipsis"> Python Software Foundation Code of Conduct </span> </a> </li> <li class="md-nav__item"> <a href="../Best-Practices/" class="md-nav__link"> <span class="md-ellipsis"> Best practices guide for a Code of Conduct for events </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Python Software Foundation Code of Conduct Working Group Enforcement Procedures </span> </a> </li> <li class="md-nav__item"> <a href="../Procedures-for-Reporting-Incidents/" class="md-nav__link"> <span class="md-ellipsis"> Python Software Foundation Community Member Procedure For Reporting Code of Conduct Incidents </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" > <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0"> <span class="md-ellipsis"> us.pycon.org </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4"> <span class="md-nav__icon md-icon"></span> us.pycon.org </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../us.pycon.org/Privacy-Notice/" class="md-nav__link"> <span class="md-ellipsis"> Privacy Notice </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2" > <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0"> <span class="md-ellipsis"> Code of Conduct </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_2"> <span class="md-nav__icon md-icon"></span> Code of Conduct </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../../us.pycon.org/code-of-conduct/" class="md-nav__link"> <span class="md-ellipsis"> PyCon US Code of Conduct </span> </a> </li> <li class="md-nav__item"> <a href="../../../us.pycon.org/code-of-conduct/Enforcement-Procedures/" class="md-nav__link"> <span class="md-ellipsis"> PyCon US Code of Conduct Enforcement Procedures </span> </a> </li> <li class="md-nav__item"> <a href="../../../us.pycon.org/code-of-conduct/Procedures-for-Reporting-Incidents/" class="md-nav__link"> <span class="md-ellipsis"> PyCon US Procedures for Reporting Code of Conduct Incidents </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <h1 id="python-software-foundation-code-of-conduct-working-group-enforcement-procedures">Python Software Foundation Code of Conduct Working Group Enforcement Procedures</h1> <p>This document summarizes the procedures the Python Software Foundation Code of Conduct work group uses to enforce the Code of Conduct.</p> <h1 id="summary-of-processes">Summary of processes</h1> <p>When the work group receives a report of a possible Code of Conduct violation, it will:</p> <ol> <li>Acknowledge the receipt of the report.</li> <li>Evaluate conflicts of interest.</li> <li>Call a meeting of work group members without a conflict of interest.</li> <li>Evaluate the reported incident.</li> <li>Propose a behavioral modification plan.</li> <li>Propose consequences for the reported behavior.</li> <li>Vote on behavioral modification plan and consequences for the reported person.</li> <li>Contact online community administrators/moderators to approve the behavioral modification plan and consequences.</li> <li>Follow up with the reported person.</li> <li>Decide further responses.</li> <li>Follow up with the reporter.</li> </ol> <h1 id="acknowledge-the-report">Acknowledge the report</h1> <p>Reporters should receive an emailed acknowledgment of the receipt of their report within 24 hours.</p> <h1 id="conflict-of-interest-policy">Conflict of interest policy</h1> <p>Examples of conflicts of interest include:</p> <ul> <li>The reporter or reported person is your manager</li> <li>You have a romantic or platonic relationship with either the reporter or the reported person. It's fine to participate if they are an acquaintance.</li> <li>The reporter or reported person is your metamour. (This is a term used in the poly community; the short definition is <a href="https://www.urbandictionary.com/define.php?term=Metamour">here</a>, and a longer description is <a href="https://solopoly.net/2012/09/29/whats-a-metamour-on-my-terms/">here</a>).</li> <li>The reporter or reported person is your family member</li> <li>The reporter or reported person is your direct client</li> <li>The reporter or reported person is someone you work closely with. This could be someone on your team or someone who works on the same project as you.</li> <li>The reporter or reported person is a maintainer who regularly reviews your contributions</li> </ul> <p>Committee members do not need to state why they have a conflict of interest, only that one exists. Other work group members should not ask why the person has a conflict of interest.</p> <p>Anyone who has a conflict of interest will remove themselves from the discussion of the incident, and recluse themselves from voting on a response to the report.</p> <h1 id="evaluating-a-report">Evaluating a report</h1> <h2 id="jurisdiction">Jurisdiction</h2> <ul> <li><em>Is this a Code of Conduct violation?</em> Is this behavior on our list of inappropriate behavior? Is it borderline inappropriate behavior? Does it violate our community norms?</li> <li><em>Did this occur in a space that is within our Code of Conduct's scope?</em> If the incident occurred outside the community, but a community member's mental health or physical safety may be negatively impacted if no action is taken, the incident may be in scope. Private conversations in community spaces are also in scope.</li> </ul> <h2 id="impact">Impact</h2> <ul> <li><em>Did this incident occur in a private conversation or in a public space?</em> Incidents that all community members can see will have more negative impact.</li> <li><em>Does this behavior negatively impact a marginalized group in our community?</em> Is the reporter a person from a marginalized group in our community? How is the reporter being negatively impacted by the reported person's behavior? Are members of the marginalized group likely to disengage with the community if no action was taken on this report?</li> <li><em>Does this incident involve a community leader?</em> Community members often look up to community leaders to set the standard of acceptable behavior.</li> </ul> <h2 id="risk">Risk</h2> <ul> <li><em>Does this incident include sexual harassment?</em></li> <li><em>Does this pose a safety risk?</em> Does the behavior put a person's physical safety at risk? Will this incident severely negatively impact someone's mental health?</li> <li><em>Is there a risk of this behavior being repeated?</em> Does the reported person understand why their behavior was inappropriate? Is there an established pattern of behavior from past reports?</li> </ul> <p>Reports which involve higher risk or higher impact may face more severe consequences than reports which involve lower risk or lower impact.</p> <h1 id="propose-a-behavioral-modification-plan">Propose a behavioral modification plan</h1> <p>The work group will determine a concrete behavioral modification plan that ensures the inappropriate behavior is not repeated. The work group will also discuss what actions may need to be taken if the reported person does not agree to the behavioral modification plan.</p> <p>What follows are examples of possible behavioral modification plans for incidents that occur in online spaces under the scope of this Code of Conduct. This behavioral modification list is not inclusive, and the Python Software Foundation Code of Conduct work group reserves the right to take any action it deems necessary.</p> <ul> <li>Requiring that the reported person not use specific language</li> <li>Requiring that the reported person not join in on specific types of discussions</li> <li>Requiring that the reported person not send private messages to a community member</li> <li>Requiring that the reported person not join specific communication channels</li> <li>Removing the reported person from administrator or moderator rights to community infrastructure</li> <li>Removing a volunteer from their duties and responsibilities</li> <li>Removing a person from leadership of relevant organizations</li> <li>Removing a person from membership of relevant organizations</li> </ul> <h1 id="propose-consequences">Propose consequences</h1> <p>What follows are examples of possible consequences to an incident report. This consequences list is not inclusive, and the Python Software Foundation Code of Conduct work group reserves the right to take any action it deems necessary.</p> <p>Possible private responses to an incident include:</p> <ul> <li>Nothing, if the behavior was determined to not be a Code of Conduct violation</li> <li>A verbal or emailed warning</li> <li>A final warning</li> <li>Temporarily removing the reported person from the online community</li> <li>Permanently removing the reported person from the online community</li> <li>Publishing an account of the incident</li> </ul> <h1 id="work-group-vote">Work group vote</h1> <p>Some work group members may have a conflict of interest and may be excluded from discussions of a particular incident report. Excluding those members, decisions on the behavioral modification plans and consequences will be determined by a two-thirds majority vote of the Python Software Foundation Code of Conduct work group.</p> <h1 id="administratorsmoderators-approval">Administrators/moderators approval</h1> <p>Once the work group has approved the behavioral modification plans and consequences, they will communicate the recommended response to the administrators/moderators of the online community. The work group should not state who reported this incident. They should attempt to anonymize any identifying information from the report.</p> <p>Administrators/moderators are required to respond back with whether they accept the recommended response to the report. If they disagree with the recommended response, they should provide a detailed response or additional context as to why they disagree. Administrators/moderators are encouraged to respond within a week. </p> <p>In cases where the administrators/moderators disagree on the suggested resolution for a report, the Python Software Foundation Code of Conduct work group may choose to notify the Python Software Foundation board.</p> <h1 id="follow-up-with-the-reported-person">Follow up with the reported person</h1> <p>The Python Software Foundation Code of Conduct work group will work with online community administrators/moderators to draft a response to the reported person. The email should contain:</p> <ul> <li>A description of the person's behavior in neutral language</li> <li>The negative impact of that behavior</li> <li>A concrete behavioral modification plan</li> <li>Any consequences of their behavior</li> </ul> <p>The work group should not state who reported this incident. They should attempt to anonymize any identifying information from the report. The reported person should be discouraged from contacting the reporter to discuss the report. If they wish to apologize to the reporter, the work group can accept the apology on behalf of the reporter.</p> <h1 id="decide-further-responses">Decide further responses</h1> <p>If the reported person provides additional context, the Python Software Foundation Code of Conduct work group may need to re-evaluate the behavioral modification plan and consequences.</p> <h1 id="follow-up-with-the-reporter">Follow up with the reporter</h1> <p>A person who makes a report should receive a follow-up email stating what action was taken in response to the report. If the work group decided no response was needed, they should provide an email explaining why it was not a Code of Conduct violation. Reports that are not made in good faith (such as "reverse sexism" or "reverse racism") may receive no response.</p> <p>The follow-up email should be sent no later than one week after the receipt of the report. If deliberation or follow-up with the reported person takes longer than one week, the work group should send a status email to the reporter.</p> <h1 id="documentation-and-privacy-policies">Documentation and Privacy Policies</h1> <p>Depending on how the Code of Conduct committee is set up, there may be different places where information about the Code of Conduct reports may be accessible:</p> <ul> <li>Personal email of Code of Conduct committee members</li> <li>Archives of committee mailing lists</li> <li>Logs from committee online chats</li> <li>Shared online documents, such as Google Docs or Next Cloud documents</li> </ul> <p>In all cases, documents and notes should only be available to committee members who do not have a conflict of interest for the report. This requires communities to choose documentation tools that will meet their privacy needs.</p> <h2 id="committee-shared-email-address">Committee shared email address</h2> <p>Code of Conduct committees need to be able to be reached by one email address. It is recommended that the committee use an alias that forwards email to individual members.</p> <p>Using a mailing list is not recommended. This is because mailing lists typically archive all emails. This means new committee members gain access to all past archives. They can deliberately or accidentally see past reports where they have a conflict of interest. In order to prevent potential conflicts of interest, it is recommended to not have a mailing list archive.</p> <h2 id="committee-online-discussion">Committee online discussion</h2> <p>A Code of Conduct committee may have an online, real-time discussion forum, such as Slack, Zulip, or IRC. If the online chat platform allows, it is recommended to set the committee channel to have past history not be available to new committee members who join the channel.</p> <p>When a report comes in and a discussion needs to happen in an online space, care needs to be taken to avoid conflicts of interest. In the committee chat channel, state 'We have a report that involves [REPORTED PERSON]'. Do not say who was the reporter or who were witnesses if the report was sent to an individual committee member. Ask which committee members do not have a conflict of interest. Add those committee members to a group discussion, separate from the committee channel. If a committee member does not respond, do not add them to the new group discussion. If a committee member finds they have a conflict of interest because of who reported the incident or who witnessed it, they should recluse themselves from the discussion.</p> <p>Committee members should not use bots or IRC bouncers to log the group discussions. All documentation of discussions and decisions should be put in online, shared documentation.</p> <p>If no online real-time discussion forum is used, committee members without a conflict of interest will discuss the case on a separate email thread. If no committee member has a conflict of interest, and the committee email is an alias, the committee may reply to the alias to discuss the issues.</p> <h2 id="shared-documentation">Shared Documentation</h2> <p>The Code of Conduct committee should keep two types of shared documents:</p> <ul> <li>A spreadsheet with the status of open and closed cases</li> <li>A separate document for each report</li> </ul> <h3 id="status-spreadsheet">Status Spreadsheet</h3> <p>The spreadsheet with status of open and closed cases should have the following format:</p> <table> <thead> <tr> <th>Safety risk?</th> <th>Risk of repeating?</th> <th>Status</th> <th>Code Name</th> <th>Date & Time</th> <th>Actions needed</th> <th>Resolution</th> </tr> </thead> <tbody> <tr> <td>Yes</td> <td>Yes</td> <td>Ongoing</td> <td>home shelf</td> <td>07/07 8:30am and 07/08 12:30pm</td> <td>Team on the lookout for reported person</td> <td>Temporary ban for the remainder of the event, reevaluate attendance for next year</td> </tr> <tr> <td>No</td> <td>Maybe</td> <td>Resolved</td> <td>stunned bulb</td> <td>07/07 8:00pm</td> <td>-</td> <td>Verbal warning</td> </tr> </tbody> </table> <p>Keep resolutions and notes vague enough that enforcement team members with a conflict of interest don't know the details of the incident. Use gender-neutral language when describing the reported person in the spreadsheet.</p> <h3 id="report-documentation">Report Documentation</h3> <p>Each report should be assigned a code name, using an <a href="http://watchout4snakes.com/wo4snakes/Random/RandomPhrase">online random phrase generator</a>. The code name should be used in the document's title. Only committee members without a conflict of interest should have access to the report documentation.</p> <p>Report documents should include:</p> <ul> <li>A summary of a verbal report, or the text of an emailed report. Use neutral, non-judgmental words to describe the behavior. Where possible, separate out the behavior of the reported person and the impact on the reporter.</li> <li>A summary of committee discussions, including whether the report is in scope</li> <li>Proposed behavioral modification plan</li> <li>Proposed consequences for the reported behavior</li> <li>A summary of verbal discussions, or the text of email discussions with community moderators, administrators, registration, or other event organizers about the proposed consequences and behavioral modification plan</li> <li>A summary of verbal discussions, or the text of email discussions with the reported person</li> <li>The text that was sent to follow up with the reporter</li> </ul> <p>All discussion summaries should include dates that they took place.</p> <h3 id="ongoing-documentation-of-event-and-community-bans">Ongoing Documentation of Event and Community Bans</h3> <p>The Board Secretary and/or other persons or roles designated by a resolution of the Board ("maintainers") shall maintain a list of people who have been banned from Python Software Foundation-organized events including:</p> <ul> <li>The effective date of their ban</li> <li>The duration of their bans, or whether the ban is permanent.</li> </ul> <p>This list shall only be viewable by the maintainers.</p> <h3 id="privacy-concerns">Privacy Concerns</h3> <p>There are some common privacy pitfalls to online tools like Google Docs. Make sure to always share the document with committee members who don't have a conflict of interest, rather than turning link sharing on. This prevents people outside of the committee from accessing the documents.</p> <p>Another common issue is that when a folder is shared with the whole committee, even if a person doesn't have edit or view access to an individual report, they can still see the document's title. This can give information away, such as the person who made the report. Some communities use initials in the report title instead. That can still reveal information, and it makes it hard to talk about report status in public spaces (such as an event). The committee may want to assign a code name to each report, and reference that name in the report title and status spreadsheet. You can use an <a href="http://watchout4snakes.com/wo4snakes/Random/RandomPhrase">online random phrase generator</a> to create the code name.</p> <p>When on-boarding new committee members, they should be provided with a list of names of people who have been reported in a Code of Conduct incident. The new committee member should state whether they have any conflicts of interest with reviewing documentation for those cases. If not, they will be given edit access to the report documents.</p> <h1 id="changes-to-code-of-conduct">Changes to Code of Conduct</h1> <p>When discussing a change to the Python community Code of Conduct or enforcement policies, the Python Software Foundation Code of Conduct work group will follow this decision-making process:</p> <ul> <li><strong>Brainstorm options.</strong> Work group members should discuss any relevant context and brainstorm a set of possible options. It is important to provide constructive feedback without getting side-tracked from the main question. Brainstorming should be limited to 3-7 days maximum.</li> <li><strong>Vote.</strong> Proposed changes to the Code of Conduct will be decided by a two-thirds majority of all voting members of the Code of Conduct work group. Work group members are listed in the <a href="https://wiki.python.org/psf/ConductWG/Charter">work group charter</a>. Currently active voting members are listed below.</li> <li><strong>Board Vote.</strong> Once a working draft is in place for the Code of Conduct and procedures, the Code of Conduct work group shall provide the PSF board with a draft of the changes. The PSF board will vote on the changes at a board meeting.</li> </ul> <h2 id="current-list-of-voting-members">Current list of voting members</h2> <p>Tania Allard KwonHan Bae Brett Cannon Rami Chowdhury Jessica Greene Cheuk Ting Ho Tereza Iofciu 艁ukasz Langa Deb Nicholson Mojdeh Rastgoo Jeff Triplett Drew Winstel</p> <h2 id="advisers">Advisers</h2> <p>Advisers to the PSF Code of Conduct work group have access to the work group mailing list, but are not voting members.</p> <p>Anwesha Das Maricela Sanchez Miranda Naomi Ceder Thomas Wouters</p> <h1 id="attribution">Attribution</h1> <ul> <li>The <a href="https://us.pycon.org/2018/about/code-of-conduct/">PyCon Code of Conduct</a> is licensed under a <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a>.</li> <li>Ada Initiative's guide titled "<a href="http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Responding_to_reports">Conference anti-harassment/Responding to Reports</a>" is licensed under a <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a></li> <li>Audrey Eschright of <a href="http://safetyfirstpdx.org/">Safety First PDX</a> provided the impact vs risk assessment framework, which is licensed under a <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution Share-Alike 3.0 Unported License</a> by Audrey Eschright of <a href="http://safetyfirstpdx.org/">Safety First PDX</a></li> <li><a href="https://github.com/sagesharp/code-of-conduct-template/">Code of Conduct template</a> was created by <a href="https://otter.technology/code-of-conduct-training">Otter Tech</a> and is licensed under a <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a></li> </ul> <aside class="md-source-file"> <span class="md-source-file__fact"> <span class="md-icon" title="Last update"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 8, 2024</span> </span> </aside> </article> </div> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> </main> <footer class="md-footer"> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <script id="__config" type="application/json">{"base": "../../..", "features": [], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src="../../../assets/javascripts/bundle.525ec568.min.js"></script> </body> </html>