From fb0de6db94d6e127593162c8e7100e772930fbc2 Mon Sep 17 00:00:00 2001 From: hannah Date: Tue, 10 Dec 2019 18:15:52 -0500 Subject: [PATCH 01/36] onboarding oriented governance docs --- named_project_roles.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 named_project_roles.md diff --git a/named_project_roles.md b/named_project_roles.md new file mode 100644 index 0000000..9f781c2 --- /dev/null +++ b/named_project_roles.md @@ -0,0 +1,19 @@ +# Named roles: +## Release Manager +- Responsibility: manage the release +## API change shepherd +- Responsibility: make sure all API changes are documented and justified +## Technical/Reference Documentation lead +- makes sure API docs are correct, up-to-date and complete +## User Documentation lead +- Example / Tutorial / Teaching lead +- some of this is docs, some of it is comms +## Comms / community lead +- Oversees all communication related things +- does community stuff count here? +## Lead Developer +- Responsibility: project leadership +## NF liaison +## \ +- has admin rights on their package +- can run their team like they want \ No newline at end of file From 2c5e9bb199ce7dc7b70ddd9a616b13887bd37665 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 13:06:27 -0500 Subject: [PATCH 02/36] DOC: google+ is dead --- governance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/governance.md b/governance.md index 235700d..7d18f04 100644 --- a/governance.md +++ b/governance.md @@ -30,7 +30,7 @@ Development Team (MDT)" in the project license. Anyone can be a Contributor. Contributors can be affiliated with any legal entity or none. Contributors participate in the project by submitting, reviewing and discussing GitHub Pull Requests and Issues and participating in -open and public Project discussions on GitHub, Google+, Hackpad, +open and public Project discussions on GitHub, discourse, Hackpad, Gitter chat rooms and mailing lists. The foundation of Project participation is openness and transparency. From 2a3e0b8af98db0ab5ba32e5dfee0c51fcdb1cd9e Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 13:06:44 -0500 Subject: [PATCH 03/36] GOV: rename BDFL to Lead Developer and add Deputy Lead Developer - BDFL is an inside joke that has gotten outside of the in-group where it was funny. I feel dumb using it to describe my self, but the look on my in-laws face when I used the term was the final straw. - Deputy Lead Developers aka "named roles" is a way to recognize that people are leading development along different axes of process. This is motivated by several aspects: 1. empower people to make decisions 2. provide a title people can put on their resume's --- governance.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/governance.md b/governance.md index 7d18f04..0701c9d 100644 --- a/governance.md +++ b/governance.md @@ -83,9 +83,9 @@ Community. While this approach has served us well, as the Project grows and faces more legal and financial decisions and interacts with other institutions, we see a need for a more formal governance model. Moving -forward, the Project leadership will consist of a Benevolent Dictator -for Life (BDFL) and a Steering Council. We view this governance model -as the formalization of what we are already doing, rather than a +forward, the Project leadership will consist of a Lead Developer, +several Deputy Leads, and a Steering Council. We view this governance +model as the formalization of what we are already doing, rather than a change in direction. BDFL From 29d0d8e658812299350fff32da341dabf8f0f1b3 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 13:14:04 -0500 Subject: [PATCH 04/36] GOV: re-write BDFL -> LD section No fundamental changes, just wording and a bit of re-arrangement. --- governance.md | 51 ++++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/governance.md b/governance.md index 0701c9d..2655ea6 100644 --- a/governance.md +++ b/governance.md @@ -88,31 +88,32 @@ several Deputy Leads, and a Steering Council. We view this governance model as the formalization of what we are already doing, rather than a change in direction. -BDFL ----- - -The Project will have a BDFL (Benevolent Dictator for Life), who is currently -Thomas Caswell. As Dictator, the BDFL has the authority to make all final -decisions for The Project. As Benevolent, the BDFL, in practice chooses to -defer that authority to the consensus of the community discussion channels and -the Steering Council (see below). It is expected, and in the past has been the -case, that the BDFL will only rarely assert their final authority. Because -rarely used, we refer to BDFL’s final authority as a “special” or “overriding” -vote. When it does occur, the BDFL override typically happens in situations -where there is a deadlock in the Steering Council or if the Steering Council -asks the BDFL to make a decision on a specific matter. To ensure the -benevolence of the BDFL, The Project encourages others to fork the project if -they disagree with the overall direction the BDFL is taking. The BDFL is chair -of the Steering Council (see below) and may delegate their authority on a -particular decision or set of decisions to any other Council member at their -discretion. - -The BDFL can appoint their successor, but it is expected that the Steering -Council would be consulted on this decision. If the BDFL is unable to appoint a -successor, the Steering Council will make a suggestion or suggestions to the -Main NumFOCUS Board. While the Steering Council and Main NumFOCUS Board will -work together closely on the BDFL selection process, the Main NumFOCUS Board -will make the final decision. +Lead developer +-------------- + +The Project will have a Lead Developer (LD), who is currently Thomas A Caswell. +The LD has the authority to make all final decisions for The Project. In +practice the LD chooses to defer that authority to the consensus of the +community discussion channels and the Steering Council (see below). It is +expected, and in the past has been the case, that the LD will only rarely assert +their final authority. Because rarely used, we refer to LD’s final authority as +a “special” or “overriding” vote. When it does occur, the LD override typically +happens in situations where there is a deadlock in the Steering Council or if +the Steering Council asks the LD to make a decision on a specific matter. + +The LD is chair of the Steering Council (see below) and may delegate their +authority on a particular decision or set of decisions to any other Council +member at their discretion. + +The LD can appoint their successor, but it is expected that the Steering Council +would be consulted on this decision. If the LD is unable to appoint a successor, +the Steering Council will make a suggestion or suggestions to the Main NumFOCUS +Board. While the Steering Council and Main NumFOCUS Board will work together +closely on the LD selection process, the Main NumFOCUS Board will make the final +decision. + +To ensure the benevolence of the LD, The Project encourages others to fork the +project if they disagree with the overall direction the LD is taking. Steering Council ---------------- From 0045e03c7aaefaa406dc8da305ceac641381c064 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 13:17:17 -0500 Subject: [PATCH 05/36] GOV: tweak Steering Council a bit - adjust BDFL -> LD - add emphasis to financial / fund raising aspect of council - assert the LD counts in the council size --- governance.md | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/governance.md b/governance.md index 2655ea6..377172a 100644 --- a/governance.md +++ b/governance.md @@ -121,32 +121,35 @@ Steering Council The Project will have a Steering Council that consists of Project Contributors who have produced contributions that are substantial in quality and quantity, and sustained over at least one year. The overall role of the Council is to -ensure, through working with the BDFL and taking input from the Community, the -long-term well-being of the project, both technically and as a community. +ensure, through working with the LD and taking input from the Community, the +long-term well-being of the project, technically, financially, and as a +community. During the everyday project activities, council members participate in all discussions, code review and other project activities as peers with all other -Contributors and the Community. In these everyday activities, Council Members -do not have any special power or privilege through their membership on the +Contributors and the Community. In these everyday activities, Council Members do +not have any special power or privilege through their membership on the Council. However, it is expected that because of the quality and quantity of their contributions and their expert knowledge of the Project Software and Services that Council Members will provide useful guidance, both technical and in terms of project direction, to potentially less experienced contributors. -The Steering Council and its Members play a special role in certain situations. -In particular, the Council may: - -- Make decisions about the overall scope, vision and direction of the - project. -- Make decisions about strategic collaborations with other organizations or - individuals. -- Make decisions about the Services that are run by The Project and manage - those Services for the benefit of the Project and Community. -- Granting or revoking commit rights. -- Make decisions when regular community discussion doesn’t produce consensus - on an issue in a reasonable time frame. -- Develop funding sources and spending money (see Finance sub - committee below). +The Steering Council and its Members play a special role in certain +situations. In particular, the Council may: + +- Develop funding sources and spending money (see Finance sub committee below). +- Make decisions about the overall scope, vision and direction of the project. +- Make decisions about strategic collaborations with other organizations or + individuals. +- Make decisions about the Services that are run by The Project and manage those + Services for the benefit of the Project and Community. +- Make decisions when regular community discussion doesn’t produce consensus on + an issue in a reasonable time frame. +- Granting or revoking commit rights. + +The steering council will be between 5 and 7 people including the LD. Being on +the steering council is a responsibilty, not a recongnition of being a long-time +contributor. ### Council membership From 8791ab97b30ea47f9912a5e17e634c12716902c8 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 13:44:29 -0500 Subject: [PATCH 06/36] GOV: substantially re-write the council member section - introduce 2yr terms. We want people to be able to gracefully roll out of responsibility. - introduce A/B staggered classes. To make sure we maintain some continuity --- governance.md | 64 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/governance.md b/governance.md index 377172a..3f6ff2d 100644 --- a/governance.md +++ b/governance.md @@ -156,42 +156,58 @@ contributor. To become eligible for being a Steering Council Member an individual must be a Project Contributor who has produced contributions that are substantial in -quality and quantity, and sustained over at least one year. Potential Council -Members are nominated by existing Council members and voted upon by the -existing Council after asking if the potential Member is interested and willing -to serve in that capacity. The Council will be initially formed through BDFL -nomination from the set of existing Developers who meet the above criteria. +quality and quantity, and sustained over at least one year. Potential Council +Members are nominated by existing Council members and voted upon by the existing +Council after asking if the potential Member is interested and willing to serve +in that capacity. The Council will be initially formed through LD nomination +from the set of existing Developers who meet the above criteria. When considering potential Members, the Council will look at candidates with a -comprehensive view of their contributions. This will include but is not limited +comprehensive view of their contributions. This will include but is not limited to code, code review, infrastructure work, mailing list and chat participation, -community help/building, education and outreach, design work, etc. We are +community help/building, education and outreach, design work, etc. We are deliberately not setting arbitrary quantitative metrics (like “100 commits in this repo”) to avoid encouraging behavior that plays to the metrics rather than -the project’s overall well-being. We want to encourage a diverse array of +the project’s overall well-being. We want to encourage a diverse array of backgrounds, viewpoints and talents in our team, which is why we explicitly do not define code as the sole metric on which council membership will be evaluated. -If a Council member becomes inactive in the project for a period of one year, -they will be considered for removal from the Council. Before removal, inactive -Member will be approached by the BDFL to see if they plan on returning to -active participation. If not they will be removed immediately upon a Council -vote. If they plan on returning to active participation soon, they will be -given a grace period of one year. If they don’t return to active participation -within that time period they will be removed by vote of the Council without -further grace period. All former Council members can be considered for -membership again at any time in the future, like any other Project Contributor. -Retired Council members will be listed on the project website, acknowledging -the period during which they were active in the Council. - -The Council reserves the right to eject current Members, other than the BDFL, -if they are deemed to be actively harmful to the project’s well-being, and -attempts at communication and conflict resolution have failed. +When invited to join the Steering Council Contributors are commiting to serve +for 2 years. At the end of the two years they may elect to, with consent of the +rest of the council, re-join the council. If they chose to not re-join the +council the process above is used to recruit new members. + +The Steering Council members, other than the LD, will serve in 2 equal classes +whose terms are offset by 1 year. This will help preserve the continuity on the +Steering Council over time. + +A Steering Council member can step down at anytime. If a Council Member becomes +inactive for a period of 2 months, they will be approached by the LD to see if +they plan on returning to active participation. If not they will be asked to +step down, if the Council Member indicates they intend to be active again but +have not done so after 1 month the Council my vote to remove them. + +If a Council Member leaves the council early they may be replaced, using the +same process as above. Their replacement will join the same class and serve the +remainder of the 2 years. + +Each class can fluctuate between 2 and 3 members so long as the total council +size (including the LD) is between 5 and 7. If a class gets too small, an +additional member must be recruited. + +All former Council members can be considered for membership again at any time in +the future, like any other Project Contributor. Retired Council members will be +listed on the project website, acknowledging the period during which they were +active in the Council. + +The Council reserves the right to eject current Members, other than the LD, if +they are deemed to be actively harmful to the project’s well-being, and attempts +at communication and conflict resolution have failed. ### Conflict of interest -It is expected that the BDFL and Council Members will be employed at a wide +It is expected that the LD, DLDs, and Council Members will be employed at a wide range of companies, universities and non-profit organizations. Because of this, it is possible that Members will have conflict of interests. Such conflict of interests include, but are not limited to: From d991ef67af8d257e2defa004a608cc8f4c2701ee Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 13:45:47 -0500 Subject: [PATCH 07/36] GOV: update wording in CoI section --- governance.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/governance.md b/governance.md index 3f6ff2d..fc7a191 100644 --- a/governance.md +++ b/governance.md @@ -217,12 +217,12 @@ interests include, but are not limited to: - Access to proprietary information of their employer that could potentially leak into their work with the Project. -All members of the Council, BDFL included, shall disclose to the rest of the +All members of the Council, LD included, shall disclose to the rest of the Council any conflict of interest they may have. Members with a conflict of interest in a particular issue may participate in Council discussions on that -issue, but must recuse themselves from voting on the issue. If the BDFL has +issue, but must recuse themselves from voting on the issue. If the LD has recused themselves for a particular decision, they will appoint a substitute -BDFL for that decision. +LD for that decision. ### Private communications of the Council From c4fbe0a31d61adb40d1ed0bc3aa5a6a6600a8a48 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 15:39:10 -0500 Subject: [PATCH 08/36] GOV: slight wording change to Council communications --- governance.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/governance.md b/governance.md index fc7a191..7e089ea 100644 --- a/governance.md +++ b/governance.md @@ -228,11 +228,12 @@ LD for that decision. Unless specifically required, all Council discussions and activities will be public and done in collaboration and discussion with the Project Contributors -and Community. The Council will have a private mailing list that will be used -sparingly and only when a specific matter requires privacy. When private -communications and decisions are needed, the Council will do its best to -summarize those to the Community after eliding personal/private/sensitive -information that should not be posted to the public internet. +and Community through the normal communication channels. The Council will have a +private mailing list that will be used sparingly and only when a specific matter +requires privacy. When private communications and decisions are needed, the +Council will do its best to summarize those to the Community after eliding +personal/private/sensitive information that should not be posted to the public +internet. ### Subcommittees From e4c1ece1fb62ec74711224f1e45bfc0e8e8fc8e2 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 15:40:57 -0500 Subject: [PATCH 09/36] GOV: clear out rest of BDFL -> LD --- governance.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/governance.md b/governance.md index 7e089ea..a15c2a8 100644 --- a/governance.md +++ b/governance.md @@ -267,7 +267,7 @@ interactions with NumFOCUS. Institutional Partners and Funding ================================== -The BDFL and Steering Council are the primary leadership for the project. No +The LD and Steering Council are the primary leadership for the project. No outside institution, individual or legal entity has the ability to own, control, usurp or influence the project other than by participating in the Project as Contributors and Council Members. However, because institutions are @@ -309,7 +309,7 @@ raising money from private foundations and donors or a for-profit company building proprietary products and services that leverage Project Software and Services. Funding acquired by Institutional Partners to work on The Project is called Institutional Funding. However, no funding obtained by an Institutional -Partner can override The Project BDFL and Steering Council. If a Partner has +Partner can override The Project LD and Steering Council. If a Partner has funding to do Matplotlib work and the Council decides to not pursue that work as a project, the Partner is free to pursue it on their own. However in this situation, that part of the Partner’s work will not be under the @@ -341,7 +341,7 @@ should state the final commit hash in the pull request being proposed for acceptance or rejection and briefly summarize the pull request. A minimum of 80% of the Steering Council must vote and at least 2/3 of the votes must be positive to carry out the proposed action (fractions -of a vote rounded up to the nearest integer). Since the BDFL holds -ultimate authority in The Project, the BDFL has authority to act alone +of a vote rounded up to the nearest integer). Since the LD holds +ultimate authority in The Project, the LD has authority to act alone in accepting or rejecting changes or overriding Steering Council decisions. From 6fb94ee253416a32db7841372212460fe30d3573 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 15:41:19 -0500 Subject: [PATCH 10/36] GOV: tweak wording for institutional partners Given that our Steering Council is smaller than Jupyters, do not imply Institutional Partners can install Council Members. --- governance.md | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/governance.md b/governance.md index a15c2a8..34ff309 100644 --- a/governance.md +++ b/governance.md @@ -286,18 +286,16 @@ in the United States or elsewhere that employs at least one Institutional Contributor or Institutional Council Member. Institutional Partners can be for-profit or non-profit entities. -Institutions become eligible to become an Institutional Partner by -employing individuals who actively contribute to The Project as part -of their official duties. To state this another way, the only way for -an Institutional Partner to influence the project is by actively -contributing to the open development of the project, on equal terms -with any other member of the community of Contributors and Council -Members. Merely using Matplotlib Software or Services in an -institutional context does not allow an entity to become an -Institutional Partner. Financial gifts do not enable an entity to -become an Institutional Partner. Once an institution becomes eligible -for Institutional Partnership, the Steering Council must nominate and -approve the Partnership. +Institutions become eligible to become an Institutional Partner by employing +individuals who actively contribute to The Project as part of their official +duties. To state this another way, the only way for an Institutional Partner to +influence the project is by actively contributing to the open development of the +project, on equal terms with any other member of the community of Contributors +and Council Members. Merely using Matplotlib Software in an institutional +context does not allow an entity to become an Institutional Partner. Financial +gifts do not enable an entity to become an Institutional Partner. Once an +institution becomes eligible for Institutional Partnership, the Steering Council +must nominate and approve the Partnership. If an existing Institutional Partner no longer has a contributing employee, they will be given a one-year grace period for other employees to begin @@ -316,14 +314,13 @@ this situation, that part of the Partner’s work will not be under the Matplotlib umbrella and cannot use the Project trademarks in a way that suggests a formal relationship. -To acknowledge institutional contributions, Institutional Partners -receive the following benefits: +To acknowledge institutional contributions, Institutional Partners receive the +following benefits: - Acknowledged on the Matplotlib websites, in talks and T-shirts. -- Ability to acknowledge their own funding sources on the Matplotlib - websites, in talks and T-shirts. -- Ability to influence the project through the participation of their Council - Member. +- Ability to acknowledge their own funding sources on the Matplotlib websites, + in talks and T-shirts. + Changing the Governance Documents ================================= From 50a7dc2cc4662ef7eb7e01c7123d32901812b205 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 15:44:45 -0500 Subject: [PATCH 11/36] GOV: tweak rules to change governance Given that we have a smaller council, expect all to participate. If someone has gone inactive, then they should be removed first. --- governance.md | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/governance.md b/governance.md index 34ff309..971d4d8 100644 --- a/governance.md +++ b/governance.md @@ -325,20 +325,18 @@ following benefits: Changing the Governance Documents ================================= -Changes to the governance documents are submitted via a GitHub pull -request to The Project's governance documents GitHub repository at +Changes to the governance documents are submitted via a GitHub pull request to +The Project's governance documents GitHub repository at [https://github.com/matplotlib/governance](https://github.com/matplotlib/governance). -The pull request is then refined in response to public comment and -review, with the goal being consensus in the community. After this -open period, a Steering Council Member proposes to the Steering -Council that the changes be ratified and the pull request merged -(accepting the proposed changes) or proposes that the pull request be -closed without merging (rejecting the proposed changes). The Member -should state the final commit hash in the pull request being proposed -for acceptance or rejection and briefly summarize the pull request. A -minimum of 80% of the Steering Council must vote and at least 2/3 of -the votes must be positive to carry out the proposed action (fractions -of a vote rounded up to the nearest integer). Since the LD holds -ultimate authority in The Project, the LD has authority to act alone -in accepting or rejecting changes or overriding Steering Council -decisions. +The pull request is then refined in response to public comment and review, with +the goal being consensus in the community. After this open period, a Steering +Council Member proposes to the Steering Council that the changes be ratified and +the pull request merged (accepting the proposed changes) or proposes that the +pull request be closed without merging (rejecting the proposed changes). The +Member should state the final commit hash in the pull request being proposed for +acceptance or rejection and briefly summarize the pull request. The full +Steering Council must vote and at least 2/3 of the votes must be positive to +carry out the proposed action (fractions of a vote rounded up to the nearest +integer). Since the LD holds ultimate authority in The Project, the LD has +authority to act alone in accepting or rejecting changes or overriding Steering +Council decisions. From 92ad746e2b7f8505a50db51d866cd74f12e8da75 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 16:41:51 -0500 Subject: [PATCH 12/36] GOV: add sketch of DLD titles --- governance.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/governance.md b/governance.md index 971d4d8..6fb0d6c 100644 --- a/governance.md +++ b/governance.md @@ -264,6 +264,36 @@ interactions with NumFOCUS. person. +Deputy Lead Developers +---------------------- + +DLDs are nominated by Steering Council members and appointed to 1yr terms by a +majority vote of the Steering council. Any currently active Contributor is +eligible to be considered for a DLD. The Steering Council should take into account + +It is at the discretion of the SC and LD +if any given DLD position is filled. + +If a DLD position is not filled, the responsibility devolves back to the LD. Each +DLD appointment runs on its own calendar. + +At the end of each year the DLD is given the option to continue for another year. + +The SC can remove a DLD using the same process as ejecting a Steering Council Member. + +An individual may hold more than one DLD simultaneously. + +### Release Manager + + +### Narrative Documentation Lead + +### API Documentation Lead + +### Communication and Community Lead + +### API consistency Lead + Institutional Partners and Funding ================================== From 000c84470fcd920be3fe630c09c4057ca949bf38 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 17:04:42 -0500 Subject: [PATCH 13/36] GOV: make the get a commit bit wording consistent --- governance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/governance.md b/governance.md index 6fb0d6c..7ca749c 100644 --- a/governance.md +++ b/governance.md @@ -74,7 +74,7 @@ Project leadership was initially provided by the original author, John D. Hunter. Shortly before his passing in 2012, leadership was transferred to Michael Droettboom, who later invited Thomas Caswell as a co-lead. Additional leadership has also been provided by a subset -of Contributors, called Developers, whose active and consistent +of Contributors, called Developers, whose significant or consistent contributions have been recognized by their receiving “commit rights” to the Project repositories. In general all Project decisions are made through consensus among the Developers with input from the From 419a2a21d4c5355553d5220f5ad43331146ce084 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 17:44:23 -0500 Subject: [PATCH 14/36] GOV: add domain project leads --- governance.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/governance.md b/governance.md index 7ca749c..74d42bd 100644 --- a/governance.md +++ b/governance.md @@ -294,6 +294,13 @@ An individual may hold more than one DLD simultaneously. ### API consistency Lead +Project Specific Leads +---------------------- + +Matplotlib has a number of domain specific packages under it's umbrella and +hosted on the matplotlib github organizations. These projects will each have +their own Lead Developer who can run the projects as they see fit. + Institutional Partners and Funding ================================== From ba4b43e1c67ad9db17af15ff5f15b89674b2a826 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 22 Mar 2020 21:35:25 -0400 Subject: [PATCH 15/36] GOV: change "Lead Developer" -> "Project Leader" --- governance.md | 78 +++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/governance.md b/governance.md index 74d42bd..fffbcec 100644 --- a/governance.md +++ b/governance.md @@ -83,7 +83,7 @@ Community. While this approach has served us well, as the Project grows and faces more legal and financial decisions and interacts with other institutions, we see a need for a more formal governance model. Moving -forward, the Project leadership will consist of a Lead Developer, +forward, the Project leadership will consist of a Project Leader, several Deputy Leads, and a Steering Council. We view this governance model as the formalization of what we are already doing, rather than a change in direction. @@ -91,29 +91,29 @@ change in direction. Lead developer -------------- -The Project will have a Lead Developer (LD), who is currently Thomas A Caswell. -The LD has the authority to make all final decisions for The Project. In -practice the LD chooses to defer that authority to the consensus of the +The Project will have a Project Leader (PL), who is currently Thomas A Caswell. +The PL has the authority to make all final decisions for The Project. In +practice the PL chooses to defer that authority to the consensus of the community discussion channels and the Steering Council (see below). It is -expected, and in the past has been the case, that the LD will only rarely assert -their final authority. Because rarely used, we refer to LD’s final authority as -a “special” or “overriding” vote. When it does occur, the LD override typically +expected, and in the past has been the case, that the PL will only rarely assert +their final authority. Because rarely used, we refer to PL’s final authority as +a “special” or “overriding” vote. When it does occur, the PL override typically happens in situations where there is a deadlock in the Steering Council or if -the Steering Council asks the LD to make a decision on a specific matter. +the Steering Council asks the PL to make a decision on a specific matter. -The LD is chair of the Steering Council (see below) and may delegate their +The PL is chair of the Steering Council (see below) and may delegate their authority on a particular decision or set of decisions to any other Council member at their discretion. -The LD can appoint their successor, but it is expected that the Steering Council -would be consulted on this decision. If the LD is unable to appoint a successor, +The PL can appoint their successor, but it is expected that the Steering Council +would be consulted on this decision. If the PL is unable to appoint a successor, the Steering Council will make a suggestion or suggestions to the Main NumFOCUS Board. While the Steering Council and Main NumFOCUS Board will work together -closely on the LD selection process, the Main NumFOCUS Board will make the final +closely on the PL selection process, the Main NumFOCUS Board will make the final decision. -To ensure the benevolence of the LD, The Project encourages others to fork the -project if they disagree with the overall direction the LD is taking. +To ensure the benevolence of the PL, The Project encourages others to fork the +project if they disagree with the overall direction the PL is taking. Steering Council ---------------- @@ -121,7 +121,7 @@ Steering Council The Project will have a Steering Council that consists of Project Contributors who have produced contributions that are substantial in quality and quantity, and sustained over at least one year. The overall role of the Council is to -ensure, through working with the LD and taking input from the Community, the +ensure, through working with the PL and taking input from the Community, the long-term well-being of the project, technically, financially, and as a community. @@ -147,7 +147,7 @@ situations. In particular, the Council may: an issue in a reasonable time frame. - Granting or revoking commit rights. -The steering council will be between 5 and 7 people including the LD. Being on +The steering council will be between 5 and 7 people including the PL. Being on the steering council is a responsibilty, not a recongnition of being a long-time contributor. @@ -159,7 +159,7 @@ Project Contributor who has produced contributions that are substantial in quality and quantity, and sustained over at least one year. Potential Council Members are nominated by existing Council members and voted upon by the existing Council after asking if the potential Member is interested and willing to serve -in that capacity. The Council will be initially formed through LD nomination +in that capacity. The Council will be initially formed through PL nomination from the set of existing Developers who meet the above criteria. When considering potential Members, the Council will look at candidates with a @@ -178,12 +178,12 @@ for 2 years. At the end of the two years they may elect to, with consent of the rest of the council, re-join the council. If they chose to not re-join the council the process above is used to recruit new members. -The Steering Council members, other than the LD, will serve in 2 equal classes +The Steering Council members, other than the PL, will serve in 2 equal classes whose terms are offset by 1 year. This will help preserve the continuity on the Steering Council over time. A Steering Council member can step down at anytime. If a Council Member becomes -inactive for a period of 2 months, they will be approached by the LD to see if +inactive for a period of 2 months, they will be approached by the PL to see if they plan on returning to active participation. If not they will be asked to step down, if the Council Member indicates they intend to be active again but have not done so after 1 month the Council my vote to remove them. @@ -193,7 +193,7 @@ same process as above. Their replacement will join the same class and serve the remainder of the 2 years. Each class can fluctuate between 2 and 3 members so long as the total council -size (including the LD) is between 5 and 7. If a class gets too small, an +size (including the PL) is between 5 and 7. If a class gets too small, an additional member must be recruited. All former Council members can be considered for membership again at any time in @@ -201,13 +201,13 @@ the future, like any other Project Contributor. Retired Council members will be listed on the project website, acknowledging the period during which they were active in the Council. -The Council reserves the right to eject current Members, other than the LD, if +The Council reserves the right to eject current Members, other than the PL, if they are deemed to be actively harmful to the project’s well-being, and attempts at communication and conflict resolution have failed. ### Conflict of interest -It is expected that the LD, DLDs, and Council Members will be employed at a wide +It is expected that the PL, DPLs, and Council Members will be employed at a wide range of companies, universities and non-profit organizations. Because of this, it is possible that Members will have conflict of interests. Such conflict of interests include, but are not limited to: @@ -217,12 +217,12 @@ interests include, but are not limited to: - Access to proprietary information of their employer that could potentially leak into their work with the Project. -All members of the Council, LD included, shall disclose to the rest of the +All members of the Council, PL included, shall disclose to the rest of the Council any conflict of interest they may have. Members with a conflict of interest in a particular issue may participate in Council discussions on that -issue, but must recuse themselves from voting on the issue. If the LD has +issue, but must recuse themselves from voting on the issue. If the PL has recused themselves for a particular decision, they will appoint a substitute -LD for that decision. +PL for that decision. ### Private communications of the Council @@ -264,24 +264,24 @@ interactions with NumFOCUS. person. -Deputy Lead Developers +Deputy Project Leaders ---------------------- -DLDs are nominated by Steering Council members and appointed to 1yr terms by a +DPLs are nominated by Steering Council members and appointed to 1yr terms by a majority vote of the Steering council. Any currently active Contributor is -eligible to be considered for a DLD. The Steering Council should take into account +eligible to be considered for a DPL. The Steering Council should take into account -It is at the discretion of the SC and LD -if any given DLD position is filled. +It is at the discretion of the SC and PL +if any given DPL position is filled. -If a DLD position is not filled, the responsibility devolves back to the LD. Each -DLD appointment runs on its own calendar. +If a DPL position is not filled, the responsibility devolves back to the PL. Each +DPL appointment runs on its own calendar. -At the end of each year the DLD is given the option to continue for another year. +At the end of each year the DPL is given the option to continue for another year. -The SC can remove a DLD using the same process as ejecting a Steering Council Member. +The SC can remove a DPL using the same process as ejecting a Steering Council Member. -An individual may hold more than one DLD simultaneously. +An individual may hold more than one DPL simultaneously. ### Release Manager @@ -299,12 +299,12 @@ Project Specific Leads Matplotlib has a number of domain specific packages under it's umbrella and hosted on the matplotlib github organizations. These projects will each have -their own Lead Developer who can run the projects as they see fit. +their own Project Leader who can run the projects as they see fit. Institutional Partners and Funding ================================== -The LD and Steering Council are the primary leadership for the project. No +The PL and Steering Council are the primary leadership for the project. No outside institution, individual or legal entity has the ability to own, control, usurp or influence the project other than by participating in the Project as Contributors and Council Members. However, because institutions are @@ -344,7 +344,7 @@ raising money from private foundations and donors or a for-profit company building proprietary products and services that leverage Project Software and Services. Funding acquired by Institutional Partners to work on The Project is called Institutional Funding. However, no funding obtained by an Institutional -Partner can override The Project LD and Steering Council. If a Partner has +Partner can override The Project PL and Steering Council. If a Partner has funding to do Matplotlib work and the Council decides to not pursue that work as a project, the Partner is free to pursue it on their own. However in this situation, that part of the Partner’s work will not be under the @@ -374,6 +374,6 @@ Member should state the final commit hash in the pull request being proposed for acceptance or rejection and briefly summarize the pull request. The full Steering Council must vote and at least 2/3 of the votes must be positive to carry out the proposed action (fractions of a vote rounded up to the nearest -integer). Since the LD holds ultimate authority in The Project, the LD has +integer). Since the PL holds ultimate authority in The Project, the PL has authority to act alone in accepting or rejecting changes or overriding Steering Council decisions. From 3b99c7edd14b582c4bd40bf37c7b38ce4644df10 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 22 Mar 2020 23:39:39 -0400 Subject: [PATCH 16/36] GOV: start to flesh out the deputy roles based on call --- governance.md | 147 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 131 insertions(+), 16 deletions(-) diff --git a/governance.md b/governance.md index fffbcec..7825fe7 100644 --- a/governance.md +++ b/governance.md @@ -267,39 +267,154 @@ interactions with NumFOCUS. Deputy Project Leaders ---------------------- -DPLs are nominated by Steering Council members and appointed to 1yr terms by a -majority vote of the Steering council. Any currently active Contributor is -eligible to be considered for a DPL. The Steering Council should take into account +DPLs (except for Release Manager) are nominated by Steering Council +members and appointed to a 1yr term from their appointment date by a +majority vote of the Steering council. Any currently active +Contributor is eligible to be considered for a DPL. -It is at the discretion of the SC and PL -if any given DPL position is filled. +As with the PL, the DPL should strive to reach consensus about any +issues with in their scope before invoking their authority to decide. +Their decisions can be appealed to the PL, but the PL should defer to +the DPL except in extraordinary circumstances. -If a DPL position is not filled, the responsibility devolves back to the PL. Each -DPL appointment runs on its own calendar. +An individual may hold more than one DPL simultaneously. -At the end of each year the DPL is given the option to continue for another year. +It is at the discretion of the SC and PL if any given DPL position is +filled. -The SC can remove a DPL using the same process as ejecting a Steering Council Member. +If a DPL position is not filled, the responsibility devolves back to +the PL. -An individual may hold more than one DPL simultaneously. +At each 1yr term a DPL has the option to continue for another year or +step down. + +The SC can remove a DPL using the same process as ejecting a Steering +Council Member. + +The SC can create a new DPL position or eliminate an unfilled DPL +position by majority vote. + + +### Release Manager(s) + +The Release Manager (RM) is appointed for a minor version (A.B.x) +release series of Matplotlib. They are responsible for the full +release life cycle of all minor releases in the series including: + +- ensuring the whats new, API changes, and release notes are up to date +- the timing of the releases +- what changes should or should not be backported from the master + branch +- rebuilding and publishing the website +- announcing the release +- publishing sdist and wheels to pypi +- notifying down-stream packagers of the release + +An individual can be the RM as more than one release series at the +same time. + + +### Narrative Documentation Manager + +Matplotlib has a tremendous amount of documentation that is narrative +in form. This includes our examples and tutorials that live inside the +main source repository and longer tutorials that live in other repositories +in the Matplotlib organization. + +The Narrative Documentation Matplotlib (NDM) is responsible for +shepherding all of this content including the scope, level, tone, and +voice. + +### Reference Documentation Manager + +Matplotlib also has a tremendous amount of reference documentation +embedded in doc strings. This documentation needs to be complete and +accurate as our users rely on it as the last authority of what a given +method will do (short of reading the source). -### Release Manager +The Reference Documentation Manager (RDM) is responsible for ensuring that +the docstrings are: +- correctly formatted and render as intended +- technically correct +- complete -### Narrative Documentation Lead +### Community Manager -### API Documentation Lead +The true strength of Matplotlib and why it has had such longevity as a +project is the community of people around the code. That community +needs to be maintained. The Community Manager (CM) is the is a +catch-all for several very diverse tasks and this role may be split +in the future and may want to enlist further assistants. -### Communication and Community Lead +**Communications** -### API consistency Lead +We need to maintain communication channels with the wider world. To this end +the CM is responsible for maintaining: + +- Matplotlib's social media presence +- The Matplotlib blog +- Recruiting people to give talks on Matplotlib at conferences / meetups +- Maintaining a "matplotlib update" slide deck +- the [Ann] mailing list + +This communication is primarily broadcast out and intended to engage +with end-users. + +**Developer Relations** + +In addition to communication to end-users we need to maintain +communication channels to developers of down-stream libraries and +other expert users. + +- GSOC/mentoring programs +- Recruiting people to run sprints +- interaction with 3rd party extensions / publicity +- [user]/[dev] mailing list moderation +- Managing the discourse +- recruiting new contributors + +**Event and Meeting planning** + +From time to time Matplotlib as an organization has in-person +meetings. + + +### API consistency Leader + +Matplotlib is constantly making small changes to our API: enhancements +that add new features, bug fixes that unavoidably change behavior, and +deprecation of inconsistent or undesired functionality. The API +Consistency Leader (ACL) is responsible for making sure that these +incremental changes to the library are done in a coherent and +consistent manner. + +This include checking that: + +- new functionality is not duplicating existing functionality +- deprecations are justified and properly documented +- new functionality does not "paint us into a corner" for future work +- new functionality is implemented with an API that is consistent with + the existing functions + + +### Secretary +- Responsible for maintaining the weekly notes +- Responsible for ensuring that any decisions taken by vote in the SC + are properly recorded. Project Specific Leads ---------------------- Matplotlib has a number of domain specific packages under it's umbrella and hosted on the matplotlib github organizations. These projects will each have -their own Project Leader who can run the projects as they see fit. +their own Project Leader who can run the projects as they see fit consistent with +the Matplotlib Code of Conduct. + +If a project would like to be hosted on the Matplotlib organization on +GitHub, they can petition the SC and be accepted by a simple majority +vote. A project can leave the organization at any time and can be +removed from the organization by an 2/3 majority vote of the SC. Institutional Partners and Funding ================================== From 11b1d1679ebef11ae94692090076b8d5484ff1b0 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 11 May 2020 13:06:32 -0400 Subject: [PATCH 17/36] Add additional line to secretary role --- governance.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/governance.md b/governance.md index 7825fe7..8c73d3c 100644 --- a/governance.md +++ b/governance.md @@ -399,6 +399,8 @@ This include checking that: ### Secretary +- Responsible for ensure that there is an agenda for the weekly + meeting at it is followed. - Responsible for maintaining the weekly notes - Responsible for ensuring that any decisions taken by vote in the SC are properly recorded. From 668352c91308ac0b35b853eceac5dcce37732ad2 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 15 Jul 2020 13:07:55 -0400 Subject: [PATCH 18/36] DOC: moved all name roles into goverance.rst --- named_project_roles.md | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 named_project_roles.md diff --git a/named_project_roles.md b/named_project_roles.md deleted file mode 100644 index 9f781c2..0000000 --- a/named_project_roles.md +++ /dev/null @@ -1,19 +0,0 @@ -# Named roles: -## Release Manager -- Responsibility: manage the release -## API change shepherd -- Responsibility: make sure all API changes are documented and justified -## Technical/Reference Documentation lead -- makes sure API docs are correct, up-to-date and complete -## User Documentation lead -- Example / Tutorial / Teaching lead -- some of this is docs, some of it is comms -## Comms / community lead -- Oversees all communication related things -- does community stuff count here? -## Lead Developer -- Responsibility: project leadership -## NF liaison -## \ -- has admin rights on their package -- can run their team like they want \ No newline at end of file From 722d812c698ba88c2e78cc80200ad79c1973ebec Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 15 Jul 2020 13:08:18 -0400 Subject: [PATCH 19/36] DOC: catch the last lead developer reference --- governance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/governance.md b/governance.md index 8c73d3c..607ab2d 100644 --- a/governance.md +++ b/governance.md @@ -88,8 +88,8 @@ several Deputy Leads, and a Steering Council. We view this governance model as the formalization of what we are already doing, rather than a change in direction. -Lead developer --------------- +Project Lead +------------ The Project will have a Project Leader (PL), who is currently Thomas A Caswell. The PL has the authority to make all final decisions for The Project. In From 5b3e270e9192917aa913db2bae8057eefb857e28 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 15 Jul 2020 13:09:38 -0400 Subject: [PATCH 20/36] DOC: minor copy editing --- governance.md | 55 +++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/governance.md b/governance.md index 607ab2d..c52ea35 100644 --- a/governance.md +++ b/governance.md @@ -9,18 +9,16 @@ section below, is contained in The Project Governance Repository at: The Project =========== -The Matplotlib Project (The Project) is an open source software -project affiliated with the [NumFOCUS](https://numfocus.org) -Foundation. The goal of The Project is to develop open source software -and deploy open and public websites and services for data -visualization. The Software developed by The Project is released under -the BSD (or similar permissive) open source license, developed openly -and hosted in public GitHub repositories under the -[Matplotlib GitHub organization](https://github.com/matplotlib). Examples -of Project Software include the matplotlib library for data -visualization and its associated extensions and dependencies. The -Services run by the Project consist of public websites and -web-services that are hosted under the matplotlib.org domain. +The Matplotlib Project (The Project) is an open source software project +affiliated with the [NumFOCUS](https://numfocus.org) Foundation. The goal of The +Project is to develop open source software and deploy open and public websites +and services for data visualization. The Software developed by The Project is +released under the a BSD (or similar permissive) open source license, developed +openly and hosted in public GitHub repositories under the [Matplotlib GitHub +organization](https://github.com/matplotlib). Examples of Project Software +include the Matplotlib library for data visualization and its associated +extensions and dependencies. The Services run by the Project consist of public +websites and web-services that are hosted under the matplotlib.org domain. The Project is developed by a team of distributed developers, called Contributors. Contributors are individuals who have contributed code, @@ -72,7 +70,7 @@ The foundations of Project governance are: Project leadership was initially provided by the original author, John D. Hunter. Shortly before his passing in 2012, leadership was -transferred to Michael Droettboom, who later invited Thomas Caswell as +transferred to Michael Droettboom, who later invited Thomas A Caswell as a co-lead. Additional leadership has also been provided by a subset of Contributors, called Developers, whose significant or consistent contributions have been recognized by their receiving “commit rights” @@ -94,12 +92,13 @@ Project Lead The Project will have a Project Leader (PL), who is currently Thomas A Caswell. The PL has the authority to make all final decisions for The Project. In practice the PL chooses to defer that authority to the consensus of the -community discussion channels and the Steering Council (see below). It is -expected, and in the past has been the case, that the PL will only rarely assert -their final authority. Because rarely used, we refer to PL’s final authority as -a “special” or “overriding” vote. When it does occur, the PL override typically -happens in situations where there is a deadlock in the Steering Council or if -the Steering Council asks the PL to make a decision on a specific matter. +community discussion channels, the Deputy Project Leads, and the Steering +Council (see below). It is expected, and in the past has been the case, that +the PL will only rarely assert their final authority. Because rarely used, we +refer to PL’s final authority as a “special” or “overriding” vote. When it does +occur, the PL override typically happens in situations where there is a deadlock +in the Steering Council or if the Steering Council asks the PL to make a +decision on a specific matter. The PL is chair of the Steering Council (see below) and may delegate their authority on a particular decision or set of decisions to any other Council @@ -137,7 +136,7 @@ in terms of project direction, to potentially less experienced contributors. The Steering Council and its Members play a special role in certain situations. In particular, the Council may: -- Develop funding sources and spending money (see Finance sub committee below). +- Developing funding sources and spending money (see Finance sub committee below). - Make decisions about the overall scope, vision and direction of the project. - Make decisions about strategic collaborations with other organizations or individuals. @@ -165,13 +164,13 @@ from the set of existing Developers who meet the above criteria. When considering potential Members, the Council will look at candidates with a comprehensive view of their contributions. This will include but is not limited to code, code review, infrastructure work, mailing list and chat participation, -community help/building, education and outreach, design work, etc. We are -deliberately not setting arbitrary quantitative metrics (like “100 commits in -this repo”) to avoid encouraging behavior that plays to the metrics rather than -the project’s overall well-being. We want to encourage a diverse array of -backgrounds, viewpoints and talents in our team, which is why we explicitly do -not define code as the sole metric on which council membership will be -evaluated. +community help/building, education and outreach, grant writing, and design +work.. We are deliberately not setting arbitrary quantitative metrics (like +“100 commits in this repo”) to avoid encouraging behavior that plays to the +metrics rather than the project’s overall well-being. We want to encourage a +diverse array of backgrounds, viewpoints and talents in our team, which is why +we explicitly do not define code as the sole metric on which council membership +will be evaluated. When invited to join the Steering Council Contributors are commiting to serve for 2 years. At the end of the two years they may elect to, with consent of the @@ -203,7 +202,7 @@ active in the Council. The Council reserves the right to eject current Members, other than the PL, if they are deemed to be actively harmful to the project’s well-being, and attempts -at communication and conflict resolution have failed. +at communication and conflict resolution have failed, from The Project. ### Conflict of interest From 3ba01cf4abbb6f393dd3cd7fd02d2d9f9c718321 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 15 Jul 2020 13:09:52 -0400 Subject: [PATCH 21/36] GOV: add that NumFOCUS can remove the PL from the project They need to be able to do this in extreme cases, such as the PL is doing things that are inconsistent with their charter and our FSA with NumFOCUS. --- governance.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/governance.md b/governance.md index c52ea35..1b4d2bd 100644 --- a/governance.md +++ b/governance.md @@ -109,7 +109,8 @@ would be consulted on this decision. If the PL is unable to appoint a successor, the Steering Council will make a suggestion or suggestions to the Main NumFOCUS Board. While the Steering Council and Main NumFOCUS Board will work together closely on the PL selection process, the Main NumFOCUS Board will make the final -decision. +decision. The NumFOCUS board may in extenuating circumstances remove the PL +from the project. To ensure the benevolence of the PL, The Project encourages others to fork the project if they disagree with the overall direction the PL is taking. From 30f57435da0350739bb7e09d9c4324f28b4fe7c7 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 15 Jul 2020 13:22:05 -0400 Subject: [PATCH 22/36] DOC: format sub-committee section --- governance.md | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/governance.md b/governance.md index 1b4d2bd..a314033 100644 --- a/governance.md +++ b/governance.md @@ -241,28 +241,25 @@ The Council can create subcommittees that provide leadership and guidance for specific aspects of the project. Like the Council as a whole, subcommittees should conduct their business in an open and public manner unless privacy is specifically called for. Private subcommittee communications should happen on -the main private mailing list of the Council unless specifically called for. +the main private mailing list of the Council unless specifically called for or +having external members. ### NumFOCUS Subcommittee The Council will maintain one narrowly focused subcommittee to manage its -interactions with NumFOCUS. - -- The NumFOCUS Subcommittee is comprised of 4 persons who manage project - funding that comes through NumFOCUS. It is expected that these funds will - be spent in a manner that is consistent with the non-profit mission of - NumFOCUS and the direction of the Project as determined by the full - Council. -- This Subcommittee shall NOT make decisions about the direction, scope or - technical direction of the Project. -- This Subcommittee will have 4 members, at least 2 of whom are - also on the Steering Council and 1 of whom will be external to the - Steering Council. No Subcommitee Member can report to the same - person as any other member of the Subcommittee through employment - or contracting work (including the reportee, i.e. the reportee + 1 - is the max). This avoids effective majorities resting on one - person. - +interactions with NumFOCUS which will include external members. + +- The NumFOCUS Subcommittee is comprised of 4 persons who manage project + funding that comes through NumFOCUS. It is expected that these funds will be + spent in a manner that is consistent with the non-profit mission of NumFOCUS + and the direction of the Project as determined by the full Council. +- This Subcommittee shall NOT make decisions about the direction, scope or + technical direction of the Project. +- This Subcommittee will have 4 members, at least 2 of whom are also on the + Steering Council and 1 of whom will be external to the Steering Council. No + Subcommitee Member can report to the same person as any other member of the + Subcommittee through employment or contracting work. This avoids effective + majorities resting on one person. Deputy Project Leaders ---------------------- From 607225809d99be4f44fda0e17def36e266353822 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 15 Jul 2020 13:23:56 -0400 Subject: [PATCH 23/36] DOC: copy-edit the DPL sections a bit --- governance.md | 77 +++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/governance.md b/governance.md index a314033..5fdb2a3 100644 --- a/governance.md +++ b/governance.md @@ -264,38 +264,33 @@ interactions with NumFOCUS which will include external members. Deputy Project Leaders ---------------------- -DPLs (except for Release Manager) are nominated by Steering Council -members and appointed to a 1yr term from their appointment date by a -majority vote of the Steering council. Any currently active -Contributor is eligible to be considered for a DPL. - -As with the PL, the DPL should strive to reach consensus about any -issues with in their scope before invoking their authority to decide. -Their decisions can be appealed to the PL, but the PL should defer to -the DPL except in extraordinary circumstances. - -An individual may hold more than one DPL simultaneously. - -It is at the discretion of the SC and PL if any given DPL position is -filled. - -If a DPL position is not filled, the responsibility devolves back to +Deputy Project Leaders (DPL) have pre-deletegated authority to make decisions +within their area of responsibility. As with the PL, the DPL should strive to +reach consensus before invoking their authority. Decisions by the DPL can be +appealed to the PL, but the presumption is that the PL will defer to the DPL +except in extraordinary circumstances. Disputes between DPLs will be settled by the PL. -At each 1yr term a DPL has the option to continue for another year or -step down. +DPLs are nominated by Steering Council members and appointed to a 1yr term +(except for Release Manager) from their appointment date by a majority vote of +the Steering council. At each 1yr term a DPL has the option to continue for +another year or step down. The SC can remove a DPL using the same process as +ejecting a Steering Council Member. + +At the discretion of the SC and PL a DPL position may not be filled with the +responsibility devolves back to the PL. The SC can create a new DPL position or +eliminate an unfilled DPL position by majority vote. -The SC can remove a DPL using the same process as ejecting a Steering -Council Member. +Any currently active Contributor is eligible to be considered for a DPL and an +individual may hold more than one DPL simultaneously. -The SC can create a new DPL position or eliminate an unfilled DPL -position by majority vote. +These roles are ### Release Manager(s) -The Release Manager (RM) is appointed for a minor version (A.B.x) -release series of Matplotlib. They are responsible for the full +The Release Manager (RM) is appointed for a minor version (A.B.x) release series +of Matplotlib (instead of a fixed term). They are responsible for the full release life cycle of all minor releases in the series including: - ensuring the whats new, API changes, and release notes are up to date @@ -307,7 +302,7 @@ release life cycle of all minor releases in the series including: - publishing sdist and wheels to pypi - notifying down-stream packagers of the release -An individual can be the RM as more than one release series at the +An individual may be the RM as more than one release series at the same time. @@ -336,6 +331,7 @@ the docstrings are: - technically correct - complete + ### Community Manager The true strength of Matplotlib and why it has had such longevity as a @@ -349,14 +345,14 @@ in the future and may want to enlist further assistants. We need to maintain communication channels with the wider world. To this end the CM is responsible for maintaining: -- Matplotlib's social media presence +- the [Ann] mailing list - The Matplotlib blog -- Recruiting people to give talks on Matplotlib at conferences / meetups - Maintaining a "matplotlib update" slide deck -- the [Ann] mailing list +- Recruiting people to give talks on Matplotlib at conferences / meetups +- Matplotlib's social media presence -This communication is primarily broadcast out and intended to engage -with end-users. +This communication is primarily broadcast out and intended to engage with +end-users. **Developer Relations** @@ -364,12 +360,13 @@ In addition to communication to end-users we need to maintain communication channels to developers of down-stream libraries and other expert users. -- GSOC/mentoring programs -- Recruiting people to run sprints - interaction with 3rd party extensions / publicity -- [user]/[dev] mailing list moderation -- Managing the discourse - recruiting new contributors +- Recruiting people to run sprints +- GSOC/mentoring programs +- Managing the discourse +- [user]/[dev] mailing list moderation + **Event and Meeting planning** @@ -393,14 +390,14 @@ This include checking that: - new functionality does not "paint us into a corner" for future work - new functionality is implemented with an API that is consistent with the existing functions +### Secretary +- Responsible for ensure that there is an agenda for the weekly meeting at it is + followed. +- Responsible for maintaining the weekly notes. +- Responsible for ensuring that decisions taken by vote in the SC are properly + recorded. -### Secretary -- Responsible for ensure that there is an agenda for the weekly - meeting at it is followed. -- Responsible for maintaining the weekly notes -- Responsible for ensuring that any decisions taken by vote in the SC - are properly recorded. Project Specific Leads ---------------------- From 41116deefacacc5a8bddc849095da32ffc4d11e8 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 15 Jul 2020 13:25:26 -0400 Subject: [PATCH 24/36] GOV: merge API consistency and Reference doc roles They will be tightly coupled in the long term. --- governance.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/governance.md b/governance.md index 5fdb2a3..baa2148 100644 --- a/governance.md +++ b/governance.md @@ -317,7 +317,23 @@ The Narrative Documentation Matplotlib (NDM) is responsible for shepherding all of this content including the scope, level, tone, and voice. -### Reference Documentation Manager +### API consistency and Reference Documentation Leader + +Matplotlib is constantly making small changes to our API: enhancements +that add new features, bug fixes that unavoidably change behavior, and +deprecation of inconsistent or undesired functionality. The API +Consistency Leader (ACL) is responsible for making sure that these +incremental changes to the library are done in a coherent and +consistent manner. + +This include checking that: + +- new functionality is not duplicating existing functionality +- deprecations are justified and properly documented +- new functionality does not "paint us into a corner" for future work +- new functionality is implemented with an API that is consistent with + the existing functions + Matplotlib also has a tremendous amount of reference documentation embedded in doc strings. This documentation needs to be complete and @@ -374,22 +390,6 @@ From time to time Matplotlib as an organization has in-person meetings. -### API consistency Leader - -Matplotlib is constantly making small changes to our API: enhancements -that add new features, bug fixes that unavoidably change behavior, and -deprecation of inconsistent or undesired functionality. The API -Consistency Leader (ACL) is responsible for making sure that these -incremental changes to the library are done in a coherent and -consistent manner. - -This include checking that: - -- new functionality is not duplicating existing functionality -- deprecations are justified and properly documented -- new functionality does not "paint us into a corner" for future work -- new functionality is implemented with an API that is consistent with - the existing functions ### Secretary - Responsible for ensure that there is an agenda for the weekly meeting at it is From 6c6bab25177131c13f61321567d9d7e9415c7b54 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 15 Jul 2020 13:26:43 -0400 Subject: [PATCH 25/36] GOV: add CoC subcommittee --- governance.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/governance.md b/governance.md index baa2148..523be33 100644 --- a/governance.md +++ b/governance.md @@ -261,6 +261,15 @@ interactions with NumFOCUS which will include external members. Subcommittee through employment or contracting work. This avoids effective majorities resting on one person. +### Code of Conduct Subcommittee + +This committee should be between 3 and 7 people, at least one of whom is on the +steering council and at least one who is not. This committee in responsible for +fielding and addressing CoC reports that happen within our digital and physical +spaces. They will maintain their own private mailing list and reporting +address. Detailed policy on how to handle CoC will be documented elsewhere. + + Deputy Project Leaders ---------------------- From 3928b9885669a120e250385a5091672b89f07e7f Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 26 Jul 2020 20:38:50 -0400 Subject: [PATCH 26/36] GOV: split API / reference docs roles apart again Re-order roles --- governance.md | 102 ++++++++++++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 48 deletions(-) diff --git a/governance.md b/governance.md index 523be33..d1cbf29 100644 --- a/governance.md +++ b/governance.md @@ -64,9 +64,9 @@ This section describes the governance and leadership model of The Project. The foundations of Project governance are: -- Openness & Transparency -- Active Contribution -- Institutional Neutrality +- Openness & Transparency +- Active Contribution +- Institutional Neutrality Project leadership was initially provided by the original author, John D. Hunter. Shortly before his passing in 2012, leadership was @@ -137,7 +137,8 @@ in terms of project direction, to potentially less experienced contributors. The Steering Council and its Members play a special role in certain situations. In particular, the Council may: -- Developing funding sources and spending money (see Finance sub committee below). +- Develop funding sources and determine how the money is spent (see Finance sub + committee below). - Make decisions about the overall scope, vision and direction of the project. - Make decisions about strategic collaborations with other organizations or individuals. @@ -165,11 +166,11 @@ from the set of existing Developers who meet the above criteria. When considering potential Members, the Council will look at candidates with a comprehensive view of their contributions. This will include but is not limited to code, code review, infrastructure work, mailing list and chat participation, -community help/building, education and outreach, grant writing, and design -work.. We are deliberately not setting arbitrary quantitative metrics (like -“100 commits in this repo”) to avoid encouraging behavior that plays to the -metrics rather than the project’s overall well-being. We want to encourage a -diverse array of backgrounds, viewpoints and talents in our team, which is why +community building, user and developer support, education and outreach, grant +writing, and design work. We are deliberately not setting quantitative metrics +(like “100 commits in this repo”) to avoid encouraging behavior that plays to +the metrics rather than the project’s overall well-being. We want to encourage +a diverse array of backgrounds, viewpoints and talents in our team, which is why we explicitly do not define code as the sole metric on which council membership will be evaluated. @@ -186,7 +187,7 @@ A Steering Council member can step down at anytime. If a Council Member becomes inactive for a period of 2 months, they will be approached by the PL to see if they plan on returning to active participation. If not they will be asked to step down, if the Council Member indicates they intend to be active again but -have not done so after 1 month the Council my vote to remove them. +have not done so after 1 month the Council may vote to remove them. If a Council Member leaves the council early they may be replaced, using the same process as above. Their replacement will join the same class and serve the @@ -286,20 +287,19 @@ the Steering council. At each 1yr term a DPL has the option to continue for another year or step down. The SC can remove a DPL using the same process as ejecting a Steering Council Member. -At the discretion of the SC and PL a DPL position may not be filled with the -responsibility devolves back to the PL. The SC can create a new DPL position or -eliminate an unfilled DPL position by majority vote. +At the discretion of the SC and PL a DPL position may not be filled in which +case the responsibility devolves back to the PL. The SC can create a new DPL +position, eliminate an unfilled DPL position, or change the description of a +position by majority vote. Any currently active Contributor is eligible to be considered for a DPL and an individual may hold more than one DPL simultaneously. -These roles are - ### Release Manager(s) The Release Manager (RM) is appointed for a minor version (A.B.x) release series -of Matplotlib (instead of a fixed term). They are responsible for the full +of Matplotlib rather than for a fixed term. They are responsible for the full release life cycle of all minor releases in the series including: - ensuring the whats new, API changes, and release notes are up to date @@ -307,26 +307,15 @@ release life cycle of all minor releases in the series including: - what changes should or should not be backported from the master branch - rebuilding and publishing the website -- announcing the release - publishing sdist and wheels to pypi - notifying down-stream packagers of the release +- announcing the release (in coordination with the Community Manager) An individual may be the RM as more than one release series at the same time. -### Narrative Documentation Manager - -Matplotlib has a tremendous amount of documentation that is narrative -in form. This includes our examples and tutorials that live inside the -main source repository and longer tutorials that live in other repositories -in the Matplotlib organization. - -The Narrative Documentation Matplotlib (NDM) is responsible for -shepherding all of this content including the scope, level, tone, and -voice. - -### API consistency and Reference Documentation Leader +### API consistency Leader Matplotlib is constantly making small changes to our API: enhancements that add new features, bug fixes that unavoidably change behavior, and @@ -344,26 +333,52 @@ This include checking that: the existing functions -Matplotlib also has a tremendous amount of reference documentation -embedded in doc strings. This documentation needs to be complete and -accurate as our users rely on it as the last authority of what a given -method will do (short of reading the source). +### Reference Documentation Leader -The Reference Documentation Manager (RDM) is responsible for ensuring that +The Matplotlib API reference documentation is split between the docstrings and +the rst source. This documentation needs to be complete and accurate as our +users rely on it as the final authority of what a given method will do (short of +reading the source). + +The Reference Documentation Leader (RDL) is responsible for ensuring that the docstrings are: - correctly formatted and render as intended - technically correct - complete +In addition to the docstrings the RDL is responsible for the sphinx build +machinery and our sphinx extensions. + +### Narrative Documentation Leader + +In addition to the refernce documentation, Matplotlib has narrative documentation. +This documentation can take the form of short "cookbook" examples that show an +end-to-end + + +This includes our examples and tutorials that live inside the +main source repository and longer tutorials that live in other repositories +in the Matplotlib organization. + +The Narrative Documentation Leader is responsible for shepherding all of this +content including the scope, level, tone, and voice. + +### Secretary + +- Responsible for ensure that there is an agenda for the weekly meeting at it is + followed. +- Responsible for maintaining the weekly notes. +- Responsible for ensuring that decisions taken by vote in the SC are properly + recorded. ### Community Manager -The true strength of Matplotlib and why it has had such longevity as a -project is the community of people around the code. That community -needs to be maintained. The Community Manager (CM) is the is a -catch-all for several very diverse tasks and this role may be split -in the future and may want to enlist further assistants. +The true strength of Matplotlib and why it has had such longevity as a project +is the community of people around the code. That community needs to be +maintained. The Community Manager (CM) is the is a catch-all for several very +diverse tasks and this role may be split in the future and may want to enlist +further assistants. **Communications** @@ -399,15 +414,6 @@ From time to time Matplotlib as an organization has in-person meetings. -### Secretary - -- Responsible for ensure that there is an agenda for the weekly meeting at it is - followed. -- Responsible for maintaining the weekly notes. -- Responsible for ensuring that decisions taken by vote in the SC are properly - recorded. - - Project Specific Leads ---------------------- From b238319b35fa0f0e9c622ec2f689d59268a637ed Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 27 Jul 2020 11:32:36 -0400 Subject: [PATCH 27/36] GOV: copy-editing, sentence finishing, move roles to separate file --- deputy_project_leads.md | 123 ++++++++++++++++++++++++++++++++++++++ governance.md | 127 ++-------------------------------------- 2 files changed, 128 insertions(+), 122 deletions(-) create mode 100644 deputy_project_leads.md diff --git a/deputy_project_leads.md b/deputy_project_leads.md new file mode 100644 index 0000000..42fde9c --- /dev/null +++ b/deputy_project_leads.md @@ -0,0 +1,123 @@ +# Deputy Project Leaders + +These are the current deputy project leader positions: + +- **Release Mangagers** : 3.3 : Elliott Sales de Andrade +- **API consistency Leader** : +- **Reference Documentation Leader** : +- **Narrative Documentation Leader** : +- **Secretary** : +- **Community Manager** : + + +## Release Manager(s) + +The Release Manager (RM) is appointed for a minor version (A.B.x) release series +of Matplotlib rather than for a fixed term. They are responsible for the full +release life cycle of all minor releases in the series including: + +- ensuring the whats new, API changes, and release notes are up to date +- the timing of the releases +- what changes should or should not be backported from the master + branch +- rebuilding and publishing the website +- publishing sdist and wheels to pypi +- notifying down-stream packagers of the release +- announcing the release (in coordination with the Community Manager) + +An individual may be the RM as more than one release series at the +same time. + + +## API consistency Leader + +Matplotlib is constantly making small changes to its API: enhancements +that add new features, bug fixes that unavoidably change behavior, and +deprecation of inconsistent or undesired functionality. The API +Consistency Leader (ACL) is responsible for making sure that these +incremental changes to the library are done in a coherent and +consistent manner. + +This include checking that: + +- new functionality is not duplicating existing functionality +- deprecations are justified and properly documented +- new functionality does not "paint us into a corner" for future work +- new functionality is implemented with an API that is consistent with + the existing functions + + +## Reference Documentation Leader + +The Matplotlib API reference documentation is split between the docstrings and +the rst source. This documentation needs to be complete and accurate as our +users rely on it as the final authority of what a given method will do (short of +reading the source). + +The Reference Documentation Leader (RDL) is responsible for ensuring that +the docstrings are: + +- correctly formatted and render as intended +- technically correct +- complete + +In addition to the docstrings the RDL is responsible for the sphinx build +machinery and our sphinx extensions. + +## Narrative Documentation Leader + +In addition to the reference documentation, Matplotlib has narrative documentation. +This documentation can take the form of short "cookbook" examples, longer tutorials, +and prose documenting the how and why of the internals of the library. This includes +content that lives in both the main repository and in other repositories +in the Matplotlib organization. + +The Narrative Documentation Leader is responsible for shepherding all of this +content including the scope, organization, level, tone, and voice. + +## Secretary + +- Responsible for ensuring that there is an agenda for the weekly + meeting at it is followed. +- Responsible for maintaining the weekly notes. + + +## Community Manager + +The true strength of Matplotlib and why it has had such longevity as a project +is the community of people around the code. That community needs to be +maintained. The Community Manager (CM) is the is a catch-all for several very +diverse tasks and this role may be split in the future and may want to enlist +further assistants. + +**Communications** + +We need to maintain communication channels with the wider world. To +this end the CM is responsible for maintaining. This communication is +primarily broadcast out and intended to engage with the wider +community. The + +- the [Ann] mailing list +- The Matplotlib blog +- Maintaining a "Matplotlib update" slide deck +- Recruiting people to give talks on Matplotlib at conferences / meetups +- Matplotlib's social media presence + +**Developer Relations** + +In addition to communication to end-users we need to maintain +communication channels to developers of down-stream libraries and +other expert users. + +- interaction with 3rd party extensions / publicity +- recruiting new contributors +- Recruiting people to run sprints +- GSOC/mentoring programs +- Managing the discourse +- [user]/[dev] mailing list moderation + + +**Event and Meeting planning** + +From time to time Matplotlib as an organization has in-person +meetings. diff --git a/governance.md b/governance.md index d1cbf29..2dac733 100644 --- a/governance.md +++ b/governance.md @@ -13,7 +13,7 @@ The Matplotlib Project (The Project) is an open source software project affiliated with the [NumFOCUS](https://numfocus.org) Foundation. The goal of The Project is to develop open source software and deploy open and public websites and services for data visualization. The Software developed by The Project is -released under the a BSD (or similar permissive) open source license, developed +released under a BSD (or similar permissive) open source license, developed openly and hosted in public GitHub repositories under the [Matplotlib GitHub organization](https://github.com/matplotlib). Examples of Project Software include the Matplotlib library for data visualization and its associated @@ -102,7 +102,8 @@ decision on a specific matter. The PL is chair of the Steering Council (see below) and may delegate their authority on a particular decision or set of decisions to any other Council -member at their discretion. +member at their discretion. The PL is responsible for ensuring that all SC +activities that require a vote are properly documented. The PL can appoint their successor, but it is expected that the Steering Council would be consulted on this decision. If the PL is unable to appoint a successor, @@ -274,7 +275,7 @@ address. Detailed policy on how to handle CoC will be documented elsewhere. Deputy Project Leaders ---------------------- -Deputy Project Leaders (DPL) have pre-deletegated authority to make decisions +Deputy Project Leaders (DPL) have pre-delegated authority to make decisions within their area of responsibility. As with the PL, the DPL should strive to reach consensus before invoking their authority. Decisions by the DPL can be appealed to the PL, but the presumption is that the PL will defer to the DPL @@ -296,129 +297,11 @@ Any currently active Contributor is eligible to be considered for a DPL and an individual may hold more than one DPL simultaneously. -### Release Manager(s) - -The Release Manager (RM) is appointed for a minor version (A.B.x) release series -of Matplotlib rather than for a fixed term. They are responsible for the full -release life cycle of all minor releases in the series including: - -- ensuring the whats new, API changes, and release notes are up to date -- the timing of the releases -- what changes should or should not be backported from the master - branch -- rebuilding and publishing the website -- publishing sdist and wheels to pypi -- notifying down-stream packagers of the release -- announcing the release (in coordination with the Community Manager) - -An individual may be the RM as more than one release series at the -same time. - - -### API consistency Leader - -Matplotlib is constantly making small changes to our API: enhancements -that add new features, bug fixes that unavoidably change behavior, and -deprecation of inconsistent or undesired functionality. The API -Consistency Leader (ACL) is responsible for making sure that these -incremental changes to the library are done in a coherent and -consistent manner. - -This include checking that: - -- new functionality is not duplicating existing functionality -- deprecations are justified and properly documented -- new functionality does not "paint us into a corner" for future work -- new functionality is implemented with an API that is consistent with - the existing functions - - -### Reference Documentation Leader - -The Matplotlib API reference documentation is split between the docstrings and -the rst source. This documentation needs to be complete and accurate as our -users rely on it as the final authority of what a given method will do (short of -reading the source). - -The Reference Documentation Leader (RDL) is responsible for ensuring that -the docstrings are: - -- correctly formatted and render as intended -- technically correct -- complete - -In addition to the docstrings the RDL is responsible for the sphinx build -machinery and our sphinx extensions. - -### Narrative Documentation Leader - -In addition to the refernce documentation, Matplotlib has narrative documentation. -This documentation can take the form of short "cookbook" examples that show an -end-to-end - - -This includes our examples and tutorials that live inside the -main source repository and longer tutorials that live in other repositories -in the Matplotlib organization. - -The Narrative Documentation Leader is responsible for shepherding all of this -content including the scope, level, tone, and voice. - -### Secretary - -- Responsible for ensure that there is an agenda for the weekly meeting at it is - followed. -- Responsible for maintaining the weekly notes. -- Responsible for ensuring that decisions taken by vote in the SC are properly - recorded. - -### Community Manager - -The true strength of Matplotlib and why it has had such longevity as a project -is the community of people around the code. That community needs to be -maintained. The Community Manager (CM) is the is a catch-all for several very -diverse tasks and this role may be split in the future and may want to enlist -further assistants. - -**Communications** - -We need to maintain communication channels with the wider world. To this end -the CM is responsible for maintaining: - -- the [Ann] mailing list -- The Matplotlib blog -- Maintaining a "matplotlib update" slide deck -- Recruiting people to give talks on Matplotlib at conferences / meetups -- Matplotlib's social media presence - -This communication is primarily broadcast out and intended to engage with -end-users. - -**Developer Relations** - -In addition to communication to end-users we need to maintain -communication channels to developers of down-stream libraries and -other expert users. - -- interaction with 3rd party extensions / publicity -- recruiting new contributors -- Recruiting people to run sprints -- GSOC/mentoring programs -- Managing the discourse -- [user]/[dev] mailing list moderation - - -**Event and Meeting planning** - -From time to time Matplotlib as an organization has in-person -meetings. - - Project Specific Leads ---------------------- Matplotlib has a number of domain specific packages under it's umbrella and -hosted on the matplotlib github organizations. These projects will each have +hosted on the Matplotlib github organizations. These projects will each have their own Project Leader who can run the projects as they see fit consistent with the Matplotlib Code of Conduct. From ad2a0a9084da6afa477e9662c4bdedf2245cdc4e Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 28 Jul 2020 09:47:49 -0400 Subject: [PATCH 28/36] DOC: spelling --- governance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/governance.md b/governance.md index 2dac733..9a7d982 100644 --- a/governance.md +++ b/governance.md @@ -150,7 +150,7 @@ situations. In particular, the Council may: - Granting or revoking commit rights. The steering council will be between 5 and 7 people including the PL. Being on -the steering council is a responsibilty, not a recongnition of being a long-time +the steering council is a responsibility, not a recognition of being a long-time contributor. From f43145e9e0a2246a01c4e9045e6d04703c2e51c4 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 3 Aug 2020 14:51:56 -0400 Subject: [PATCH 29/36] DOC: fix grammar and wording --- deputy_project_leads.md | 12 ++++++------ governance.md | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/deputy_project_leads.md b/deputy_project_leads.md index 42fde9c..5892e7a 100644 --- a/deputy_project_leads.md +++ b/deputy_project_leads.md @@ -25,7 +25,7 @@ release life cycle of all minor releases in the series including: - notifying down-stream packagers of the release - announcing the release (in coordination with the Community Manager) -An individual may be the RM as more than one release series at the +An individual may be the RM for more than one release series at the same time. @@ -84,11 +84,11 @@ content including the scope, organization, level, tone, and voice. ## Community Manager -The true strength of Matplotlib and why it has had such longevity as a project -is the community of people around the code. That community needs to be -maintained. The Community Manager (CM) is the is a catch-all for several very -diverse tasks and this role may be split in the future and may want to enlist -further assistants. +The true strength of Matplotlib and why it has had such longevity as a +project is the community of people around the code. That community +needs to be maintained. The Community Manager (CM) is a catch-all +position for several very diverse tasks and this role may be split in +the future and may want to enlist further assistants. **Communications** diff --git a/governance.md b/governance.md index 9a7d982..93f850f 100644 --- a/governance.md +++ b/governance.md @@ -28,7 +28,7 @@ Development Team (MDT)" in the project license. Anyone can be a Contributor. Contributors can be affiliated with any legal entity or none. Contributors participate in the project by submitting, reviewing and discussing GitHub Pull Requests and Issues and participating in -open and public Project discussions on GitHub, discourse, Hackpad, +open and public Project discussions on GitHub, Discourse, Hackmd, Gitter chat rooms and mailing lists. The foundation of Project participation is openness and transparency. From dd55d30a1c7bc4fc6412b472733c3e0a2c4dce2b Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 4 Aug 2020 18:50:37 -0400 Subject: [PATCH 30/36] GOV: Name initial Deputy Project Leads --- deputy_project_leads.md | 9 --------- people.md | 19 ++++++++++++++++--- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/deputy_project_leads.md b/deputy_project_leads.md index 5892e7a..d967d17 100644 --- a/deputy_project_leads.md +++ b/deputy_project_leads.md @@ -1,14 +1,5 @@ # Deputy Project Leaders -These are the current deputy project leader positions: - -- **Release Mangagers** : 3.3 : Elliott Sales de Andrade -- **API consistency Leader** : -- **Reference Documentation Leader** : -- **Narrative Documentation Leader** : -- **Secretary** : -- **Community Manager** : - ## Release Manager(s) diff --git a/people.md b/people.md index c25f99a..61c4a44 100644 --- a/people.md +++ b/people.md @@ -1,8 +1,19 @@ # Steering Council and Institutional Partners -## Benevolent Dictator for Life +## Project Lead -Thomas Caswell is the Benevolent Dictator for Life (BDFL). +Thomas Caswell is the currenwt Project Lead + +### Deputy Project Leads + +These are the current deputy project leader positions: + +- **Release Mangagers** : (3.3, 3.4) : Elliott Sales de Andrade +- **API consistency Leader** : Tim Hoffmann +- **Reference Documentation Leader** : +- **Narrative Documentation Leader** : +- **Secretary** : Jody Klymak +- **Community Manager** : Hannah Aizenman ## Steering Council @@ -14,7 +25,7 @@ Thomas Caswell is the Benevolent Dictator for Life (BDFL). - TBD - TBD -NOTE: The Council will be initially formed through BDFL nomination from the set +NOTE: The Council will be initially formed through PL nomination from the set of existing Developers who meet the criteria laid out in the governance document. @@ -26,6 +37,8 @@ document. - Phil Elson - Eric Firing + + ## New Steering Council Members When a new member joins the steering council, the following things are done: From ce1e9cffb868b3a0d643b1e1abe84a55f50d60dc Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 4 Aug 2020 19:42:46 -0400 Subject: [PATCH 31/36] DOC: fix spelling --- people.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/people.md b/people.md index 61c4a44..1c04373 100644 --- a/people.md +++ b/people.md @@ -2,7 +2,7 @@ ## Project Lead -Thomas Caswell is the currenwt Project Lead +Thomas Caswell is the current Project Lead ### Deputy Project Leads From 7254bdf09f97a4caa6a42c6c4ebd9bbb0e160dbe Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 4 Aug 2020 22:24:39 -0400 Subject: [PATCH 32/36] DOC: typo and minor wording changes --- governance.md | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/governance.md b/governance.md index 93f850f..d6818ab 100644 --- a/governance.md +++ b/governance.md @@ -110,7 +110,7 @@ would be consulted on this decision. If the PL is unable to appoint a successor, the Steering Council will make a suggestion or suggestions to the Main NumFOCUS Board. While the Steering Council and Main NumFOCUS Board will work together closely on the PL selection process, the Main NumFOCUS Board will make the final -decision. The NumFOCUS board may in extenuating circumstances remove the PL +decision. The NumFOCUS board may in extraordinary circumstances remove the PL from the project. To ensure the benevolence of the PL, The Project encourages others to fork the @@ -147,7 +147,7 @@ situations. In particular, the Council may: Services for the benefit of the Project and Community. - Make decisions when regular community discussion doesn’t produce consensus on an issue in a reasonable time frame. -- Granting or revoking commit rights. +- Grant or revok commit rights. The steering council will be between 5 and 7 people including the PL. Being on the steering council is a responsibility, not a recognition of being a long-time @@ -175,10 +175,11 @@ a diverse array of backgrounds, viewpoints and talents in our team, which is why we explicitly do not define code as the sole metric on which council membership will be evaluated. -When invited to join the Steering Council Contributors are commiting to serve -for 2 years. At the end of the two years they may elect to, with consent of the -rest of the council, re-join the council. If they chose to not re-join the -council the process above is used to recruit new members. +When invited to join the Steering Council Contributors are commiting +to serve for 2 years. At the end of the two years, with the consent +of the rest of the council, may elect to rejoin the council. If they +chose to not re-join the council the process above is used to recruit +new members. The Steering Council members, other than the PL, will serve in 2 equal classes whose terms are offset by 1 year. This will help preserve the continuity on the @@ -187,7 +188,7 @@ Steering Council over time. A Steering Council member can step down at anytime. If a Council Member becomes inactive for a period of 2 months, they will be approached by the PL to see if they plan on returning to active participation. If not they will be asked to -step down, if the Council Member indicates they intend to be active again but +step down. If the Council Member indicates they intend to be active again but have not done so after 1 month the Council may vote to remove them. If a Council Member leaves the council early they may be replaced, using the @@ -198,7 +199,7 @@ Each class can fluctuate between 2 and 3 members so long as the total council size (including the PL) is between 5 and 7. If a class gets too small, an additional member must be recruited. -All former Council members can be considered for membership again at any time in +All former Council members can be considered for membership again at anytime in the future, like any other Project Contributor. Retired Council members will be listed on the project website, acknowledging the period during which they were active in the Council. @@ -211,13 +212,13 @@ at communication and conflict resolution have failed, from The Project. It is expected that the PL, DPLs, and Council Members will be employed at a wide range of companies, universities and non-profit organizations. Because of this, -it is possible that Members will have conflict of interests. Such conflict of -interests include, but are not limited to: +it is possible that Members will have conflicts of interest. Such conflicts of +interest include, but are not limited to: -- Financial interests, such as investments, employment or contracting work, - outside of The Project that may influence their work on The Project. -- Access to proprietary information of their employer that could potentially - leak into their work with the Project. +- Financial interests, such as investments, employment or contracting work, + outside of The Project that may influence their work on The Project. +- Access to proprietary information of their employer that could potentially + leak into their work with the Project. All members of the Council, PL included, shall disclose to the rest of the Council any conflict of interest they may have. Members with a conflict of @@ -266,7 +267,7 @@ interactions with NumFOCUS which will include external members. ### Code of Conduct Subcommittee This committee should be between 3 and 7 people, at least one of whom is on the -steering council and at least one who is not. This committee in responsible for +Steering Council and at least one who is not. This committee in responsible for fielding and addressing CoC reports that happen within our digital and physical spaces. They will maintain their own private mailing list and reporting address. Detailed policy on how to handle CoC will be documented elsewhere. @@ -307,7 +308,7 @@ the Matplotlib Code of Conduct. If a project would like to be hosted on the Matplotlib organization on GitHub, they can petition the SC and be accepted by a simple majority -vote. A project can leave the organization at any time and can be +vote. A project can leave the organization at anytime and can be removed from the organization by an 2/3 majority vote of the SC. Institutional Partners and Funding From ae0579c8831d0cb5fa719c58466afd00d348d952 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 4 Aug 2020 22:24:52 -0400 Subject: [PATCH 33/36] GOV: remove "fork if you do not like it" suggestion --- governance.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/governance.md b/governance.md index d6818ab..7f9b402 100644 --- a/governance.md +++ b/governance.md @@ -113,8 +113,6 @@ closely on the PL selection process, the Main NumFOCUS Board will make the final decision. The NumFOCUS board may in extraordinary circumstances remove the PL from the project. -To ensure the benevolence of the PL, The Project encourages others to fork the -project if they disagree with the overall direction the PL is taking. Steering Council ---------------- From 734ed9f1a0273a54bed4319b79be41715262147b Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 4 Aug 2020 22:25:14 -0400 Subject: [PATCH 34/36] GOV: clarify that the SC can eject contributors from the project --- governance.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/governance.md b/governance.md index 7f9b402..8c021f9 100644 --- a/governance.md +++ b/governance.md @@ -202,9 +202,10 @@ the future, like any other Project Contributor. Retired Council members will be listed on the project website, acknowledging the period during which they were active in the Council. -The Council reserves the right to eject current Members, other than the PL, if -they are deemed to be actively harmful to the project’s well-being, and attempts -at communication and conflict resolution have failed, from The Project. +The Council reserves the right to eject anyone, including the Council +Members, from the project's online spaces if they are deemed to be +actively harmful to the project’s well-being, and attempts at +communication and conflict resolution have failed by a super majority vote. ### Conflict of interest @@ -284,8 +285,7 @@ the PL. DPLs are nominated by Steering Council members and appointed to a 1yr term (except for Release Manager) from their appointment date by a majority vote of the Steering council. At each 1yr term a DPL has the option to continue for -another year or step down. The SC can remove a DPL using the same process as -ejecting a Steering Council Member. +another year or step down. The SC can remove a DPL via a super-majority vote.. At the discretion of the SC and PL a DPL position may not be filled in which case the responsibility devolves back to the PL. The SC can create a new DPL From efabe3ffc51f7f60528f1fd4c6d33ef760a4361a Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 4 Aug 2020 22:27:15 -0400 Subject: [PATCH 35/36] GOV: add no-reports condition on SC membership To ensure the independence of SC members, none of the SC members can be in the same reporting tree through employment or contracting. --- governance.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/governance.md b/governance.md index 8c021f9..fb9028a 100644 --- a/governance.md +++ b/governance.md @@ -124,6 +124,8 @@ ensure, through working with the PL and taking input from the Community, the long-term well-being of the project, technically, financially, and as a community. +No Council Members may report to the same person through employment or contracting. + During the everyday project activities, council members participate in all discussions, code review and other project activities as peers with all other Contributors and the Community. In these everyday activities, Council Members do From 2b40e7285c280914e3bf1d2705ab02a91146133d Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 4 Aug 2020 22:32:46 -0400 Subject: [PATCH 36/36] GOV: shorten the description of the community manager This brings the description to the same level of detail as the other roles and does not encode particular communication forums / mechanisms directly in the governance text. --- deputy_project_leads.md | 36 +++--------------------------------- 1 file changed, 3 insertions(+), 33 deletions(-) diff --git a/deputy_project_leads.md b/deputy_project_leads.md index d967d17..0d1d253 100644 --- a/deputy_project_leads.md +++ b/deputy_project_leads.md @@ -79,36 +79,6 @@ The true strength of Matplotlib and why it has had such longevity as a project is the community of people around the code. That community needs to be maintained. The Community Manager (CM) is a catch-all position for several very diverse tasks and this role may be split in -the future and may want to enlist further assistants. - -**Communications** - -We need to maintain communication channels with the wider world. To -this end the CM is responsible for maintaining. This communication is -primarily broadcast out and intended to engage with the wider -community. The - -- the [Ann] mailing list -- The Matplotlib blog -- Maintaining a "Matplotlib update" slide deck -- Recruiting people to give talks on Matplotlib at conferences / meetups -- Matplotlib's social media presence - -**Developer Relations** - -In addition to communication to end-users we need to maintain -communication channels to developers of down-stream libraries and -other expert users. - -- interaction with 3rd party extensions / publicity -- recruiting new contributors -- Recruiting people to run sprints -- GSOC/mentoring programs -- Managing the discourse -- [user]/[dev] mailing list moderation - - -**Event and Meeting planning** - -From time to time Matplotlib as an organization has in-person -meetings. +the future and may want to enlist further assistants. The CM is responsible +for Matplotlib's evangelism, outreach, and user support as well as mainitaining +the venues for conversation with the community.