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

[WIP] doc: adding doc describing contribution ladder #3559

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
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
121 changes: 121 additions & 0 deletions CONTRIBUTION_LADDER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# Contribution Ladder

---

* [Roles](#roles)
* [Community Member](#community-member)
* [Contributor](#contributor)
* [How to become a contributor](#how-to-become-a-contributor)
* [Maintainer](#maintainer)
* [How to become a maintainer](#how-to-become-a-maintainer)
* [Involuntary Removal or Demotion](#involuntary-removal-or-demotion)
* [Stepping Down/Emeritus Process](#stepping-downemeritus-process)
---

Our ladder defines the roles and responsibilities for this project and how to
participate with the goal of moving from a user to a maintainer. You will need
to gain people's trust, demonstrate your competence and understanding, and meet
the requirements of the role.

## Roles

* Community Member
* Contributor
* Maintainer

## Community Member

Everyone is a community member! 😄 You've read this far so you are already ahead. 💯

Here are some ideas for how you can be more involved and participate in the community:

* Comment on an issue that you’re interested in.
* Submit a pull request to fix an issue.
* Report a bug.
* Come chat with us in [Slack][slack].

They must follow our [Code of Conduct](CODE_OF_CONDUCT.md).
Copy link
Contributor

Choose a reason for hiding this comment

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

Note that a lot of the procedures for this are controlled by the GOVERNANCE doc in the OPA repo.


[slack]: https://communityinviter.com/apps/openpolicyagent/signup

## Contributor

[Contributors][contributors] have the following capabilities:

* Have issues and pull requests assigned to them
* Apply labels, milestones and projects
* [Mark issues as duplicates](https://help.github.com/en/articles/about-duplicate-issues-and-pull-requests)
* Close, reopen, and assign issues and pull requests

They must agree to and follow this [Contributing Guide](CONTRIBUTING.md).

### How to become a contributor

To become a contributor, the maintainers of the project would like to see you:

* Comment on issues with your experiences and opinions.
* Add your comments and reviews on pull requests.
* Contribute pull requests.
* Open issues with bugs, experience reports, and questions.

## Maintainer

[Maintainers][maintainers] are members with extra capabilities:

* Be a [Code Owner](.github/CODEOWNERS) and have reviews automatically requested.
* Review pull requests.
* Merge pull requests.

Maintainers also have responsibilities beyond just merging code:

* Help foster a safe and welcoming environment for all project participants.
This will include understanding and enforcing our [Code of Conduct](CODE_OF_CONDUCT.md).
* Organize and promote pull request reviews, e.g. prompting community members,
contributors, and other maintainers to review.
* Triage issues, e.g. adding labels, promoting discussions, finalizing decisions.
* Help organize our community meetings, e.g. schedule, organize and
execute agenda.
* Organize timely release for new changes in the project by following [release guidelines](docs/RELEASE.md).

### How to become a maintainer

To become a maintainer, we would like you to see you be an effective
contributor, and show that you can do some of the things maintainers do.
Maintainers will do their best to regularly discuss promoting contributors. But
don’t be shy, if you feel that this is you, please reach out to one or more of
the maintainers. Here are the foot steps to follow for maintainer path:

- Contributor for at least 3 months
- Contributed in developing new features
- Must remain an active participant in the community by contributing code, performing reviews, triaging issues, etc.
- Knowledgeable about the codebase

## Inactivity

It is important for maintainers to stay active to set an example and show commitment to the project.
Inactivity is harmful to the project as it may lead to unexpected delays, contributor attrition, and a lost of trust in the project.

* Inactivity is measured by:
* Periods of no contributions for longer than a year, where contributions must include maintainer-level tasks:
reviewing and merging others pull requests, project administration, release management, mentoring, etc.
Code contributions are not strictly required to be considered active.
* Periods of no communication for longer than a year.
* Consequences of being inactive include:
* Involuntary removal or demotion.
* Being asked to move to Emeritus status.

## Involuntary Removal or Demotion

Involuntary removal/demotion of a maintainer happens when responsibilities and requirements aren't being met.
This may include repeated patterns of inactivity, extended period of inactivity, a period of failing to meet the requirements of your role, and/or a violation of the Code of Conduct.
This process is important because it protects the community and its deliverables while also opens up opportunities for new contributors to step in.

Removal or demotion is handled first by attempting to contact the maintainer in question to suggest stepping down.
If they cannot be reached, or will not resume their maintainer responsibilities, involuntary removal is initiated through a vote by a majority of the other current Maintainers.

## Stepping Down/Emeritus Process

If and when contributors' commitment levels change, contributors can consider stepping down (moving down the contributor ladder) instead of moving to emeritus status (completely stepping away from the project).

Contact the Maintainers about changing to Emeritus status, or reducing your contributor level.
When an Emeritus Maintainer has been an active contributor for 1 month, they can reapply to be considered for the Maintainer role again.