From 1440c44562b3f87eb17c08de5e607829d9e25e37 Mon Sep 17 00:00:00 2001 From: Prasanth Baskar Date: Tue, 7 Jul 2026 06:30:18 +0000 Subject: [PATCH 1/6] Add subproject governance Signed-off-by: Prasanth Baskar --- GOVERNANCE.md | 4 ++ MAINTAINERS.md | 21 ++++++- SUBPROJECT_GOVERNANCE.md | 119 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 SUBPROJECT_GOVERNANCE.md diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 871cc7a7..adbb7a77 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,10 +19,14 @@ maintained under the `goharbor` namespace. * **[harbor-helm](https://github.com/goharbor/harbor-helm):** Helm chart for easy deployment of Harbor * **[community](https://github.com/goharbor/community):** Used to store community-related material–e.g., proposals, presentation slides, governance documents, community meeting minutes, etc. +Long-lived repository or component ownership is documented through +[subproject governance](SUBPROJECT_GOVERNANCE.md). + ## Community Roles * **Users:** Members that engage with the Harbor community via any medium (Slack, WeChat, GitHub, mailing lists, etc.). * **Contributors:** Regular contributions to projects (documentation, code reviews, responding to issues, participation in proposal discussions, contributing code, etc.). +* **Subproject Reviewers and Maintainers:** Contributors with scoped responsibilities for a Harbor subproject, as defined in [SUBPROJECT_GOVERNANCE.md](SUBPROJECT_GOVERNANCE.md). * **Maintainers**: The Harbor project leaders. They are responsible for the overall health and direction of the project; final reviewers of PRs and responsible for releases. Some Maintainers are responsible for one or more components within a project, acting as technical leads for that component. Maintainers are expected to contribute code and documentation, review PRs including ensuring quality of code, triage issues, proactively fix bugs, and perform maintenance tasks for these components. ### Maintainers diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 026df633..dcad3f6e 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -2,6 +2,8 @@ [GOVERNANCE.md](https://github.com/goharbor/community/blob/master/GOVERNANCE.md) describes governance guidelines and maintainer responsibilities. +[SUBPROJECT_GOVERNANCE.md](SUBPROJECT_GOVERNANCE.md) describes scoped +subproject reviewers and maintainers. ## Maintainers @@ -32,6 +34,24 @@ describes governance guidelines and maintainer responsibilities. | --------------- | --------- | ----------- | | ? | [?](https://github.com/?) | [?](https://www.github.com/?) | +## Subprojects + +Subproject maintainers and reviewers are scoped roles. They own review, triage, +release, and contributor growth responsibilities for the listed subproject, but +do not automatically become Harbor Maintainers. + +When a subproject has its own `MAINTAINERS.md`, that file is the source of truth +for the scoped subproject roles and this table mirrors it. + +Subproject maintainers and reviewers should be listed alphabetically by name. + +Recognized Harbor subproject maintainer groups should be mirrored in the CNCF +`project-maintainers.csv` record using names such as `Harbor: `. + +| Subproject | Scope | Status | Maintainers | Reviewers | +| ---------- | ----- | ------ | ----------- | --------- | +| Harbor CLI | Official Harbor CLI: [goharbor/harbor-cli](https://github.com/goharbor/harbor-cli) | active | Lakshit Singh ([NucleoFusion](https://github.com/NucleoFusion)), Patrick Eschenbach ([qcserestipy](https://github.com/qcserestipy)), Prasanth Baskar ([bupd](https://github.com/bupd)), Vadim Bauer ([Vad1mo](https://github.com/Vad1mo)) | - | + ## Harbor Core Contributors & Stakeholders | Harbor Feature Area | Lead | @@ -62,4 +82,3 @@ describes governance guidelines and maintainer responsibilities. * Alex Xu, [xaleeks](https://github.com/xaleeks) * Tianon Gravi, [tianon](https://github.com/tianon) * Daniel Pacak, [danielpacak](https://github.com/danielpacak) - diff --git a/SUBPROJECT_GOVERNANCE.md b/SUBPROJECT_GOVERNANCE.md new file mode 100644 index 00000000..20b1828f --- /dev/null +++ b/SUBPROJECT_GOVERNANCE.md @@ -0,0 +1,119 @@ +# Harbor Subproject Governance + +This document defines lightweight governance for Harbor subprojects, reviewers, +and subproject maintainers. Harbor keeps this model intentionally small. + +## Roles + +### Contributor + +A contributor helps Harbor through code, documentation, testing, issue triage, +release work, packaging, community support, design review, or mentoring. + +### Subproject Reviewer + +A subproject reviewer is trusted to review and triage changes in a defined +subproject. Reviewers help contributors get work ready, but do not own the +subproject direction. Reviewers are listed in `MAINTAINERS.md`. + +### Subproject Maintainer + +A subproject maintainer owns the health of a defined Harbor subproject. + +Responsibilities: + +* Review, approve, and help merge changes in the subproject. +* Triage issues and pull requests. +* Keep documentation, tests, release notes, and ownership metadata current. +* Mentor contributors and reviewers. +* Coordinate releases or packaging when the subproject publishes artifacts. +* Escalate cross-project, security, or disputed decisions to Harbor Maintainers. + +Subproject maintainership is scoped. It does not automatically grant Harbor +Maintainer status or project-wide decision authority. + +### Harbor Maintainer + +Harbor Maintainers are the project-wide maintainers defined in `GOVERNANCE.md`. +They are listed in `MAINTAINERS.md` and the CNCF `project-maintainers.csv` +record for Harbor. New Harbor Maintainers must still be nominated and elected +through the existing Harbor maintainer process. + +## Subprojects + +A Harbor subproject is a long-lived area of responsibility under the Harbor +community. It may own a repository, multiple repositories, or a clear area +inside a repository. + +Active subprojects may maintain their own `MAINTAINERS.md`. That file is the +source of truth for the subproject's scoped maintainers and reviewers, and the +Harbor community `MAINTAINERS.md` should mirror it. + +Each subproject entry in `MAINTAINERS.md` should include: + +* Name and scope. +* Owned repositories or paths. +* Subproject maintainers. +* Subproject reviewers, if any. +* Status: `active`, `maintenance`, or `archived`. + +Subproject maintainers and reviewers should be listed alphabetically by name. + +Workgroups remain useful for temporary or cross-cutting initiatives. A +workgroup does not automatically own code, releases, or maintainer permissions. + +## Role Changes + +Reviewer: + +* May be nominated by any contributor, including self-nomination. +* Requires approval from at least one subproject maintainer. +* If the subproject has no maintainer, approval comes from a Harbor Maintainer. + +Subproject maintainer: + +* May be nominated by a subproject maintainer or Harbor Maintainer. +* If the subproject has no active maintainer, a Harbor Maintainer may nominate. +* Active subprojects choose their own maintainers within their documented + subproject process. +* The nominee must confirm willingness to take the role. +* Approval requires consensus from active subproject maintainers, or Harbor + Maintainer approval when bootstrapping or resolving a deadlock. + +Harbor Maintainer: + +* Uses the existing process in `GOVERNANCE.md`: nomination by an existing Harbor + Maintainer and supermajority election by existing Harbor Maintainers. + +## Inactivity + +Anyone may step down from a reviewer, subproject maintainer, or Harbor +Maintainer role. + +Inactive reviewers and subproject maintainers may be moved to emeritus status +by PR after reasonable contact attempts. The purpose is to keep ownership +accurate and make room for active contributors. + +Harbor Maintainer removal remains governed by `GOVERNANCE.md`. + +## Records + +`MAINTAINERS.md` is Harbor's source of truth for Harbor Maintainers, +subproject maintainers, reviewers, and emeritus roles. + +The CNCF `project-maintainers.csv` record should include Harbor Maintainers and +recognized Harbor subproject maintainer groups, using names such as +`Harbor: `. + +Repository permissions, CODEOWNERS, and release access should match the roles +documented in `MAINTAINERS.md`. + +## References + +This model takes inspiration from: + +* Kubernetes governance: https://github.com/kubernetes/community/blob/main/governance.md +* Kubernetes community membership: https://github.com/kubernetes/community/blob/main/community-membership.md +* CNCF subproject governance template: https://github.com/cncf/project-template/blob/main/GOVERNANCE-subprojects.md +* OpenTelemetry membership roles: https://github.com/open-telemetry/community/blob/main/guides/contributor/membership.md +* Prometheus governance: https://prometheus.io/governance/ From e8592f792b24e755ceec5389c7b2600810559cff Mon Sep 17 00:00:00 2001 From: Prasanth Baskar Date: Tue, 7 Jul 2026 06:35:01 +0000 Subject: [PATCH 2/6] Format subproject maintainers as list Signed-off-by: Prasanth Baskar --- MAINTAINERS.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index dcad3f6e..a785560f 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -41,16 +41,27 @@ release, and contributor growth responsibilities for the listed subproject, but do not automatically become Harbor Maintainers. When a subproject has its own `MAINTAINERS.md`, that file is the source of truth -for the scoped subproject roles and this table mirrors it. +for the scoped subproject roles and this section mirrors it. Subproject maintainers and reviewers should be listed alphabetically by name. Recognized Harbor subproject maintainer groups should be mirrored in the CNCF `project-maintainers.csv` record using names such as `Harbor: `. -| Subproject | Scope | Status | Maintainers | Reviewers | -| ---------- | ----- | ------ | ----------- | --------- | -| Harbor CLI | Official Harbor CLI: [goharbor/harbor-cli](https://github.com/goharbor/harbor-cli) | active | Lakshit Singh ([NucleoFusion](https://github.com/NucleoFusion)), Patrick Eschenbach ([qcserestipy](https://github.com/qcserestipy)), Prasanth Baskar ([bupd](https://github.com/bupd)), Vadim Bauer ([Vad1mo](https://github.com/Vad1mo)) | - | +### Harbor CLI + +Scope: Official Harbor CLI, [goharbor/harbor-cli](https://github.com/goharbor/harbor-cli) + +Status: active + +Maintainers: + +* Lakshit Singh ([NucleoFusion](https://github.com/NucleoFusion)) +* Patrick Eschenbach ([qcserestipy](https://github.com/qcserestipy)) +* Prasanth Baskar ([bupd](https://github.com/bupd)) +* Vadim Bauer ([Vad1mo](https://github.com/Vad1mo)) + +Reviewers: - ## Harbor Core Contributors & Stakeholders From 4138f483bef0e6e3035ed5dce093f7cc246ea94d Mon Sep 17 00:00:00 2001 From: Prasanth Baskar Date: Tue, 7 Jul 2026 06:37:42 +0000 Subject: [PATCH 3/6] Align subproject maintainer table Signed-off-by: Prasanth Baskar --- MAINTAINERS.md | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index a785560f..d309b416 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -48,20 +48,13 @@ Subproject maintainers and reviewers should be listed alphabetically by name. Recognized Harbor subproject maintainer groups should be mirrored in the CNCF `project-maintainers.csv` record using names such as `Harbor: `. -### Harbor CLI - -Scope: Official Harbor CLI, [goharbor/harbor-cli](https://github.com/goharbor/harbor-cli) - -Status: active - -Maintainers: - -* Lakshit Singh ([NucleoFusion](https://github.com/NucleoFusion)) -* Patrick Eschenbach ([qcserestipy](https://github.com/qcserestipy)) -* Prasanth Baskar ([bupd](https://github.com/bupd)) -* Vadim Bauer ([Vad1mo](https://github.com/Vad1mo)) - -Reviewers: - +| Subproject | Scope | Status | Maintainers | Reviewers | +| ---------- | ----- | ------ | ----------- | --------- | +| Harbor CLI | Official Harbor CLI: [goharbor/harbor-cli](https://github.com/goharbor/harbor-cli) | active | - | - | +| | | | Lakshit Singh ([NucleoFusion](https://github.com/NucleoFusion)) | | +| | | | Patrick Eschenbach ([qcserestipy](https://github.com/qcserestipy)) | | +| | | | Prasanth Baskar ([bupd](https://github.com/bupd)) | | +| | | | Vadim Bauer ([Vad1mo](https://github.com/Vad1mo)) | | ## Harbor Core Contributors & Stakeholders From 62b82924ab05519728eef7e492bdd2ab111f95ff Mon Sep 17 00:00:00 2001 From: Prasanth Baskar Date: Tue, 7 Jul 2026 06:42:03 +0000 Subject: [PATCH 4/6] Fix subproject maintainer table row Signed-off-by: Prasanth Baskar --- MAINTAINERS.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index d309b416..cfa44d29 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -50,8 +50,7 @@ Recognized Harbor subproject maintainer groups should be mirrored in the CNCF | Subproject | Scope | Status | Maintainers | Reviewers | | ---------- | ----- | ------ | ----------- | --------- | -| Harbor CLI | Official Harbor CLI: [goharbor/harbor-cli](https://github.com/goharbor/harbor-cli) | active | - | - | -| | | | Lakshit Singh ([NucleoFusion](https://github.com/NucleoFusion)) | | +| Harbor CLI | Official Harbor CLI: [goharbor/harbor-cli](https://github.com/goharbor/harbor-cli) | active | Lakshit Singh ([NucleoFusion](https://github.com/NucleoFusion)) | - | | | | | Patrick Eschenbach ([qcserestipy](https://github.com/qcserestipy)) | | | | | | Prasanth Baskar ([bupd](https://github.com/bupd)) | | | | | | Vadim Bauer ([Vad1mo](https://github.com/Vad1mo)) | | From 7022829f4d5cd5cd2ed737d935774fff5b491866 Mon Sep 17 00:00:00 2001 From: Prasanth Baskar Date: Tue, 7 Jul 2026 06:51:28 +0000 Subject: [PATCH 5/6] Refine subproject governance Signed-off-by: Prasanth Baskar --- SUBPROJECT_GOVERNANCE.md | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/SUBPROJECT_GOVERNANCE.md b/SUBPROJECT_GOVERNANCE.md index 20b1828f..eece014b 100644 --- a/SUBPROJECT_GOVERNANCE.md +++ b/SUBPROJECT_GOVERNANCE.md @@ -1,7 +1,7 @@ # Harbor Subproject Governance -This document defines lightweight governance for Harbor subprojects, reviewers, -and subproject maintainers. Harbor keeps this model intentionally small. +This document defines governance for Harbor subprojects, reviewers, +and subproject maintainers. ## Roles @@ -32,13 +32,6 @@ Responsibilities: Subproject maintainership is scoped. It does not automatically grant Harbor Maintainer status or project-wide decision authority. -### Harbor Maintainer - -Harbor Maintainers are the project-wide maintainers defined in `GOVERNANCE.md`. -They are listed in `MAINTAINERS.md` and the CNCF `project-maintainers.csv` -record for Harbor. New Harbor Maintainers must still be nominated and elected -through the existing Harbor maintainer process. - ## Subprojects A Harbor subproject is a long-lived area of responsibility under the Harbor @@ -59,9 +52,6 @@ Each subproject entry in `MAINTAINERS.md` should include: Subproject maintainers and reviewers should be listed alphabetically by name. -Workgroups remain useful for temporary or cross-cutting initiatives. A -workgroup does not automatically own code, releases, or maintainer permissions. - ## Role Changes Reviewer: @@ -80,22 +70,14 @@ Subproject maintainer: * Approval requires consensus from active subproject maintainers, or Harbor Maintainer approval when bootstrapping or resolving a deadlock. -Harbor Maintainer: - -* Uses the existing process in `GOVERNANCE.md`: nomination by an existing Harbor - Maintainer and supermajority election by existing Harbor Maintainers. - ## Inactivity -Anyone may step down from a reviewer, subproject maintainer, or Harbor -Maintainer role. +Anyone may step down from a reviewer or subproject maintainer role. Inactive reviewers and subproject maintainers may be moved to emeritus status by PR after reasonable contact attempts. The purpose is to keep ownership accurate and make room for active contributors. -Harbor Maintainer removal remains governed by `GOVERNANCE.md`. - ## Records `MAINTAINERS.md` is Harbor's source of truth for Harbor Maintainers, From 7952a0a59867c6ae9069cb77d0a26c643cf70020 Mon Sep 17 00:00:00 2001 From: Prasanth Baskar Date: Fri, 10 Jul 2026 07:55:07 +0530 Subject: [PATCH 6/6] Add Terraform/Opentofu provider subproject Co-authored-by: Florian Blampey <11298399+flbla@users.noreply.github.com> Signed-off-by: Prasanth Baskar --- MAINTAINERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index cfa44d29..89cd3081 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -54,6 +54,7 @@ Recognized Harbor subproject maintainer groups should be mirrored in the CNCF | | | | Patrick Eschenbach ([qcserestipy](https://github.com/qcserestipy)) | | | | | | Prasanth Baskar ([bupd](https://github.com/bupd)) | | | | | | Vadim Bauer ([Vad1mo](https://github.com/Vad1mo)) | | +| Terraform/Opentofu Provider | Official Terraform/Opentofu provider : [goharbor/terraform-provider-harbor](https://github.com/goharbor/terraform-provider-harbor) | active | Florian Blampey ([flbla](https://github.com/flbla)) | - | ## Harbor Core Contributors & Stakeholders