Skip to content

Commit 0b3db52

Browse files
committed
GOV: start to flesh out the deputy roles based on call
1 parent 6f220a2 commit 0b3db52

File tree

1 file changed

+131
-16
lines changed

1 file changed

+131
-16
lines changed

governance.md

Lines changed: 131 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -267,39 +267,154 @@ interactions with NumFOCUS.
267267
Deputy Project Leaders
268268
----------------------
269269

270-
DPLs are nominated by Steering Council members and appointed to 1yr terms by a
271-
majority vote of the Steering council. Any currently active Contributor is
272-
eligible to be considered for a DPL. The Steering Council should take into account
270+
DPLs (except for Release Manager) are nominated by Steering Council
271+
members and appointed to a 1yr term from their appointment date by a
272+
majority vote of the Steering council. Any currently active
273+
Contributor is eligible to be considered for a DPL.
273274

274-
It is at the discretion of the SC and PL
275-
if any given DPL position is filled.
275+
As with the PL, the DPL should strive to reach consensus about any
276+
issues with in their scope before invoking their authority to decide.
277+
Their decisions can be appealed to the PL, but the PL should defer to
278+
the DPL except in extraordinary circumstances.
276279

277-
If a DPL position is not filled, the responsibility devolves back to the PL. Each
278-
DPL appointment runs on its own calendar.
280+
An individual may hold more than one DPL simultaneously.
279281

280-
At the end of each year the DPL is given the option to continue for another year.
282+
It is at the discretion of the SC and PL if any given DPL position is
283+
filled.
281284

282-
The SC can remove a DPL using the same process as ejecting a Steering Council Member.
285+
If a DPL position is not filled, the responsibility devolves back to
286+
the PL.
283287

284-
An individual may hold more than one DPL simultaneously.
288+
At each 1yr term a DPL has the option to continue for another year or
289+
step down.
290+
291+
The SC can remove a DPL using the same process as ejecting a Steering
292+
Council Member.
293+
294+
The SC can create a new DPL position or eliminate an unfilled DPL
295+
position by majority vote.
296+
297+
298+
### Release Manager(s)
299+
300+
The Release Manager (RM) is appointed for a minor version (A.B.x)
301+
release series of Matplotlib. They are responsible for the full
302+
release life cycle of all minor releases in the series including:
303+
304+
- ensuring the whats new, API changes, and release notes are up to date
305+
- the timing of the releases
306+
- what changes should or should not be backported from the master
307+
branch
308+
- rebuilding and publishing the website
309+
- announcing the release
310+
- publishing sdist and wheels to pypi
311+
- notifying down-stream packagers of the release
312+
313+
An individual can be the RM as more than one release series at the
314+
same time.
315+
316+
317+
### Narrative Documentation Manager
318+
319+
Matplotlib has a tremendous amount of documentation that is narrative
320+
in form. This includes our examples and tutorials that live inside the
321+
main source repository and longer tutorials that live in other repositories
322+
in the Matplotlib organization.
323+
324+
The Narrative Documentation Matplotlib (NDM) is responsible for
325+
shepherding all of this content including the scope, level, tone, and
326+
voice.
327+
328+
### Reference Documentation Manager
329+
330+
Matplotlib also has a tremendous amount of reference documentation
331+
embedded in doc strings. This documentation needs to be complete and
332+
accurate as our users rely on it as the last authority of what a given
333+
method will do (short of reading the source).
285334

286-
### Release Manager
335+
The Reference Documentation Manager (RDM) is responsible for ensuring that
336+
the docstrings are:
287337

338+
- correctly formatted and render as intended
339+
- technically correct
340+
- complete
288341

289-
### Narrative Documentation Lead
342+
### Community Manager
290343

291-
### API Documentation Lead
344+
The true strength of Matplotlib and why it has had such longevity as a
345+
project is the community of people around the code. That community
346+
needs to be maintained. The Community Manager (CM) is the is a
347+
catch-all for several very diverse tasks and this role may be split
348+
in the future and may want to enlist further assistants.
292349

293-
### Communication and Community Lead
350+
**Communications**
294351

295-
### API consistency Lead
352+
We need to maintain communication channels with the wider world. To this end
353+
the CM is responsible for maintaining:
354+
355+
- Matplotlib's social media presence
356+
- The Matplotlib blog
357+
- Recruiting people to give talks on Matplotlib at conferences / meetups
358+
- Maintaining a "matplotlib update" slide deck
359+
- the [Ann] mailing list
360+
361+
This communication is primarily broadcast out and intended to engage
362+
with end-users.
363+
364+
**Developer Relations**
365+
366+
In addition to communication to end-users we need to maintain
367+
communication channels to developers of down-stream libraries and
368+
other expert users.
369+
370+
- GSOC/mentoring programs
371+
- Recruiting people to run sprints
372+
- interaction with 3rd party extensions / publicity
373+
- [user]/[dev] mailing list moderation
374+
- Managing the discourse
375+
- recruiting new contributors
376+
377+
**Event and Meeting planning**
378+
379+
From time to time Matplotlib as an organization has in-person
380+
meetings.
381+
382+
383+
### API consistency Leader
384+
385+
Matplotlib is constantly making small changes to our API: enhancements
386+
that add new features, bug fixes that unavoidably change behavior, and
387+
deprecation of inconsistent or undesired functionality. The API
388+
Consistency Leader (ACL) is responsible for making sure that these
389+
incremental changes to the library are done in a coherent and
390+
consistent manner.
391+
392+
This include checking that:
393+
394+
- new functionality is not duplicating existing functionality
395+
- deprecations are justified and properly documented
396+
- new functionality does not "paint us into a corner" for future work
397+
- new functionality is implemented with an API that is consistent with
398+
the existing functions
399+
400+
401+
### Secretary
402+
- Responsible for maintaining the weekly notes
403+
- Responsible for ensuring that any decisions taken by vote in the SC
404+
are properly recorded.
296405

297406
Project Specific Leads
298407
----------------------
299408

300409
Matplotlib has a number of domain specific packages under it's umbrella and
301410
hosted on the matplotlib github organizations. These projects will each have
302-
their own Project Leader who can run the projects as they see fit.
411+
their own Project Leader who can run the projects as they see fit consistent with
412+
the Matplotlib Code of Conduct.
413+
414+
If a project would like to be hosted on the Matplotlib organization on
415+
GitHub, they can petition the SC and be accepted by a simple majority
416+
vote. A project can leave the organization at any time and can be
417+
removed from the organization by an 2/3 majority vote of the SC.
303418

304419
Institutional Partners and Funding
305420
==================================

0 commit comments

Comments
 (0)