Skip to content
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

Add policy for membership #206

Merged
merged 8 commits into from
Oct 4, 2023
Merged
Show file tree
Hide file tree
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
85 changes: 62 additions & 23 deletions docs/team/becoming-member.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,25 @@
# Becoming a JupyterLab Council member

## JupyterLab Council responsibilities
This document describes how to become a council member. It includes information about the two subgroups of JupyterLab Council members:
- The release group (see [Release team member](#release-team-member))
- The admin group (see [Admin team member](#github-organization-owners))

Active members actively carry out the responsibilities listed in the [Membership Guide Page](membership_guidelines).
## JupyterLab Council member

## Active and inactive membership
### JupyterLab Council responsibilities

There are two types of JupyterLab Council members, **active** and **inactive**.

Active members:
Members actively carry out the responsibilities listed in the [Membership Guide Page](membership_guidelines):

* Must be nominated by a current member.
* Can be elected as the Software Steering Council representative for JupyterLab.
* Get a vote in a voting situation.
* Count towards quorum in a voting situation.
* Are expected to participate in a majority of votes.
* Are expected to participate in a 2/3 of votes (through a year).
* Can nominate new members.
* Should actively participate, either synchronously or asynchronously, in meetings.

Inactive members:

* Were previously an active member.
* Do not vote.
* Are not counted towards voting quorum.
* Can "reactivate" at any time by expressing their change in status publicly.

Council members can freely pass between active and inactive at any time. They *should* publicly state their status change in a pull request that updates the `contributors.yaml` file with their status change.

This means an inactive member can "reactivate" themselves at any time by publicly stating their change in status. This does not require a nomination from another team member.

For example, a member who is going out on a long leave/vacation (>2 weeks) can temporarily change their status to inactive during their absence and immediately reactivate upon return. This isn't required, but this can relieve them from having to watch this repository for any formal votes that happen during their absence.

## Nominating a new member
### Nominating a new member

For someone to become a JupyterLab Council member, they should already be a consistent,
positive, productive member of the community. Newcomers are encouraged to
Expand All @@ -55,8 +43,59 @@ This process takes the following steps:
if they are interested. Don't forget to run them by the {ref}`membership_guidelines`
page to make sure they understand what they're signing up for.

## Membership Maintenance
### Membership maintenance

Every six months, a bot will open an issue in the [council repo](https://github.com/jupyterlab/council) asking all currently active JupyterLab council team members to reply within three weeks if they still consider themselves active. If a team member replies no, they will be removed from the council. If a member does not reply, the council may reach that member personally for membership confirmation. If that request for confirmation is not answered within a month, the member will be removed from the council.

## Release team member

### Joining the release team

Any JupyterLab Council member can ask to be part of the release team using the weekly call, chat, or official council email list.

> Private channel is recommended to limit the exposure of such information for security reason.

### Release team responsibilities

Release team members will be added to the following groups:

- GitHub JupyterLab organization: membership of the [release team](https://github.com/orgs/jupyterlab/teams/release)
- PyPI Jupyter organization: manager of the [JupyterLab team](https://pypi.org/manage/organization/jupyter/team/jupyterlab)
- NPM jupyterlab organization: membership of the [jupyterlab team](https://www.npmjs.com/settings/jupyterlab/teams)
fcollonval marked this conversation as resolved.
Show resolved Hide resolved
fcollonval marked this conversation as resolved.
Show resolved Hide resolved
- conda-forge jupyterlab recipes: maintainer rights

> An admin will need to add a new member to all three teams and the conda recipes.

Members of the release team have publication rights for major JupyterLab-related packages through the PyPI and NPM teams. Team members can publish a release and can react quickly in case a published package is broken or corrupted.

### Release membership maintenance

Every six months, a bot will open an issue in the [council repo](https://github.com/jupyterlab/council) asking all current release team members to reply within three weeks if they still consider themselves active. If a member replies no, or they do not reply, we will conclude that they step down of the release team. Stepping down members may be removed from the publication groups on PyPI and NPM and the conda recipes maintainers.

## Admin team member

### Joining the admin team

Any JupyterLab Council member can ask to be part of the admin team using the weekly call, chat, or official council email list.

> Private channel is recommended to limit the exposure of such information for security reason.

There should be no more than seven administrators. If there are seven administrators already, consensus should be achieved between the new admin candidate and the existing administrators to determine a new seven-person admin team.

> The Software Steering Council representative will automatically be part of this group.
> The Executive Council will and must own at least one administrator seat. If the last executive council administrator resigns, the executive council must nominate a new administrator.

### Admin team responsibilities

Admin team members will be added to the following groups:

- GitHub JupyterLab organization: [owners](https://github.com/orgs/jupyterlab)
- PyPI Jupyter organization: manager of the [JupyterLab team](https://pypi.org/manage/organization/jupyter/team/jupyterlab)
- NPM jupyterlab organization: [owners](https://www.npmjs.com/settings/jupyterlab)
- conda-forge jupyterlab recipe: maintainer rights

Administrators maintain membership of the groups listed above as well as the JupyterLab council and release team.

Every six months, one currently active member should open an issue in the team-compass repo asking all currently active team members to reply if they still consider themselves active. If not (or no response is given by a team member), it will be assumed that they have gone inactive. This will help keep the active member list up-to-date.
### Membership maintenance

Remember, an inactive member can return at any time by simply changing their status on the team-compass page.
Every six months, a bot will open an issue in the [council repo](https://github.com/jupyterlab/council) asking all current administrator team members to reply within three weeks if they still consider themselves active. If a member says no, or they do not respond, we will conclude that they step down. Stepping down member may be removed from the groups mentioned above.
8 changes: 5 additions & 3 deletions docs/team/member-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ maintainers find and choose the right communication channels and have a positive
In this respect, we are using:
1. GitHub issues for specific discussions related to changing a repository's content
(e.g. feature requests, bug reports).
2. The [Discourse forum](http://discourse.jupyter.org/) for general discussions, support
2. The [Discourse forum](https://discourse.jupyter.org/) for general discussions, support
questions, or just as a place where we can inspire each other.
3. The [Gitter channel](https://app.gitter.im/#/room/#jupyterlab_jupyterlab:gitter.im) for discussions and support questions.
fcollonval marked this conversation as resolved.
Show resolved Hide resolved
fcollonval marked this conversation as resolved.
Show resolved Hide resolved
4. The [JupyterLab council mailing list](https://groups.google.com/u/1/g/jupyterlab-council) for discussing membership, none-public questions,... .

## How can I help?

Expand All @@ -40,13 +42,13 @@ when you interact with people (online and offline). Try to keep a friendly, posi
attitude, and be welcoming and helpful in bringing others into the community
and answering their questions.

### Are there any specific responsibilies?
### Are there any specific responsibilities?

We don't want team membership to
be a big burden (many of us have one or more other jobs too!) but there are
a few things that you should do as a new member:

1. **"Watch" the [team compass repository](https://github.com/jupyterlab/team-compass)**
1. **"Watch" the [team compass repository](https://github.com/jupyterlab/team-compass)** and the [council repository](https://github.com/jupyterlab/council)
so that you're notified when team conversations are happening.
2. **Stay up-to-date on team meetings**. You can find a notes from previous meetings pinned at
the [top of the team-compass issues page](https://github.com/jupyterlab/team-compass/issues).
Expand Down