|
| 1 | +# NVSentinel Governance |
| 2 | + |
| 3 | +This document describes the governance model for the NVSentinel project. It defines the roles, responsibilities, and decision-making processes that help maintain the long-term health and sustainability of the project. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +NVSentinel follows a hierarchical governance model similar to other Kubernetes ecosystem projects. This structure ensures that contributions are properly reviewed, architectural decisions are well-considered, and the project maintains high quality standards while remaining accessible to new contributors. |
| 8 | + |
| 9 | +## Roles and Responsibilities |
| 10 | + |
| 11 | +The NVSentinel project has the following roles, listed in order of increasing scope of responsibility: |
| 12 | + |
| 13 | +### Contributors |
| 14 | + |
| 15 | +**Who they are**: Anyone who contributes to the project in any form (code, documentation, issues, discussions, etc.). |
| 16 | + |
| 17 | +**Responsibilities**: |
| 18 | +- Follow the [Code of Conduct](CODE_OF_CONDUCT.md) |
| 19 | +- Sign the [Developer Certificate of Origin](CONTRIBUTING.md#developer-certificate-of-origin) (DCO) for all contributions |
| 20 | +- Follow project coding standards and guidelines |
| 21 | +- Respond to feedback on their contributions |
| 22 | + |
| 23 | +**How to become one**: Simply contribute! Open a pull request, file an issue, or participate in discussions. |
| 24 | + |
| 25 | +### Reviewers |
| 26 | + |
| 27 | +**Who they are**: Contributors who have demonstrated consistent, high-quality contributions and have been granted review privileges for specific areas of the codebase. |
| 28 | + |
| 29 | +**Responsibilities**: |
| 30 | +- Review pull requests in their area of expertise |
| 31 | +- Provide constructive feedback on code quality, design, and testing |
| 32 | +- Ensure contributions follow project standards |
| 33 | +- Help triage and categorize issues |
| 34 | +- Mentor new contributors |
| 35 | + |
| 36 | +**Privileges**: |
| 37 | +- Can review and comment on pull requests |
| 38 | +- Can request changes on pull requests |
| 39 | +- Can be assigned to review pull requests |
| 40 | + |
| 41 | +**How to become one**: |
| 42 | +1. Demonstrate consistent, high-quality contributions over time |
| 43 | +2. Show expertise in specific areas of the codebase |
| 44 | +3. Be nominated by an existing Reviewer or Approver |
| 45 | +4. Be approved by a majority of Approvers in the relevant area |
| 46 | + |
| 47 | +### Approvers |
| 48 | + |
| 49 | +**Who they are**: Reviewers who have demonstrated deep expertise and excellent judgment in their areas. They have the authority to approve pull requests for merging. |
| 50 | + |
| 51 | +**Responsibilities**: |
| 52 | +- All responsibilities of Reviewers |
| 53 | +- Approve pull requests that meet project standards |
| 54 | +- Make decisions on technical design within their area |
| 55 | +- Participate in architectural discussions |
| 56 | +- Help maintain code quality and project health |
| 57 | +- Mentor Reviewers and Contributors |
| 58 | + |
| 59 | +**Privileges**: |
| 60 | +- All privileges of Reviewers |
| 61 | +- Can approve pull requests (with appropriate reviews) |
| 62 | +- Can merge approved pull requests |
| 63 | +- Can participate in release planning and decisions |
| 64 | + |
| 65 | +**How to become one**: |
| 66 | +1. Be an active Reviewer for at least 3 months |
| 67 | +2. Demonstrate excellent technical judgment and code review quality |
| 68 | +3. Show ability to make sound architectural decisions |
| 69 | +4. Deliver a feature end to end |
| 70 | +5. Be nominated by an existing Approver or Maintainer |
| 71 | +6. Be approved by a majority of Maintainers |
| 72 | + |
| 73 | +### Maintainers |
| 74 | + |
| 75 | +**Who they are**: Approvers who have demonstrated exceptional commitment to the project and have broad responsibility for its overall health and direction. |
| 76 | + |
| 77 | +**Responsibilities**: |
| 78 | +- All responsibilities of Approvers |
| 79 | +- Make architectural and design decisions |
| 80 | +- Participate in release planning and management |
| 81 | +- Resolve conflicts and disputes |
| 82 | +- Maintain project documentation and governance |
| 83 | +- Represent the project in the community |
| 84 | +- Onboard new Approvers and Reviewers |
| 85 | + |
| 86 | +**Privileges**: |
| 87 | +- All privileges of Approvers |
| 88 | +- Can make architectural decisions |
| 89 | +- Can approve new Reviewers and Approvers |
| 90 | +- Can participate in project-wide decisions |
| 91 | +- Can manage project settings and repositories |
| 92 | + |
| 93 | +**How to become one**: |
| 94 | +1. Be an active Approver for at least 6 months |
| 95 | +2. Demonstrate exceptional commitment and leadership |
| 96 | +3. Show ability to guide project direction |
| 97 | +4. Be nominated by an existing Maintainer |
| 98 | +5. Be approved by a supermajority (2/3) of existing Maintainers |
| 99 | + |
| 100 | +### Technical Leads / Project Chairs |
| 101 | + |
| 102 | +**Who they are**: Maintainers who provide overall technical leadership and strategic direction for the project. |
| 103 | + |
| 104 | +**Responsibilities**: |
| 105 | +- All responsibilities of Maintainers |
| 106 | +- Set long-term technical vision and roadmap |
| 107 | +- Make final decisions on major architectural changes |
| 108 | +- Resolve disputes that cannot be resolved by Maintainers |
| 109 | +- Represent the project to external stakeholders |
| 110 | +- Coordinate with other projects and organizations |
| 111 | + |
| 112 | +**Privileges**: |
| 113 | +- All privileges of Maintainers |
| 114 | +- Final authority on technical decisions |
| 115 | +- Can make emergency decisions when needed |
| 116 | + |
| 117 | +**How to become one**: |
| 118 | +- Appointed by the project sponsor (NVIDIA) in consultation with existing Technical Leads |
| 119 | +- Requires exceptional technical leadership and commitment |
| 120 | + |
| 121 | +## Decision-Making Process |
| 122 | + |
| 123 | +### Code Changes |
| 124 | + |
| 125 | +1. **Pull Request Process**: |
| 126 | + - All pull requests require at least one review from a Reviewer |
| 127 | + - All pull requests require approval from at least one Approver |
| 128 | + - Maintainers can approve their own changes, but should seek review from another Maintainer for significant changes |
| 129 | + - All CI checks must pass before merging |
| 130 | + |
| 131 | +2. **Review Requirements**: |
| 132 | + - Small changes (documentation, typo fixes): 1 Reviewer approval |
| 133 | + - Standard changes: 1 Reviewer + 1 Approver approval |
| 134 | + - Significant changes (new features, major refactoring): 2 Reviewers + 1 Approver approval |
| 135 | + - Architectural changes: 2 Approvers + 1 Maintainer approval |
| 136 | + |
| 137 | +### Design and Architecture Decisions |
| 138 | + |
| 139 | +1. **Proposal Process**: |
| 140 | + - Create a GitHub Discussion or issue with the `design` label |
| 141 | + - Tag relevant Maintainers and Approvers |
| 142 | + - Allow at least 1 week for community feedback |
| 143 | + - Document the decision and rationale |
| 144 | + |
| 145 | +2. **Decision Authority**: |
| 146 | + - Minor design decisions: Any Approver |
| 147 | + - Significant design decisions: Majority of Maintainers |
| 148 | + - Major architectural changes: Supermajority (2/3) of Maintainers or Technical Leads |
| 149 | + |
| 150 | +### Conflict Resolution |
| 151 | + |
| 152 | +1. **Technical Disagreements**: |
| 153 | + - Discuss in pull request comments or GitHub Discussions |
| 154 | + - If unresolved, escalate to Maintainers |
| 155 | + - Maintainers will facilitate discussion and make a decision |
| 156 | + - Final appeal to Technical Leads if needed |
| 157 | + |
| 158 | +2. **Code of Conduct Issues**: |
| 159 | + - Report to GitHub_Conduct@nvidia.com (as per [Code of Conduct](CODE_OF_CONDUCT.md)) |
| 160 | + - Maintainers will investigate and take appropriate action |
| 161 | + |
| 162 | +## Areas of Ownership |
| 163 | + |
| 164 | +The project is organized into several areas, each with their own Reviewers and Approvers: |
| 165 | + |
| 166 | +- **Core Infrastructure**: Platform connectors, store client, data models |
| 167 | +- **Health Monitors**: GPU, syslog, CSP, and Kubernetes object monitors |
| 168 | +- **Fault Management**: Fault quarantine, node drainer, fault remediation |
| 169 | +- **Supporting Services**: Janitor, labeler, metadata collector, log collector |
| 170 | +- **Distribution**: Helm charts, Kubernetes manifests, deployment tooling |
| 171 | +- **Documentation**: All project documentation |
| 172 | + |
| 173 | +Maintainers have cross-cutting responsibilities across all areas. |
| 174 | + |
| 175 | +## Becoming a Reviewer or Approver |
| 176 | + |
| 177 | +### Path to Reviewer |
| 178 | + |
| 179 | +1. **Contribute consistently**: Make at least 5-10 meaningful contributions |
| 180 | +2. **Demonstrate expertise**: Show deep understanding of specific areas |
| 181 | +3. **Review contributions**: Provide helpful reviews on others' pull requests |
| 182 | +4. **Get nominated**: Be nominated by an existing Reviewer or Approver |
| 183 | +5. **Get approved**: Receive approval from a majority of Approvers in the relevant area |
| 184 | + |
| 185 | +### Path to Approver |
| 186 | + |
| 187 | +1. **Be an active Reviewer**: Review consistently for at least 3 months |
| 188 | +2. **Show judgment**: Demonstrate ability to make sound technical decisions |
| 189 | +3. **Mentor others**: Help onboard new contributors |
| 190 | +4. **Get nominated**: Be nominated by an existing Approver or Maintainer |
| 191 | +5. **Get approved**: Receive approval from a majority of Maintainers |
| 192 | + |
| 193 | +## Maintaining Status |
| 194 | + |
| 195 | +All roles require ongoing participation: |
| 196 | + |
| 197 | +- **Reviewers**: Should review at least 1 pull request per month |
| 198 | +- **Approvers**: Should review and approve at least 2 pull requests per month |
| 199 | +- **Maintainers**: Should participate in project discussions and decisions regularly |
| 200 | + |
| 201 | +If a person is inactive for 6+ months, their status may be reviewed. Exceptions can be made for known circumstances (e.g., sabbatical, parental leave). |
| 202 | + |
| 203 | +## Release Management |
| 204 | + |
| 205 | +- **Release Planning**: Maintainers coordinate release planning and scheduling |
| 206 | +- **Release Approval**: Releases require approval from at least 2 Maintainers |
| 207 | +- **Release Process**: See [RELEASE.md](RELEASE.md) for detailed release procedures |
| 208 | + |
| 209 | +## Modifications to Governance |
| 210 | + |
| 211 | +Changes to this governance document require: |
| 212 | +- A pull request with the proposed changes |
| 213 | +- Discussion period of at least 1 week |
| 214 | +- Approval from a supermajority (2/3) of Maintainers |
| 215 | + |
| 216 | +## Contact |
| 217 | + |
| 218 | +For questions about governance or to nominate someone for a role: |
| 219 | +- Open a GitHub Discussion with the `governance` label |
| 220 | +- Contact the project Maintainers directly |
| 221 | + |
| 222 | +--- |
| 223 | + |
| 224 | +*This governance model is inspired by the Kubernetes project and other CNCF projects, adapted for the needs of NVSentinel.* |
0 commit comments