Skip to content

Community gov update #5452

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

Merged
merged 6 commits into from
Apr 1, 2022
Merged
Changes from all commits
Commits
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
82 changes: 42 additions & 40 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ also members of all the groups listed above:
Recurring Contributors comprise what we understand as the PyMC Team.
The Team will generally act as a single unit, except for some specific
questions where dedicated teams will prevail.
The PyMC project currently has Developer, Documentation and Discourse teams.
The PyMC project currently has Developer, Documentation and Community teams.
Team members can be part of one, some or none of these dedicated teams.
The diagram below should help illustrate this idea.

Expand Down Expand Up @@ -191,24 +191,24 @@ Contributors don't need to be part of any dedicated team.
* Bill Engels (dev)
* Brandon T. Willard (dev)
* Chris Fonnesbeck (dev, docs)
* Christian Luhmann (discourse)
* Christian Luhmann (community)
* Colin Carroll (dev)
* Eelke Spaak (dev)
* Eric Ma (dev - PyMC Labs)
* George Ho (dev)
* Junpeng Lao (dev, discourse)
* Junpeng Lao (dev, community)
* Luciano Paz (dev - PyMC Labs)
* Martina Cantaro (docs)
* Maxim Kochurov (dev - PyMC Labs)
* Meenal Jhajharia (docs)
* Meenal Jhajharia (docs, community)
* Michael Osthege (dev)
* Oriol Abril-Pla (docs, discourse)
* Oriol Abril-Pla (docs, community)
* Osvaldo Martin (dev, docs)
* Ravin Kumar (dev, discourse, docs)
* Ricardo Vieira (dev, discourse)
* Ravin Kumar (dev, community, docs)
* Ricardo Vieira (dev, community)
* Robert P. Goldman (dev)
* Sayam Kumar (dev, docs)
* Thomas Wiecki (dev, discourse - PyMC Labs)
* Thomas Wiecki (dev, community - PyMC Labs)

## Steering Council

Expand Down Expand Up @@ -253,10 +253,10 @@ In particular, the Council may:
The current Steering Council membership comprises:

- Chris Fonnesbeck (dev, docs)
- Junpeng Lao (dev, discourse)
- Oriol Abril-Pla (docs, discourse)
- Ravin Kumar (dev, discourse, docs)
- Thomas Wiecki (dev, discourse - PyMC Labs)
- Junpeng Lao (dev, community)
- Oriol Abril-Pla (docs, community)
- Ravin Kumar (dev, community, docs)
- Thomas Wiecki (dev, community - PyMC Labs)

Note that as explained in the [community architecture section](#community-and-team-architecture)
and as indicated again in the description of the Steering Council above,
Expand Down Expand Up @@ -604,7 +604,7 @@ The dedicated teams are work units with two main objectives: better
distributing the work related to The Project, and to better showcase all the different tasks
involved in The Project to attract more diverse Contributors.

The PyMC project currently has Developer, Documentation and Discourse teams.
The PyMC project currently has Developer, Documentation and Community teams.
Team members can be part of one, some or none of these dedicated teams.

Team members are expected to participate and join these dedicated teams
Expand All @@ -630,18 +630,17 @@ write all the documentation for the PyMC library.
For current members of the documentation team, refer to the recurrent and
core contributor membership sections.

### Discourse team
The focus of the Discourse team is managing and energizing the PyMC Discourse.
### Community team
The focus of the Community team is activities intended to nurture, energize, and grow the community of PyMC users and contributors. These activities include moderation of and participation in the discussions on the PyMC Discourse, planning and organization of events such as PyMCon and sprints, and coordination of presence on various social networks. These activites are not intended to be the sole responsibility of the Community team. Instead, the Community team provides leadership in these efforts, but recruits other contributors and community members as needed, thus encourging participation and fostering a healthy, self-sustaining community.

For current members of the discourse team, refer to the recurrent and
For current members of the community team, refer to the recurrent and
core contributor membership sections.

### "No-team" tasks
Copy link
Member

Choose a reason for hiding this comment

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

"no-team" tasks need to be updated to avoid listing community team things.

Copy link
Member Author

Choose a reason for hiding this comment

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

I wasn't sure about the allocation of the no-team tasks. Given the discussion of the team's mission, I guess these makes sense?

No-team tasks: fundraising and issue triaging
Community: running PyMC related events like PyMCon or sprints, outreach, or presence on social networks.

But then it seemed like the majority of the no-team tasks were being shifted to the community team and we had discussed how things like PyMCon would almost certainly involve many people/teams (social media activity certainly will be).

Copy link
Member

Choose a reason for hiding this comment

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

Sounds good. I think it's important to clear expectations on both what teams are supposed and not supposed to do. I also added a clarification on the docs team description for example; its existence doesn't mean only members of the docs team will write documentation or that only members of the docs team will update notebooks to v4. The docs team goal is to maintain the documentation tooling and infrastructure and see if it can be improved, review the docs to see if there are missing parts... but then its everyone that uses said tooling and documents the library.

I think something similar should happen with pymcon/sprints, and it did already with the sprint. The community team should probably take care of organizing and coordinating the event, like Meenal, Reshama, Beryl and I did for the sprint, but then everyone who can should help with reviewing talk proposals, giving talks, and other tasks "prepared" by the organization team. More or less the same way Ricardo and Austin gave webinars for the sprint and Sayam, Ricardo and Thomas are volunteering for the sprint itself. I wouldn't consider those part of "organizing" even if they are also critical and necessary for the event to suceed.

Does that make sense?

side note, if you think it would be good to still keep a longer list of "no-team" example tasks I have some ideas: enforcing the governance and code of conduct are also very clear "no team" tasks, also funding allocation and roadmap planning, fundraising can be divided between grant applications and reaching out to potential sponsors too.

Copy link
Member Author

Choose a reason for hiding this comment

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

I have added more info about both the community team activities/responsibilities and tried to limit the intended scope (like you did for the doc team). I added additional no-team activities as you suggested.

Copy link
Member

Choose a reason for hiding this comment

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

Thanks, now we should probably review the team members. i.e. Meenal is leading the sprint and taking care of pymc twitter so should definitely be on the team with the goals defined now.

Copy link
Member Author

Choose a reason for hiding this comment

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

Agreed.

All tasks related to the project that are not specifically listed in the
description of a dedicated team are the responsibility of the PyMC team
as a whole. At the time of writing, this includes but is not limited to:
fundraising, issue triaging, running PyMC related events like PyMCon or
sprints, outreach, or presence on social networks.
enforcing this governance and the [PyMC code of conduct](https://github.com/pymc-devs/pymc/blob/main/CODE_OF_CONDUCT.md), developing project-related grants, soliciting of project sponsorships, decisions regarding the allocation of project-related funds, planning of the project roadmap, or triaging of GitHub issues.

### Team structure in practice
This section describes how members of the PyMC team are given
Expand All @@ -663,40 +662,42 @@ Team:
and [pymc-experimental](https://github.com/pymc-devs/pymc-experimental) repository.
* Documentation team members are given permissions to [pymc-examples](https://github.com/pymc-devs/pymc-examples)
Copy link
Member

Choose a reason for hiding this comment

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

Community team members now also get github permissions to pymcon and pymc-data-umbrella repos (plus other repos we might create for other events and initiatives)

Copy link
Member Author

Choose a reason for hiding this comment

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

I changed this and the permission examples. I think I hit got it correct, but some of the examples are a bit complicated.

and [resources](https://github.com/pymc-devs/resources) repositories.
* Community team members are given permissions to [PyMCon](https://github.com/pymc-devs/pymcon), [PyMC Data Umbrella](https://github.com/pymc-devs/pymc-data-umbrella), and other event- and community-related repositories.

In addition, Council members are given admin rights to all repositories within
In addition, Council members are given administrative rights to all repositories within
the [pymc-devs](https://github.com/pymc-devs) organization.

#### Discourse
Similarly to the above section, Discourse permissions are also mapped to the discourse team
Similar to the above section, Discourse permissions are also mapped to the community team
and the two contributor roles.

Role:
Copy link
Member

Choose a reason for hiding this comment

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

Do we all agree with these roles?

I don't know how Discourse works and I'm the one who proposed that so we'd have somehting to start the discussion. IMO the process should be as much as possible a "take what we have or want and write it down here" not really write down something here and then change everything else. cc @junpenglao

What I will do though after a grace period is making sure we are doing what we have written here; and if that were an issue restart the discussion, but it would be very nice to have the discussion "beforehand"

Copy link
Member Author

Choose a reason for hiding this comment

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

I think this is roughly the way it works currently. But I agree that getting everyone on the same page now is a good idea. I know that there has been some confusion about what permission the various discourse roles/levels have.

Copy link
Member

Choose a reason for hiding this comment

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

We should limit the moderator and admins to community team member if possible.

Copy link
Member

Choose a reason for hiding this comment

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

@junpenglao I don't understand the comment, should that be changed? Right now core contributors on the community team and council members should be on the pool of rotating moderator/admin persissions, should it be only community core contributors?

- Recurring Contributors are added to the [PyMC_team](https://discourse.pymc.io/g/PyMC_devs)
group and are given the "leader" trust level.
- Core Contributors are given [moderator permissions](https://discourse.pymc.io/g/moderators)
if possible.
- Recurring Contributors are given no special permissions
- Core Contributors are added to the [PyMC_core](https://discourse.pymc.io/g/PyMC_core)
group independently of the teams they are part of.
Core Contributors in the community team are also added to the
[Community Team](https://discourse.pymc.io/g/Community_Team) group.

#### Accounts and services ownership and administration
The PyMC Project also has accounts and hosts services on several platforms
such as GitHub, Discourse, Twitter, ReadTheDocs or Medium.
such as GitHub, Discourse, Twitter, ReadTheDocs, and Medium.

If possible, all Council Members and relevant Core Contributors should have
admin rights on those platforms.
If this were not possible, admin rights should be distributed between
administrative rights on those platforms.
If this is not possible, administrative rights should be distributed among
Council Members and relevant Core Contributors and establish a rotation
of the admin rights every 1-2 years.
of the administrative rights every 1-2 years.

#### Permission examples
This section lists some imaginary contributors with their teams and roles to
provide examples on how to assign permissions:

<details><summary>See permission examples</summary>

- Arnau, recurrent contributor, discourse team
* Added to the Discourse PyMC_team and given "leader" trust level
- Arnau, recurrent contributor, community team
* No permissions on Discourse
* Added to all private communication channels
* No permissions on any GitHub
* Triage permissions on the pymcon, pymc-data-umbrella, and other "event" repositories

- Berta, recurrent contributor, dev and doc teams
* No permissions on Discourse
Expand All @@ -705,24 +706,25 @@ provide examples on how to assign permissions:
of the pymc-devs organization

- Carme, core contributor, doc team
* Added to the Discourse PyMC_team and given "leader" trust level
* Added to the community PyMC_core group on Discourse
* Added to all private communication channels
* Write permissions on pymc-examples and resources repositories, triage permissions
to pymc and pymc-experimental repositories
* Admin access to ReadTheDocs accounts
* Administrative access to ReadTheDocs accounts

- Dolors, core contributor, dev and discourse teams
* Added to the Discourse PyMC_team and given "leader" trust level,
given moderator permissions on Discourse (that might be rotating and not always active)
- Dolors, core contributor, dev and community teams
* Added to the Community Team and PyMC_core Discourse groups.
Part of the rotation of administrative permissions on Discourse
(Discourse allows only 3 admins on our current plan).
* Added to all private communication channels
* Write permissions on pymc and pymc-experimental repositories, triage permissions
to pymc-examples and resources repositories
* Write permissions on pymc, pymc-experimental, pymcon, pymc-data-umbrella, and other "event" repositories, triage permissions
on pymc-examples and resources repositories

- Eudald, core contributor, no dedicated team membership
* Added to the Discourse PyMC_team and given "leader" trust level
* Added to the PyMC_core Discourse group
* Added to all private communication channels
* Triage permissions on all repositories
* Access to pymc_devs twitter account as they are the main manager
* Access to PyMC gmail, drive and grant application platforms (i.e. CZI slack) as they are the main grant writing coordinator

</details>

Expand Down