@@ -267,39 +267,154 @@ interactions with NumFOCUS.
267
267
Deputy Project Leaders
268
268
----------------------
269
269
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.
273
274
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.
276
279
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.
279
281
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.
281
284
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.
283
287
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).
285
334
286
- ### Release Manager
335
+ The Reference Documentation Manager (RDM) is responsible for ensuring that
336
+ the docstrings are:
287
337
338
+ - correctly formatted and render as intended
339
+ - technically correct
340
+ - complete
288
341
289
- ### Narrative Documentation Lead
342
+ ### Community Manager
290
343
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.
292
349
293
- ### Communication and Community Lead
350
+ ** Communications **
294
351
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.
296
405
297
406
Project Specific Leads
298
407
----------------------
299
408
300
409
Matplotlib has a number of domain specific packages under it's umbrella and
301
410
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.
303
418
304
419
Institutional Partners and Funding
305
420
==================================
0 commit comments