Note: This document is a work in progress
This doc outlines the various responsibilities of contributor roles in Clutserpedia.
Role | Responsibilities | Defined by |
---|---|---|
Member | Active contributor in the community | Clusterpedia GitHub org member |
Reviewer | Review contributions from other members | OWNERS file reviewer entry |
Approver | Contributions acceptance approval | OWNERS file approver entry |
Members are continuously active contributors in the community. They can have issues and PRs assigned to them. Members are expected to remain active contributors to the community.
Defined by: Member of the Clusterpedia GitHub organization
- Enabled two-factor authentication on their GitHub account
- Have made multiple contributions to the project or community. Contribution may include, but is not limited to:
- Actively contributing to 1 or more subprojects. At least three PR must be merged.
- Published several different articles or speeches about Clusterpedia.
- Open an membership issue
- Make sure that the list of contributions included is representative of your work on the project.
- Responsive to issues and PRs assigned to them
- Members can do
/lgtm
on open PRs. - They can be assigned to issues and PRs, and people can ask members for reviews with a
/cc @username.
Note: members who frequently contribute code are expected to proactively perform code reviews and work towards becoming a primary reviewer for the submodel that they are active in.
Reviewers are able to review code for quality and correctness on the submodel. They are knowledgeable about both the codebase and software engineering principles.
Defined by: reviewers entry in an OWNERS file.
Reviewer status is scoped to a part of the codebase.
The following apply to the part of codebase for which one would be a reviewer in an OWNERS file (for repos using the bot).
- member for at least 1 months
- Primary reviewer for at least 3 PRs to the codebase
- Reviewed or merged at least 10 substantial PRs to the codebase
- Knowledgeable about the codebase
- Sponsored by a submodel approver
- With no objections from other approvers
- Done through PR to update the OWNERS file
- May either self-nominate, be nominated by an approver in this submodel.
The following apply to the part of codebase for which one would be a reviewer in an OWNERS file (for repos using the bot).
- Code reviewer status may be a precondition to accepting large code contributions
- Responsible for project quality control
- Focus on code quality and correctness, including testing and factoring
- May also review for more holistic issues, but not a requirement
- Expected to be responsive to review requests
- Assigned PRs to review related to submodel of expertise
- Assigned test bugs related to submodel of expertise
Code approvers are able to both review and approve code contributions. While code review is focused on code quality and correctness, approval is focused on holistic acceptance of a contribution including: backwards / forwards compatibility, adhering to API and flag conventions, subtle performance and correctness issues, interactions with other parts of the system, etc.
Defined by: approvers entry in an OWNERS file
The following apply to the part of codebase for which one would be an approver in an OWNERS file (for repos using the bot).
- Reviewer of the codebase for at least 2 months
- Primary reviewer for at least 10 substantial PRs to the codebase
- Reviewed or merged at least 30 PRs to the codebase
- Nominated by a maintainer
- With no objections from other maintainers
- Done through PR to update the OWNERS file
If you add a new submodule, then you can apply to be the Approver for that module, and the core participants of that module can be nominated by you as Reviewer
The following apply to the part of codebase for which one would be an approver in an OWNERS file (for repos using the bot).
- Approver status may be a precondition to accepting large code contributions
- Demonstrate sound technical judgement
- Responsible for project quality control
- Focus on holistic acceptance of contribution such as dependencies with other features, backwards / forwards compatibility, API and flag definitions, etc
- Expected to be responsive to review requests
- Mentor contributors and reviewers
- May approve code contributions for acceptance
For better maintenance of Clusterpedia, the repository is divided into the following modules:
- APIServer
- cmd/apiserver
- pkg/apiserver
- pkg/kubeapiserver
- pkg/storage/*
- ClusterSynchro Manager
- cmd/clustersynchro
- pkg/synchromanager
- pkg/storage/*
- Controller Manager
- cmd/controller-manager
- pkg/controller
- Internal Storage
- pkg/storage
- pkg/storage/internalstorage
- Memory Storage
- cmd/binding-apiserver
- pkg/storage
- pkg/storage/memorystorage
- Deploy&Charts
- deploy
- charts
- E2E Tests
- tests
OWNERS files are used to designate responsibility over different models of the Clusterpedia codebase. Today, we use them to assign the reviewer and approver roles that are used in our two-phase code review process.
OWNERS files are in YAML format and support the following keys:
approvers
: a list of GitHub usernames of the approver of the modulereviewers
: a list of GitHub usernames of the reviewer of the module
A typical OWNERS file like:
approvers:
- alice
- bob # this is a comment
reviewers:
- alice
- bob
- carol
- david # this is another comment