@@ -267,39 +267,154 @@ interactions with NumFOCUS.
267267Deputy 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
297406Project Specific Leads
298407----------------------
299408
300409Matplotlib has a number of domain specific packages under it's umbrella and
301410hosted 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
304419Institutional Partners and Funding
305420==================================
0 commit comments