From 4aa12f8ccabebaa0f9a5285728d8f0728229f94e Mon Sep 17 00:00:00 2001 From: Gaius Date: Wed, 26 Jun 2024 23:14:59 +0800 Subject: [PATCH] docs: add the responsibilities of contributor roles (#3345) Signed-off-by: Gaius --- GOVERNANCE.md | 122 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 109 insertions(+), 13 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 6f6f08684..67c519f75 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -2,15 +2,92 @@ As a CNCF member project, Dragonfly project abides by the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). -## Overview +This doc outlines the responsibilities of contributor roles in Dragonfly. The Dragonfly project is subdivided into sub-projects +under (predominantly, but not exclusively) nydus, nydus-snapshotter, api, docs, console and client. +Responsibilities for roles are scoped to these sub-projects (repos). -- [Maintainership](#Maintainership) -- [Adding Maintainers](#Adding-Maintainers) -- [Removal of Inactive Maintainers](#Removal-of-Inactive-Maintainers) -- [How to make decision](#How-to-make-decision) -- [Updating Governance](#Updating-Governance) +We have six levels of responsibility including: -## Maintainership +- Contributor +- Member +- Approver +- Maintainer +- Administrator + +## Contributor + +A Contributor is someone who has contributed to the project by submitting code, issues, or participating in discussions. + +### Responsibilities + +- Contribute code changes via pull requests (PRs). +- Raise issues for bugs, enhancements, or other discussions. +- Participate in code reviews if requested. +- Follow the project's Code of Conduct and contribution guidelines. + +### Requirements + +- Have a GitHub account. +- Sign the Contributor License Agreement (if applicable). +- Adhere to the project's coding standards and guidelines.Contributor + +## Member + +A Member is a contributor who has shown long-term commitment to the project, +consistently contributing high-quality work and actively participating in the community. + +Responsibilities: + +- All responsibilities of a Contributor. +- Participate in project planning and decision-making processes. +- Mentor new contributors. +- Actively participate in community meetings and discussions. + +Requirements: + +- Demonstrated history of contributions (code, reviews, discussions) over at least 3 months. +- Invitation by a Maintainer or Administrator based on consensus. +- Continued adherence to the project's Code of Conduct. + +## Approver + +An Approver is a member who has the additional responsibility of reviewing and approving PRs that affect the project. + +Responsibilities: + +- All responsibilities of a Member. +- Review and approve PRs from Contributors and Members. +- Ensure that changes adhere to coding standards, do not introduce bugs, and improve the project. +- Help triage issues and provide feedback on improvements. + +Requirements: + +- Demonstrated expertise in the project’s codebase. +- Consistent and high-quality contributions. +- Trusted by Maintainers and Administrators to provide accurate reviews and approvals. + +## Maintainer + +A Maintainer is an experienced and trusted member who has extensive knowledge of the project, including architecture +and design principles. Maintainers have the authority to merge PRs and make significant project decisions. + +Responsibilities: + +- All responsibilities of an Approver. +- Merge PRs to the main branch. +- Ensure the overall quality, stability, and performance of the codebase. +- Coordinate releases and update documentation. +- Guide the project's technical direction and roadmap. +- Facilitate communication and collaboration within the community. + +Requirements: + +- Demonstrated long-term, high-quality contributions and leadership in the project. +- Deep understanding of the project’s architecture and design. +- Commitment to the project's goals and values. +- Nominated and approved by existing Maintainers and Administrators. + +### Maintainership Maintainers of Dragonfly share the responsibility. And they have 3 things in general: @@ -23,7 +100,7 @@ It is easy to work on the fancy part or technically advanced feature. It is hard to work on minor bugfix, small improvement, long-term stable optimization or others. While all of the above is the essential parts to build up a successful project. -## Adding Maintainers +### Adding Maintainers Maintainers are foremost and first contributors that have dedicated to the long term success of the project. Contributors wishing to become maintainers are @@ -42,7 +119,7 @@ maintainers can be submitted to GitHub via a pull request. If a vote of at least 50% agree with the proposal, the newly added maintainer must be treated valid. -## Removal of Inactive Maintainers +### Removal of Inactive Maintainers Similar to adding maintainers, existing maintainer can been removed from the active maintainer list. If the existing maintainer meet one of the conditions @@ -61,7 +138,7 @@ If a maintainer is removed from the maintaining list, other maintainers should at a column to the alumni part to thank the contribution made from the inactive maintainer. -## How to make decision +### How to make decision Dragonfly is an open-source project illustrating the concept of open. This means that Dragonfly repository is the source of truth for every aspect of the @@ -88,7 +165,26 @@ maintainers pull request could be merged, if it meets conditions below: - at least two maintainers commented `LGTM` to the pull request; -## Updating Governance +### Updating Governance -All substantive updates in Governance require a supermajority maintainers -vote. +All substantive updates in Governance require a supermajority maintainers vote. + +## Administrator + +An Administrator has the highest level of access and responsibility in the project. They manage overall project governance, +ensure adherence to policies, and resolve conflicts within the community. + +Responsibilities: + +- All responsibilities of a Maintainer. +- Manage project settings and permissions. +- Ensure compliance with legal and organizational policies. +- Handle CoC violations and mediate conflicts. +- Facilitate election of new roles or changes in the governance structure. + +Requirements: + +- Proven contribution history and leadership within the project. +- Strong understanding of open-source community management. +- Trusted by the community and other Administrators. +- Appointed through consensus of current Administrators.