openbmc_docs/community-membership.md

285 lines
14 KiB
Markdown
Raw Permalink Normal View History

2024-12-23 14:53:31 +08:00
# Community membership
This doc outlines the various expectations of contributor roles in OpenBMC. The
OpenBMC project is subdivided into subrepositories. Responsibilities for most
roles are scoped to these subrepos.
| Role | Expectations | Requirements | Defined by |
| ------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ |
| Code Contributor | Abide by the code of conduct | Executed Contributor License Agreement | Merged Code |
| Designated Reviewer | Review contributions from other members | History of review in a subproject | [OWNERS] file reviewer entry |
| Platform Maintainer | Review and maintain contributions to a single platform | History of testing and ownership of a given single platform | [OWNERS] entry within the meta-\* subfolder for the platform |
| Approver | Review and maintain contributions to a portion of code | Demonstrated responsibility and excellent technical judgement for the portion of code across platforms | subproject [OWNERS] file _owners_ entry |
| Subproject owner | Set direction and priorities for a subproject | Demonstrated responsibility and excellent technical judgement for the subproject across platforms | subproject [OWNERS] file _owners_ entry |
| TOF Member | Set direction and priorities for the project | Elected via [TOF election cycle] | Entry in TOF documentation in docs repository |
## New contributors
[New contributors] should be welcomed to the community by existing members, helped
with review workflow, and directed to relevant documentation and communication channels.
## Established community members
Established community members are expected to demonstrate their adherence to the
principles in this document, familiarity with project organization, roles,
policies, procedures, conventions, etc., and technical and/or writing ability.
Role-specific expectations, responsibilities, and requirements are enumerated
below.
## Member
Members are continuously active contributors in the community. They can have
issues and reviews assigned to them, participate in design reviews through
Gerrit, and pre-submit tests are automatically run for their reviews. Members
are expected to remain active contributors to the community.
**Defined by:** Listed on a current contributor license agreement.
### Expectations
- Have made multiple contributions to the project or community. Contribution may
include, but is not limited to:
- Authoring or reviewing code reviews on Gerrit
- Filing or commenting on issues on GitHub
- Contributing to design review, subproject, or community discussions (e.g.
meetings, Discord, mailing list discussions)
- Subscribed to the [mailing list]
- Have read the [contributor guide]
- Actively contributing to 1 or more subprojects.
- **[Submit a CLA]**
## Designated Reviewer
Designated Reviewers are capable of reviewing code for quality and correctness
on some part of a subproject. They are knowledgeable about both the codebase and
software engineering principles.
**Defined by:** _reviewers_ entry in an OWNERS file in a repo owned by the
OpenBMC project.
Reviewer status is scoped to a part of the codebase.
**Note:** Acceptance of code contributions requires at least one approver in
addition to the assigned reviewers.
### Expectations
The following apply to the part of the codebase for which one would be a
reviewer in an [OWNERS] file.
- Member for at least 3 months
- Primary reviewer for at least 5 changes to the codebase
- Reviewed or merged at least 5 substantial changes to the codebase
- Knowledgeable about the codebase
- Sponsored by a subproject approver
- With no objections from other approvers
- Done through PR to update the OWNERS file
- May either self-nominate or be nominated by an approver in this subproject.
### Responsibilities and privileges
The following apply to the part of codebase for which one would be a reviewer in
an [OWNERS] file.
- Code reviewer status may be a precondition to accepting large code
contributions
- Responsible for project quality control via [code reviews]
- 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 as per [community expectations]
- Assigned changes to review related to subproject of expertise
- Assigned test bugs related to subproject of expertise
## Platform Maintainer
Platform maintainers are able to review configuration changes for quality and
correctness on meta layers and subsystems that apply to a single platform. They
are knowledgeable about the specific constraints on a given platform, and have
access to an instance of said platform to test.
**Defined by:** _owners_ entry in an OWNERS file in a machine meta layer in the
[main OpenBMC repository].
### Expectations
The following apply to the part of codebase for which one would be a platform
owner in an [OWNERS] file.
- Member for at least 3 months
- Primary reviewer for at least 5 reviews to the codebase
- Knowledgeable about the specific platforms constraints
- Access to a platform to test and run code
- Demonstrated knowledge of bitbake metadata
- Sponsored by a root approver from openbmc/openbmc OWNERS file
- With no objections from other approvers
- Done through PR to update the OWNERS file
- May either self-nominate or be nominated by an approver in this subproject.
### Responsibilities and privileges
The following apply to the part of codebase for which one would be a reviewer in
an [OWNERS] file.
- Having an owner with platform maintainer status may be a precondition to
accepting a new platform
- Responsible for platform stability
- Testing on a regular cadence (base expectation is every quarter)
- Providing results and insight to the community on platform-specific issues.
- Expected to be responsive to review requests as per [community expectations]
- Assigned changes to review and test related to the platform
- Communicating with the technical-oversight-forum any long-term (> 1 month)
absences, or resignation of these responsibilities, through a change to the
[OWNERS] file.
## Approver
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 conventions, subtle performance and correctness
issues, interactions with other parts of the system, etc.
**Defined by:** _owners_ entry in an OWNERS file in a repo owned by the OpenBMC
project.
Approver status is scoped to a part of the codebase.
### Expectations
The following apply to the part of the codebase for which one would be an
approver in an [OWNERS] file.
- Reviewer of the codebase for at least 9 months
- Primary reviewer for at least 10 substantial changes to the codebase
- Reviewed or merged at least 30 changes to the codebase
- Access to a suitable platform environment
- Nominated by two subproject or TOF root owner sponsors
- With no objections from other subproject owners
- Done through PR to update the subprojects top-level OWNERS file
- **Note the following expectations for sponsors**:
- Sponsors must have close interactions with the prospective member - e.g.
code/design/proposal review, coordinating on issues, etc.
- Sponsors must be approver in at least one subproject.
- Sponsors must be from multiple member companies to demonstrate integration
across community.
### Responsibilities and privileges
The following apply to the part of the codebase for which one would be an
approver in an [OWNERS] file.
- Approver status may be a precondition to accepting large code contributions
- Demonstrate sound technical judgement
- Responsible for project quality control via [code reviews]
- Focus on holistic acceptance of contribution such as dependencies with other
features, backwards / forwards compatibility, API and flag definitions, etc
- Maintain a codebase that is free from unnecessary or unused code, and remove
previous contributions that are no longer used and/or maintained.
- Expected to be responsive to review requests as per [community expectations]
- Mentor contributors and reviewers
- May approve code contributions for acceptance
## Subproject Owner
**Note:** This is a generalized high-level description of the role, and the
specifics of the subproject owner role's responsibilities and related processes
may be more specific for individual subprojects, as defined in their respective
OWNERS files.
Subproject Owners are the technical authority for a subproject in the OpenBMC
project. They _MUST_ have demonstrated both good judgement and responsibility
towards the health of that subproject. Subproject Owners _MUST_ set technical
direction and make or approve design decisions for their subproject - either
directly or through delegation of these responsibilities.
**Defined by:** _owners_ entry in subproject [OWNERS]
### Expectations
The per-repository requirements for becoming an subproject Owner should be
defined in the OWNERS file of the subproject. Unlike the roles outlined above,
the Owners of a subproject are typically limited to a relatively small group of
decision makers and updated as fits the needs of the subproject.
The following apply to the subproject for which one would be an owner.
- Deep understanding of the technical goals and direction of the subproject
- Deep understanding of the technical domain of the subproject
- Sustained contributions to design and direction by doing all of:
- Authoring and reviewing proposals
- Initiating, contributing and resolving discussions (emails, GitHub issues,
meetings)
- Identifying subtle or complex issues in designs and implementation reviews
- Ensure through testing that the subproject is functional on one or more
platforms
- Directly contributed to the subproject through implementation and/or review
- Meet all subproject specific requirements outlined in the OWNERS file
### Responsibilities and privileges
The following apply to the subproject for which one would be an owner.
- Make and approve technical design decisions for the subproject.
- Set technical direction and priorities for the subproject.
- Mentor and guide approvers, reviewers, and contributors to the subproject.
- Ensure continued health of subproject
- Adequate test coverage to confidently release
- Tests are present and passing reliably (i.e. not flaky) and are fixed when
they fail
- Ensure a healthy process for discussion and decision making is in place.
- Work with other subproject owners to maintain the project's overall health and
success holistically.
- Keep abreast of technical changes to the overall project and maintain and/or
delegate maintenance of the subproject to keep it aligned with the overall
project.
## Technical Oversight Forum Member
The Technical Oversight Forum is the technical authority for the OpenBMC
project. They _MUST_ have demonstrated both good judgement and responsibility
towards the health of the OpenBMC project and be elected by the community. TOF
Members _MUST_ set technical direction and make or approve design decisions for
the project, ensure adherence to the rules in this document and others, and
promote engagement with the open source community at large.
**Defined by:** TOF membership in docs repository
### Expectations
- Deep understanding of the technical goals and direction of the project
- Knowledge of community members, technical experts within and outside the
project, along with a history of engagement.
- Deep understanding of the technical domain of OpenBMC and BMCs in general.
- Sustained contributions to design and direction by doing all of:
- Authoring, reviewing, and voting on proposals to the
technical-oversight-forum repository
- Initiating, contributing and resolving discussions that involve project-wide
changes and expectations (emails, GitHub issues, meetings)
- Identifying subtle or complex issues in designs and implementation that
occur cross-project.
- Ensure through testing that the project is functional (to the extent
possible) for all platforms
- Ensure that coding standards, project norms, and community guidelines are
documented and adhered to throughout the project.
- Directly contributed to the project through implementation and/or review
### Responsibilities and privileges
- Make and approve technical design decisions for OpenBMC.
- Define milestones and releases.
- Mentor and guide approvers, reviewers, and contributors to the project.
- Create new subprojects, and ensure their addition continues the growth and
health of the project.
- Define and maintain a healthy process for discussion and decision making.
- Work with subproject owners and platform maintainers to maintain the project's
overall health and success holistically.
[new contributors]: /CONTRIBUTING.md#starting-out
[code reviews]: https://gerrit.openbmc.org/
[mailing list]: https://lists.ozlabs.org/listinfo/openbmc
[main OpenBMC repository]: https://github.com/openbmc/openbmc
[community expectations]: /code-of-conduct.md
[submit a cla]: /CONTRIBUTING.md#starting-out
[contributor guide]: /CONTRIBUTING.md
[tof election cycle]: /tof/membership-and-voting.md