From 52083c0956bc022f12f09fe28a10c97d13a41df6 Mon Sep 17 00:00:00 2001 From: hannah Date: Tue, 10 Dec 2019 18:15:52 -0500 Subject: [PATCH 1/7] onboarding oriented governance docs --- communications_guidelines.md | 22 ++--- contributor_roadmap.md | 165 +++++++++++++++++++++++++++++++++++ 2 files changed, 176 insertions(+), 11 deletions(-) create mode 100644 contributor_roadmap.md diff --git a/communications_guidelines.md b/communications_guidelines.md index 34c5cb5..c62e7aa 100644 --- a/communications_guidelines.md +++ b/communications_guidelines.md @@ -2,8 +2,8 @@ These guidelines are applicable when acting as a representative of Matplotlib (for example at sprints or when giving official talks or tutorials) and in the following community venues managed by Matplotlib: * https://github.com/matplotlib/matplotlib * https://discourse.matplotlib.org/ -* https://gitter.im/matplotlib/ -* https://github.com/matplotlib/matplotblog +* https://gitter.im/matplotlib/ +* https://github.com/matplotlib/matplotblog * https://twitter.com/matplotlib * https://instagram.com/matplotart/ @@ -13,23 +13,23 @@ These guidelines are applicable when acting as a representative of Matplotlib (f - no gratuitous disparaging of other visualization libraries and tools; criticism is acceptable so long as it serves a constructive purpose - follow visualization communication best practices - don't share non-expert visualizations when it could be harmful - - put on meeting agenda when answer isn't clearly to hold off on sharing. + - put on meeting agenda when answer isn't clearly to hold off on sharing. - clearly state when the visualization data/conclusions cannot be verified - do not rely on machine translations for sensitive visualizations - example: https://twitter.com/matplotlib/status/1244178154618605568 - verify sourcing of content (especially on instagram & blog) - - Instagram/blog: ensure mpl has right to repost/share content + - Instagram/blog: ensure mpl has right to repost/share content - make sure content is clearly cited - example: a tutorial using someone else’s example clearly cites the original source -- Limited self/corporate promotion is acceptable, but should be no more than about a quarter of the content of the blog/discourse post. -- if you think content is borderline, ask before publishing it +- Limited self/corporate promotion is acceptable, but should be no more than about a quarter of the content of the blog/discourse post. +- if you think content is borderline, ask before publishing it - acceptable image guide: - union of site guidelines favoring caution: - - keep it geared towards science/data visualization, and non-controversial images + - keep it geared towards science/data visualization, and non-controversial images - site guidelines: - https://help.twitter.com/en/rules-and-policies/twitter-rules - https://help.instagram.com/477434105621119 - + ## Communication Guidelines - keep responses polite, assume user statements are in good faith unless they violate the [Code of Conduct](https://www.python.org/psf/conduct/) @@ -37,14 +37,14 @@ These guidelines are applicable when acting as a representative of Matplotlib (f - Release Announcements - Highlight new features & major deprecations - Link to download/install instructions - - Ask folks to try it out. + - Ask folks to try it out. - signal boost third party packages - GSOC work during GSOC recruiting and work times - John Hunter Excellence in Plotting, submission and winners ## Social Media Following Guide: -- only follow organizations/projects - mostly numfocus projects +- only follow organizations/projects - mostly numfocus projects - especially 3rd party packages - should at least be visualization related - sponsors are also acceptable -- do not follow individual accounts for any reason (even maintainers/project leads/Guido!) +- do not follow individual accounts for any reason (even maintainers/project leads/Guido!) diff --git a/contributor_roadmap.md b/contributor_roadmap.md new file mode 100644 index 0000000..a1b3e83 --- /dev/null +++ b/contributor_roadmap.md @@ -0,0 +1,165 @@ +# Contributor Roadmap/Expectations +Hello, thank you for your interest in contributing to Matplotlib! + +Matplotlib is primarily administered via github, so more information on the exact permissions granted to each role is available at [github help](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#repository-access-for-each-permission-level) + + +# Github + +* https://github.com/matplotlib/matplotlib + +## Github Organization ownership +Full control of everything on GH +**People:** +- Lead developer, steering council +- someone from NF (?) +- someone from outside? + +Want to keep this set small enough that we don’t have too much unneeded attack surface area, but big enough that we don’t have single point of failure. + +## Administration permissions + +Manages the administration of the Matplotlib github repositories. + +* https://github.com/orgs/matplotlib/teams/admin + +- Made up of steering council members, appointment process discussed here: + - https://github.com/matplotlib/governance/blob/master/governance.md#steering-council + - should decouple SC and admin power going forward +**Responsibilities:** +- add new repositories and teams to the matplotlib org +- add members to Matplotlib teams +- can delete / moderate issues + +- on a GH team that has “Admin” level permissions on all repositories +## Release Powers +- has publish permissions to pypi +- Who has this + - Lead developer, steering council, release manager +- responsibilities + - run release process + +## Development +Responsible for the codebase (including documentation) + +* https://github.com/orgs/matplotlib/teams/developers + + +**contribute**: https://matplotlib.org/devdocs/devel/index.html + +**triage:** +- triaging issues and pull requests means: + - assigning labels, milestones, and reviewers + - closing and reopening as needed + - marking duplicates +- get triage privileges: granted on 1st merged pull request + - (We need to write the script for this, run as a service on heroku’s free tier? can we do this with actions?) + +**Get commit privileges:** +Significant or sustained merged pull requests +- including domain expertise as needed + +**Lose Commit privileges:** +- no activity on the repository/calls in 6 months +- repeated or severe violations of [merge guidelines](https://matplotlib.org/devdocs/devel/coding_guide.html) +- potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation + + +# Community / communications + +Engages in community building, support, and outreach + +* https://github.com/orgs/matplotlib/teams/community + +## Blog +writes and reviews blog posts about all things Matplotlib and made with Matplotlib +* https://github.com/orgs/matplotlib/teams/blog +* https://github.com/matplotlib/matplotblog + +**contribute**: +* https://matplotlib.org/matplotblog/posts/how-to-contribute/ + +**get commit privileges:** +* sustained constructive reviews of contributed blog posts +* at discretion of [communications lead](named_project_roles.md) + +**lose commit privileges:** +- repeated or severe violations of communications and social media guidelines +- potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation +- at discretion of [communications lead](named_project_roles.md) + +## Teaching +Develops talks and tutorials to illustrated using and developing applications with Matplotlib + +* https://github.com/orgs/matplotlib/teams/teaching + +**contribute:** + +- significant or sustained contributions to: + - https://github.com/matplotlib/presentations + - https://discourse.matplotlib.org/c/showcase/tutorial +- significant or sustained body of opens source teaching materials: + - book, long running blog series + +**content guidelines:** + +- [Social Media Guidelines](communications_guidelines.md) +- [Code of Conduct](https://www.python.org/psf/conduct/) + +**removal from team:** +- repeated or severe violations of [Social Media Guidelines](communications_guidelines.md) +- potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation +- at discretion of [communications or teaching lead](named_project_roles.md) + +## Discourse +https://discourse.matplotlib.org/ + + + Foster engagement on the discourse + +**contribute:** +* participate in discussion on https://discourse.matplotlib.org/ + +**increasing trust level to access more privileges:** + +- https://blog.discourse.org/2018/06/understanding-discourse-trust-levels/ +- sustained constructive participation in discussions + +**get suspended or banned:** +- repeated or sever violations of [discourse guidelines](https://discourse.matplotlib.org/faq) +- potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation + +## Instagram +instagram.com/matplotart/ + +Curate a gallery of data and scientific visualization art made using Matplotlib + +**contribute:** DM, tag #matplotlib, submit at http://bit.ly/matplotart + +**curate the account:** + +- sustained positive contributions to Instagram +- sustained positive contributions to https://discourse.matplotlib.org/c/showcase +- sustained positive tagging of matplotlib content on twitter + +**revoke curation privileges:** + +- repeated or severe violations of [Social Media Guidelines](communications_guidelines.md) +- potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation +- at discretion of [communications lead](named_project_roles.md) + +## Twitter +twitter.com/matplotlib + +Signal boost what’s new with the library & 3rd party packages, promote new work built on Matplotlib, and engage with the community. + +**contribute:** tweet @matplotlib or tag #matplotlib + +**tweet as twitter account:** +- be a lead on at least one of the other community projects + +**revoke twitter access:** + +- repeated or severe violations of [+Social Media Guidelines](https://paper.dropbox.com/doc/Social-Media-Guidelines-GMgkvuznnxwtZpwFvPogS) +- potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation +- at discretion of [communications lead](named_project_roles.md) From 899b31c780c72225722fd3097c5429a352c8ae00 Mon Sep 17 00:00:00 2001 From: hannah Date: Fri, 20 Dec 2019 12:05:48 -0500 Subject: [PATCH 2/7] typo Co-Authored-By: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> --- contributor_roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributor_roadmap.md b/contributor_roadmap.md index a1b3e83..7e2fbd0 100644 --- a/contributor_roadmap.md +++ b/contributor_roadmap.md @@ -126,7 +126,7 @@ https://discourse.matplotlib.org/ - sustained constructive participation in discussions **get suspended or banned:** -- repeated or sever violations of [discourse guidelines](https://discourse.matplotlib.org/faq) +- repeated or severe violations of [discourse guidelines](https://discourse.matplotlib.org/faq) - potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation ## Instagram From cdd2f6757128586ea646582869508fd812f3258b Mon Sep 17 00:00:00 2001 From: hannah Date: Fri, 20 Dec 2019 12:06:13 -0500 Subject: [PATCH 3/7] adding https Co-Authored-By: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> --- contributor_roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributor_roadmap.md b/contributor_roadmap.md index 7e2fbd0..a0a8a84 100644 --- a/contributor_roadmap.md +++ b/contributor_roadmap.md @@ -149,7 +149,7 @@ Curate a gallery of data and scientific visualization art made using Matplotlib - at discretion of [communications lead](named_project_roles.md) ## Twitter -twitter.com/matplotlib +https://twitter.com/matplotlib Signal boost what’s new with the library & 3rd party packages, promote new work built on Matplotlib, and engage with the community. From 88922038b7bcdf24f149a5aedab20ea5d9bdb229 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 16:42:32 -0500 Subject: [PATCH 4/7] STY: strip trailing whitespace --- contributor_roadmap.md | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/contributor_roadmap.md b/contributor_roadmap.md index a0a8a84..d077881 100644 --- a/contributor_roadmap.md +++ b/contributor_roadmap.md @@ -1,7 +1,9 @@ # Contributor Roadmap/Expectations -Hello, thank you for your interest in contributing to Matplotlib! +Hello, thank you for your interest in contributing to Matplotlib! -Matplotlib is primarily administered via github, so more information on the exact permissions granted to each role is available at [github help](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#repository-access-for-each-permission-level) +Matplotlib is primarily administered via github, so more information +on the exact permissions granted to each role is available at [github +help](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#repository-access-for-each-permission-level) # Github @@ -15,11 +17,13 @@ Full control of everything on GH - someone from NF (?) - someone from outside? -Want to keep this set small enough that we don’t have too much unneeded attack surface area, but big enough that we don’t have single point of failure. +Want to keep this set small enough that we don’t have too much +unneeded attack surface area, but big enough that we don’t have single +point of failure. ## Administration permissions -Manages the administration of the Matplotlib github repositories. +Manages the administration of the Matplotlib github repositories. * https://github.com/orgs/matplotlib/teams/admin @@ -30,7 +34,7 @@ Manages the administration of the Matplotlib github repositories. - add new repositories and teams to the matplotlib org - add members to Matplotlib teams - can delete / moderate issues - + - on a GH team that has “Admin” level permissions on all repositories ## Release Powers - has publish permissions to pypi @@ -56,7 +60,7 @@ Responsible for the codebase (including documentation) - (We need to write the script for this, run as a service on heroku’s free tier? can we do this with actions?) **Get commit privileges:** -Significant or sustained merged pull requests +Significant or sustained merged pull requests - including domain expertise as needed **Lose Commit privileges:** @@ -76,14 +80,14 @@ writes and reviews blog posts about all things Matplotlib and made with Matplotl * https://github.com/orgs/matplotlib/teams/blog * https://github.com/matplotlib/matplotblog -**contribute**: +**contribute**: * https://matplotlib.org/matplotblog/posts/how-to-contribute/ -**get commit privileges:** +**get commit privileges:** * sustained constructive reviews of contributed blog posts * at discretion of [communications lead](named_project_roles.md) -**lose commit privileges:** +**lose commit privileges:** - repeated or severe violations of communications and social media guidelines - potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation - at discretion of [communications lead](named_project_roles.md) @@ -99,12 +103,12 @@ Develops talks and tutorials to illustrated using and developing applications wi - https://github.com/matplotlib/presentations - https://discourse.matplotlib.org/c/showcase/tutorial - significant or sustained body of opens source teaching materials: - - book, long running blog series + - book, long running blog series **content guidelines:** -- [Social Media Guidelines](communications_guidelines.md) -- [Code of Conduct](https://www.python.org/psf/conduct/) +- [Social Media Guidelines](communications_guidelines.md) +- [Code of Conduct](https://www.python.org/psf/conduct/) **removal from team:** - repeated or severe violations of [Social Media Guidelines](communications_guidelines.md) @@ -117,7 +121,7 @@ https://discourse.matplotlib.org/ Foster engagement on the discourse -**contribute:** +**contribute:** * participate in discussion on https://discourse.matplotlib.org/ **increasing trust level to access more privileges:** @@ -136,22 +140,22 @@ Curate a gallery of data and scientific visualization art made using Matplotlib **contribute:** DM, tag #matplotlib, submit at http://bit.ly/matplotart -**curate the account:** +**curate the account:** -- sustained positive contributions to Instagram +- sustained positive contributions to Instagram - sustained positive contributions to https://discourse.matplotlib.org/c/showcase - sustained positive tagging of matplotlib content on twitter **revoke curation privileges:** -- repeated or severe violations of [Social Media Guidelines](communications_guidelines.md) +- repeated or severe violations of [Social Media Guidelines](communications_guidelines.md) - potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation - at discretion of [communications lead](named_project_roles.md) ## Twitter https://twitter.com/matplotlib -Signal boost what’s new with the library & 3rd party packages, promote new work built on Matplotlib, and engage with the community. +Signal boost what’s new with the library & 3rd party packages, promote new work built on Matplotlib, and engage with the community. **contribute:** tweet @matplotlib or tag #matplotlib @@ -160,6 +164,6 @@ Signal boost what’s new with the library & 3rd party packages, promote new wor **revoke twitter access:** -- repeated or severe violations of [+Social Media Guidelines](https://paper.dropbox.com/doc/Social-Media-Guidelines-GMgkvuznnxwtZpwFvPogS) +- repeated or severe violations of [+Social Media Guidelines](https://paper.dropbox.com/doc/Social-Media-Guidelines-GMgkvuznnxwtZpwFvPogS) - potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation - at discretion of [communications lead](named_project_roles.md) From 771853993b31b4d4ae1fa66591543bfec7bd0b61 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 16:43:02 -0500 Subject: [PATCH 5/7] GOV: Do not need owners of org outside of SC --- contributor_roadmap.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contributor_roadmap.md b/contributor_roadmap.md index d077881..9aab506 100644 --- a/contributor_roadmap.md +++ b/contributor_roadmap.md @@ -14,8 +14,7 @@ help](https://help.github.com/en/github/setting-up-and-managing-organizations-an Full control of everything on GH **People:** - Lead developer, steering council -- someone from NF (?) -- someone from outside? + Want to keep this set small enough that we don’t have too much unneeded attack surface area, but big enough that we don’t have single From e9612af090c09239fb77745f6c6ef71f13c75264 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 17:05:00 -0500 Subject: [PATCH 6/7] GOV: move github admin and separate from dev / release sections --- contributor_roadmap.md | 76 ++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/contributor_roadmap.md b/contributor_roadmap.md index 9aab506..c5923e4 100644 --- a/contributor_roadmap.md +++ b/contributor_roadmap.md @@ -6,43 +6,9 @@ on the exact permissions granted to each role is available at [github help](https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#repository-access-for-each-permission-level) -# Github - -* https://github.com/matplotlib/matplotlib - -## Github Organization ownership -Full control of everything on GH -**People:** -- Lead developer, steering council - -Want to keep this set small enough that we don’t have too much -unneeded attack surface area, but big enough that we don’t have single -point of failure. - -## Administration permissions - -Manages the administration of the Matplotlib github repositories. - -* https://github.com/orgs/matplotlib/teams/admin -- Made up of steering council members, appointment process discussed here: - - https://github.com/matplotlib/governance/blob/master/governance.md#steering-council - - should decouple SC and admin power going forward -**Responsibilities:** -- add new repositories and teams to the matplotlib org -- add members to Matplotlib teams -- can delete / moderate issues - -- on a GH team that has “Admin” level permissions on all repositories -## Release Powers -- has publish permissions to pypi -- Who has this - - Lead developer, steering council, release manager -- responsibilities - - run release process - -## Development +# Development Responsible for the codebase (including documentation) * https://github.com/orgs/matplotlib/teams/developers @@ -63,10 +29,17 @@ Significant or sustained merged pull requests - including domain expertise as needed **Lose Commit privileges:** -- no activity on the repository/calls in 6 months +- no activity on the repository/calls/discourse/mailing lists in 6 months - repeated or severe violations of [merge guidelines](https://matplotlib.org/devdocs/devel/coding_guide.html) - potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation +# Release Powers +- has publish permissions to pypi +- has push access to macpython build system +- Who has this + - Lead developer, steering council, release manager +- responsibilities + - run release process # Community / communications @@ -166,3 +139,34 @@ Signal boost what’s new with the library & 3rd party packages, promote new wor - repeated or severe violations of [+Social Media Guidelines](https://paper.dropbox.com/doc/Social-Media-Guidelines-GMgkvuznnxwtZpwFvPogS) - potential repercussion of a [Code of Conduct](https://www.python.org/psf/conduct/) violation - at discretion of [communications lead](named_project_roles.md) + +# Github + +* https://github.com/matplotlib/matplotlib + +## Github Organization ownership +Full control of everything on GH +**People:** +- Lead developer, steering council + + +Want to keep this set small enough that we don’t have too much +unneeded attack surface area, but big enough that we don’t have single +point of failure. + +## Administration permissions + +Manages the administration of the Matplotlib github repositories. + +* https://github.com/orgs/matplotlib/teams/admin + +- Made up of steering council members, appointment process discussed here: + - https://github.com/matplotlib/governance/blob/master/governance.md#steering-council + - should decouple SC and admin power going forward + +**Responsibilities:** +- add new repositories and teams to the matplotlib org +- add members to Matplotlib teams +- can delete / moderate issues + +- on a GH team that has “Admin” level permissions on all repositories From 9b580da26f4121f2e463f86b910b357a5d7cf92f Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 5 Mar 2020 17:58:29 -0500 Subject: [PATCH 7/7] GOV: adjust contributor roadmap to match current state --- contributor_roadmap.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/contributor_roadmap.md b/contributor_roadmap.md index c5923e4..822ccc6 100644 --- a/contributor_roadmap.md +++ b/contributor_roadmap.md @@ -149,7 +149,6 @@ Full control of everything on GH **People:** - Lead developer, steering council - Want to keep this set small enough that we don’t have too much unneeded attack surface area, but big enough that we don’t have single point of failure. @@ -165,8 +164,17 @@ Manages the administration of the Matplotlib github repositories. - should decouple SC and admin power going forward **Responsibilities:** -- add new repositories and teams to the matplotlib org -- add members to Matplotlib teams -- can delete / moderate issues - - on a GH team that has “Admin” level permissions on all repositories + +## Domain Team Member +We have a number of sub-teams to maintain domain specific packages + +**Responsibilities:** +- maintain those projects +- have at least write premission on the repos for that project + +## Organization Member +**Responsibilities:** +- Can create and add members to Matplotlib teams +- Can delete / moderate issues +- Can create new repositories