Skip to content

overhaul governance #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 23 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
dfbfb4c
onboarding oriented governance docs
story645 Dec 10, 2019
a881edf
typo
story645 Dec 20, 2019
e905b13
adding https
story645 Dec 20, 2019
6eec206
DOC: google+ is dead
tacaswell Mar 5, 2020
7973497
GOV: rename BDFL to Lead Developer and add Deputy Lead Developer
tacaswell Mar 5, 2020
22dab36
GOV: re-write BDFL -> LD section
tacaswell Mar 5, 2020
47e92f3
GOV: tweak Steering Council a bit
tacaswell Mar 5, 2020
f444ad2
GOV: substantially re-write the council member section
tacaswell Mar 5, 2020
d03518a
GOV: update wording in CoI section
tacaswell Mar 5, 2020
f516380
GOV: slight wording change to Council communications
tacaswell Mar 5, 2020
6cc3f3c
GOV: clear out rest of BDFL -> LD
tacaswell Mar 5, 2020
a1cb7b5
GOV: tweak wording for institutional partners
tacaswell Mar 5, 2020
9f1de2a
GOV: tweak rules to change governance
tacaswell Mar 5, 2020
d574592
GOV: add sketch of DLD titles
tacaswell Mar 5, 2020
3eccd6e
STY: strip trailing whitespace
tacaswell Mar 5, 2020
22b47fa
GOV: Do not need owners of org outside of SC
tacaswell Mar 5, 2020
a591e2a
GOV: make the get a commit bit wording consistent
tacaswell Mar 5, 2020
c8c7d2d
GOV: move github admin and separate from dev / release sections
tacaswell Mar 5, 2020
3c89228
GOV: add domain project leads
tacaswell Mar 5, 2020
9d2cecb
GOV: adjust contributor roadmap to match current state
tacaswell Mar 5, 2020
6f220a2
GOV: change "Lead Developer" -> "Project Leader"
tacaswell Mar 23, 2020
0b3db52
GOV: start to flesh out the deputy roles based on call
tacaswell Mar 23, 2020
3417e50
Add additional line to secretary role
tacaswell May 11, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions communications_guidelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/

Expand All @@ -13,38 +13,38 @@ 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/)

## Recurrent Social Media Campaigns:
- 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!)
180 changes: 180 additions & 0 deletions contributor_roadmap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
# 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)




# 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:**
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Who gets to decide what is significant or sustained? What's the criteria here?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would sustain mean x number of PRs over x months? Would there also be a mechanism to remove this if folks go MIA or need a break?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

attn @samdbrice, it's a thing on our todo list to clarify.

Significant or sustained merged pull requests
- including domain expertise as needed

**Lose Commit privileges:**
- 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
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

really release managment, & you need a how they get it/how they lose it section

- 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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the fact that there is an emphasis on the folks observing the Code of Conduct and that breaches to this would lead to revoking their privileges. A quick search did not point me to clear guidelines on how to report this or enforce the CoC (maybe my search-fu failed) .

So maybe it would also be useful to appoint a code of conduct person or subteam

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On our to-do list is to adopt the Python CoC to an MPL specific one and then include enforcement details and reporting - which will be to NumFocus so that there's an external record of the report.


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 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
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
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.

**contribute:** tweet @matplotlib or tag #matplotlib

**tweet as twitter account:**
- be a lead on at least one of the other community projects

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add the release manager to this list or just set something up on matplotbot to auto tweet when a release gets tagged?

**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)

# Github
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this whole block is a missing a how you get/how you lose


* 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:**
- 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
Loading