Skip to content

Commit ce2d023

Browse files
committed
Drafts of governance, roadmap
[skip ci]
1 parent 95e1fbe commit ce2d023

File tree

4 files changed

+180
-0
lines changed

4 files changed

+180
-0
lines changed

doc/source/devel/devguide.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,10 @@ the algorithms with implications to the performance or validity of results.
108108

109109
It may list references to 3rd party bugtrackers, in case the reported bugs
110110
match the criteria listed above.
111+
112+
Contributor guidelines
113+
======================
114+
115+
Please see `our community guidelines
116+
<https://github.com/nipy/nibabel/blob/master/.github/CODE_OF_CONDUCT.md>`_.
117+
Other projects call these guidelines the "code of conduct".

doc/source/devel/governance.rst

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
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>`_.

doc/source/devel/index.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Developer documentation page
1010
:maxdepth: 2
1111

1212
devguide
13+
governance
14+
roadmap
1315
add_test_data
1416
add_image_format
1517
devdiscuss

doc/source/devel/roadmap.rst

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
=======
2+
Roadmap
3+
=======
4+
5+
The roadmap is intended for larger, fundamental changes to the project that are
6+
likely to take months or years of developer time. Smaller-scoped items will
7+
continue to be tracked on our issue tracker.
8+
9+
The scope of these improvements means that these changes may be controversial,
10+
are likely to involve significant discussion among the core development team,
11+
and may require the creation of one or more NIAPs (Nibabel Increased
12+
Awesomeness Proposals).
13+

0 commit comments

Comments
 (0)