doc/project/project_roles.rst
.. _project_roles:
TSC Project Roles
Project Roles #############
TSC projects generally will involve Maintainers, Collaborators, and Contributors:
Maintainer: lead Collaborators on an area identified by the TSC (e.g. Architecture, code subsystems, etc.). Maintainers shall also serve as the area’s representative on the TSC as needed. Maintainers may become voting members of the TSC under the guidelines stated in the project Charter.
Collaborator: A highly involved Contributor in one or more areas. May become a Maintainer with approval of existing TSC voting members.
Contributor: anyone in the community that contributes code or documentation to the project. Contributors may become Collaborators by approval of the existing Collaborators and Maintainers of the particular code base areas or subsystems.
.. _contributor:
Contributor +++++++++++
A Contributor is a developer who wishes to contribute to the project, at any level.
Contributors are granted the following rights and responsibilities:
Contributors are initially only given Read <https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-permission-levels-for-an-organization>_
access to the Zephyr GitHub repository. Specifically, at the Read access level,
Contributors are not allowed to assign reviewers to their own pull requests. An
automated process will assign reviewers. You may also share the pull request on
the Zephyr devel mailing list <https://lists.zephyrproject.org/g/devel>_ or on
the Zephyr Discord Server <https://chat.zephyrproject.org>_.
Contributors who show dedication and skill are granted the Triage permission level to the Zephyr GitHub repository.
You may nominate yourself, or another GitHub user, for promotion to the Triage
permission level by creating a GitHub issue, using the :github:nomination template <new?assignees=&labels=Role+Nomination&template=006_nomination.yml>.
Contributors granted the Triage permission level are permitted to add reviewers to a pull request and can be added as a reviewer by other GitHub users. Contributor change requests or approval on pull requests are not counted with respect to accepting and merging a pull request. However, Contributors comments and requested changes should still be considered by the pull request author.
Zephyr Contributor Badge ++++++++++++++++++++++++
When your first contribution to the Zephyr project gets merged, you'll become eligible to claim your Zephyr Contributor Badge. This digital badge can be displayed on your website, blog, social media profile, etc. It will allow you to showcase your involvement in the Zephyr project and help raise its awareness.
You may apply for your Contributor Badge by filling out the Zephyr Contributor Badge form_.
.. _collaborator:
Collaborator ++++++++++++
A Collaborator is a Contributor who is also responsible for the maintenance of Zephyr source code. Their opinions weigh more when decisions are made, in a fully meritocratic fashion.
Collaborators have the following rights and responsibilities, in addition to those listed for Contributors:
Contributors are promoted to the Collaborator role by adding the GitHub user
name to one or more collaborators sections of the :ref:maintainers_file in
the Zephyr repository.
Collaborator change requests on pull requests should
be addressed by the original submitter. In cases where the changes requested do
not follow the :ref:expectations <reviewer-expectations> and the guidelines
of the project or in cases of disagreement, it is the responsibility of the
assignee to advance the review process and resolve any disagreements.
Collaborator approval of pull requests are counted toward the minimum required approvals needed to merge a PR. Other criteria for merging may apply.
.. _maintainer:
Maintainer ++++++++++
A Maintainer is a Collaborator who is also responsible for knowing, directing and anticipating the needs of a given zephyr source code area.
Maintainers have the following rights and responsibilities, in addition to those listed for Contributors and Collaborators:
pr_technical_escalation.static_analysis.Contributors or Collaborators are promoted to the Maintainer role by adding the
GitHub user name to one or more maintainers sections of the
:ref:maintainers_file in the Zephyr repository. Candidates who are neither
Contributors nor Collaborators must be approved by the TSC before they can
assume the role of Maintainer.
Maintainer approval of pull requests are counted toward the minimum required approvals needed to merge a PR. Other criteria for merging may apply.
Role Retirement ###############
Teams and Supporting Activities ###############################
Assignee ++++++++
An Assignee is one of the maintainers of a subsystem or code being changed. Assignees are set either automatically based on the code being changed or set by the other Maintainers, the Release Engineering team can set an assignee when the latter is not possible.
expectations <reviewer-expectations> from reviewers and seek reviews
from additional maintainers, developers and contributorspr_technical_escalation processStatic Analysis Audit Team ++++++++++++++++++++++++++
The Static Analysis Audit team works closely with the release engineering team to ensure that static analysis defects opened during a release cycle are properly addressed. The team has the following rights and responsibilities:
Joining the Static Analysis Audit team
.. _release-engineering-team:
Release Engineering Team ++++++++++++++++++++++++
A team of active Maintainers involved in multiple areas.
Release Engineering team has the following rights and responsibilities:
Joining the Release Engineering team
Release Manager +++++++++++++++
A Maintainer responsible for driving a specific release to completion following the milestones and the roadmap of the project for this specific release.
A Release Manager is a member of the Release Engineering team and has the rights and responsibilities of that team in addition to the following:
program management overview <https://wiki.zephyrproject.org/Program-Management>_.)Roles / Permissions +++++++++++++++++++
.. table:: Project Roles vs GitHub Permissions :widths: 20 20 10 10 10 10 10 :align: center
================ =================== =========== ================ =========== =========== ============
.. .. **Admin** **Merge Rights** Member Owner Collaborator
---------------- ------------------- ----------- ---------------- ----------- ----------- ------------
Main Roles Contributor x
---------------- ------------------- ----------- ---------------- ----------- ----------- ------------
.. Collaborator x
---------------- ------------------- ----------- ---------------- ----------- ----------- ------------
.. Maintainer x
Supportive Roles QA/Validation x x
.. DevOps **x**
.. System Admin **x** x
.. Release Engineering **x** x
================ =================== =========== ================ =========== =========== ============
.. _maintainers_file:
MAINTAINERS File ################
Generic guidelines for deciding and filling in the Maintainers' list
We should keep the granularity of code maintainership at a manageable level
We should be looking for maintainers for areas of code that are orphaned (i.e. without an explicit maintainer)
All submitted pull requests should have an assignee
We Introduce an area/subsystem hierarchy to address the above point
Pull requests may be re-assigned if this is needed or more appropriate
In general, updates to the MAINTAINERS file should be in a standalone commit alongside other changes introducing new files and directories to the tree.
Major changes to the file, including the addition of new areas with new maintainers should come in as standalone pull requests and require TSC review.
If additional review by the TSC is required, the maintainers of the file should send the requested changes to the TSC and give members of the TSC two (2) days to object to any of the changes to maintainership of areas or the addition of new maintainers or areas.
Path, collaborator and name changes do not require a review by the TSC.
Addition of new areas without a maintainer do not require review by the TSC.
The MAINTAINERS file itself shall have a maintainer
Architectures, core components, sub-systems, samples, tests
Boards (incl relevant samples, tests), SoCs (incl DTS)
Drivers
.. _Zephyr Contributor Badge form: https://forms.gle/oCw9iAPLhUsHTapc8