|
| 1 | +.. _governance: |
| 2 | + |
| 3 | +======================================= |
| 4 | +NXEP 1 — Governance and Decision Making |
| 5 | +======================================= |
| 6 | + |
| 7 | +:Author: Jarrod Millman < [email protected]> |
| 8 | +:Author: Dan Schult < [email protected]> |
| 9 | +:Status: Draft |
| 10 | +:Type: Process |
| 11 | +:Created: 2020-06-25 |
| 12 | + |
| 13 | +Abstract |
| 14 | +======== |
| 15 | + |
| 16 | +NetworkX is a consensus-based community project. Anyone with an interest in the |
| 17 | +project can join the community, contribute to the project design, and |
| 18 | +participate in the decision making process. This document describes how that |
| 19 | +participation takes place, how to find consensus, and how deadlocks are |
| 20 | +resolved. |
| 21 | + |
| 22 | +Roles And Responsibilities |
| 23 | +========================== |
| 24 | + |
| 25 | +The Community |
| 26 | +------------- |
| 27 | +The NetworkX community consists of anyone using or working with the project |
| 28 | +in any way. |
| 29 | + |
| 30 | +Contributors |
| 31 | +------------ |
| 32 | +Any community member can become a contributor by interacting directly with the |
| 33 | +project in concrete ways, such as: |
| 34 | + |
| 35 | +- proposing a change to the code or documentation via a GitHub pull request; |
| 36 | +- reporting issues on our |
| 37 | + `GitHub issues page <https://github.com/networkx/networkx/issues>`_; |
| 38 | +- discussing the design of the library, website, or tutorials on the |
| 39 | + `mailing list <http://groups.google.com/group/networkx-discuss/>`_, |
| 40 | + or in existing issues and pull requests; or |
| 41 | +- reviewing |
| 42 | + `open pull requests <https://github.com/networkx/networkx/pulls>`_, |
| 43 | + |
| 44 | +among other possibilities. By contributing to the project, community members |
| 45 | +can directly help to shape its future. |
| 46 | + |
| 47 | +Contributors should read the :ref:`contributor_guide` and our :ref:`code_of_conduct`. |
| 48 | + |
| 49 | +Core Developers |
| 50 | +--------------- |
| 51 | +Core developers are community members that have demonstrated continued |
| 52 | +commitment to the project through ongoing contributions. They |
| 53 | +have shown they can be trusted to maintain NetworkX with care. Becoming a |
| 54 | +core developer allows contributors to merge approved pull requests, cast votes |
| 55 | +for and against merging a pull request, and be involved in deciding major |
| 56 | +changes to the API, and thereby more easily carry on with their project related |
| 57 | +activities. Core developers appear as team members on the `NetworkX Core Team page |
| 58 | +<https://github.com/orgs/networkx/teams/core-developers/members>`_ and can |
| 59 | +be messaged ``@networkx/core-developers``. Core |
| 60 | +developers are expected to review code contributions while adhering to the |
| 61 | +:ref:`core_dev`. |
| 62 | + |
| 63 | +New core developers can be nominated by any existing core developer. |
| 64 | +Discussion about new core developer nominations is one of the few activities |
| 65 | +that takes place on the project's private management list. The decision to |
| 66 | +invite a new core developer must be made by “lazy consensus”, meaning unanimous |
| 67 | +agreement by all responding existing core developers. Invitation must take |
| 68 | +place at least one week after initial nomination, to allow existing members |
| 69 | +time to voice any objections. |
| 70 | + |
| 71 | +.. _steering_council: |
| 72 | + |
| 73 | +Steering Council |
| 74 | +---------------- |
| 75 | +The Steering Council (SC) members are core developers who have additional |
| 76 | +responsibilities to ensure the smooth running of the project. SC members are |
| 77 | +expected to participate in strategic planning, approve changes to the |
| 78 | +governance model, and make decisions about funding granted to the project |
| 79 | +itself. (Funding to community members is theirs to pursue and manage.) The |
| 80 | +purpose of the SC is to ensure smooth progress from the big-picture |
| 81 | +perspective. Changes that impact the full project require analysis informed by |
| 82 | +long experience with both the project and the larger ecosystem. When the core |
| 83 | +developer community (including the SC members) fails to reach such a consensus |
| 84 | +in a reasonable timeframe, the SC is the entity that resolves the issue. |
| 85 | + |
| 86 | +Steering Council members appear as team members on the `NetworkX Steering |
| 87 | +Council Team page |
| 88 | +<https://github.com/orgs/networkx/teams/steering-council/members>`_ and |
| 89 | +can be messaged ``@networkx/steering-council``. Core |
| 90 | + |
| 91 | +Decision Making Process |
| 92 | +======================= |
| 93 | + |
| 94 | +Decisions about the future of the project are made through discussion with all |
| 95 | +members of the community. All non-sensitive project management discussion takes |
| 96 | +place on the project |
| 97 | +`mailing list <http://groups.google.com/group/networkx-discuss/>`_ |
| 98 | +and the `issue tracker <https://github.com/networkx/networkx/issues>`_. |
| 99 | +Occasionally, sensitive discussion may occur on a private list. |
| 100 | + |
| 101 | +Decisions should be made in accordance with our :ref:`mission_and_values`. |
| 102 | + |
| 103 | +NetworkX uses a *consensus seeking* process for making decisions. The group |
| 104 | +tries to find a resolution that has no open objections among core developers. |
| 105 | +Core developers are expected to distinguish between fundamental objections to a |
| 106 | +proposal and minor perceived flaws that they can live with, and not hold up the |
| 107 | +decision making process for the latter. If no option can be found without |
| 108 | +an objection, the decision is escalated to the SC, which will itself use |
| 109 | +consensus seeking to come to a resolution. In the unlikely event that there is |
| 110 | +still a deadlock, the proposal will move forward if it has the support of a |
| 111 | +simple majority of the SC. Any proposal must be described by a NetworkX :ref:`nxep`. |
| 112 | + |
| 113 | +Decisions (in addition to adding core developers and SC membership as above) |
| 114 | +are made according to the following rules: |
| 115 | + |
| 116 | +- **Minor documentation changes**, such as typo fixes, or addition / correction of a |
| 117 | + sentence (but no change of the NetworkX landing page or the “about” |
| 118 | + page), require approval by a core developer *and* no disagreement or requested |
| 119 | + changes by a core developer on the issue or pull request page (lazy |
| 120 | + consensus). Core developers are expected to give “reasonable time” to others |
| 121 | + to give their opinion on the pull request if they’re not confident others |
| 122 | + would agree. |
| 123 | + |
| 124 | +- **Code changes and major documentation changes** require agreement by *two* |
| 125 | + core developers *and* no disagreement or requested changes by a core developer |
| 126 | + on the issue or pull-request page (lazy consensus). |
| 127 | + |
| 128 | +- **Changes to the API principles** require a :ref:`nxep` and follow the |
| 129 | + decision-making process outlined above. |
| 130 | + |
| 131 | +- **Changes to this governance model or our mission and values** |
| 132 | + require a :ref:`nxep` and follow the decision-making process outlined above, |
| 133 | + *unless* there is unanimous agreement from core developers on the change. |
| 134 | + |
| 135 | +If an objection is raised on a lazy consensus, the proposer can appeal to the |
| 136 | +community and core developers and the change can be approved or rejected by |
| 137 | +escalating to the SC, and if necessary, a NXEP (see below). |
| 138 | + |
| 139 | +.. _nxep: |
| 140 | + |
| 141 | +Enhancement Proposals (NXEPs) |
| 142 | +============================= |
| 143 | + |
| 144 | +Any proposals for enhancements of NetworkX should be written as a formal NXEP |
| 145 | +following the template :doc:`nxep-template`. The NXEP must be made public and |
| 146 | +discussed before any vote is taken. The discussion must be summarized by a |
| 147 | +key advocate of the proposal in the appropriate section of the NXEP. |
| 148 | +Once this summary is made public and after sufficient time to allow the |
| 149 | +core team to understand it, they vote. |
| 150 | +The workflow of a NXEP is detailed in :ref:`nxep0`. |
| 151 | + |
| 152 | +A list of all existing NXEPs is available :ref:`here <nxep_list>`. |
| 153 | + |
| 154 | +Acknowledgments |
| 155 | +=============== |
| 156 | + |
| 157 | +This document is based on the `scikit-image governance document |
| 158 | +<https://scikit-image.org/docs/stable/skips/1-governance.html>`_. |
0 commit comments