Skip to content

Commit 79715d6

Browse files
authored
Merge pull request #3505 from embik/governance-improvements
Add list of maintainers and add new roles to governance document
2 parents 4a33497 + e53ef8a commit 79715d6

File tree

7 files changed

+130
-32
lines changed

7 files changed

+130
-32
lines changed

GOVERNANCE.md

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ is the governing body for the project.
7070
a Maintainer or Owner, then this section should instead be a reference to that
7171
documentation -->
7272

73-
To become a Maintainer you need to demonstrate the following:
73+
To become a [Maintainer](./MAINTAINERS.md) you need to demonstrate the following:
7474

7575
* commitment to the project:
7676
* participate in discussions, contributions, code and documentation reviews
@@ -119,10 +119,8 @@ and can be rapidly returned to Maintainer status if their availability changes.
119119

120120
Time zones permitting, Maintainers are expected to participate in the public
121121
community call meeting. Maintainers will also have closed meetings in order to
122-
discuss security reports or Code of Conduct violations. Such meetings should be
123-
scheduled by any Maintainer on receipt of a security issue or CoC report.
124-
All current Maintainers must be invited to such closed meetings, except for any
125-
Maintainer who is accused of a CoC violation.
122+
discuss security reports. Such meetings should be scheduled by any Maintainer on
123+
receipt of a security issue. All current Maintainers must be invited to such closed meetings.
126124

127125
## Code of Conduct
128126

@@ -146,19 +144,52 @@ at least once a year.
146144
The Security Response Team is responsible for handling all reports of security
147145
holes and breaches according to the [security policy](./SECURITY.md).
148146

147+
The members of the Security Response Team are documented in [MAINTAINERS.md](./MAINTAINERS.md).
148+
149149
## Voting
150150

151151
While most business in kcp is conducted by "lazy consensus", periodically
152152
the Maintainers may need to vote on specific actions or changes.
153153
A vote can be taken on [the developer mailing list](https://groups.google.com/g/kcp-dev) or
154154
[the private Maintainer mailing list](https://groups.google.com/g/kcp-dev-private)
155-
for security or conduct matters. Votes may also be taken at the community call
155+
for security issues. Votes may also be taken at the community call
156156
meeting. Any Maintainer may demand a vote be taken.
157157

158158
Most votes require a simple majority of all Maintainers to succeed. Maintainers
159159
can be removed by a 2/3 majority vote of all Maintainers, and changes to this
160160
Governance require a 2/3 vote of all Maintainers.
161161

162+
Pull requests that make changes requiring Maintainer consensus may also be
163+
understood as a vote. They require the stated majority to be granted via
164+
LGTMs on the pull request. Such a pull request shall be announced to the developer
165+
mailing list and put on hold until the necessary majority has been reached.
166+
167+
## Subprojects
168+
169+
Any Maintainer may submit a [vote](#voting) to create a new subproject under the
170+
kcp-dev GitHub organization. Subprojects are governed by all Maintainers, but may
171+
take on additional Subproject Maintainers that are only responsible for the
172+
specific subproject.
173+
174+
It is the combined responsibility of Maintainers and Subproject Maintainers
175+
to review contributions to subprojects and make project goal decisions.
176+
Subproject Maintainers are not part of the private Maintainer mailing list and
177+
are involved in security responses on a need-to-know basis if the reported security
178+
issue concerns their respective subproject.
179+
180+
Subproject Maintainers are elected by the Maintainers. Subproject Maintainers are
181+
allowed to participate in votes concerning their respective subprojects.
182+
183+
## Approvers
184+
185+
The Maintainers and Subproject Maintainers may elect trusted contributors to
186+
assist them in the review process for specific parts of the code. Those Approvers
187+
are allowed to approve and merge code contributions for certain subsets of the code
188+
(not a whole project), e.g. areas of the code that they have proven themselves
189+
to be very familiar with.
190+
191+
Approvers do not have voting rights.
192+
162193
## Modifying this Charter
163194

164195
Changes to this Governance and its supporting documents may be approved by a

MAINTAINERS.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Maintainers
2+
3+
The table below lists all current maintainers for the kcp project as defined by our [project governance](./GOVERNANCE.md).
4+
5+
| Name | GitHub Handle | Domains of reponsibility | Affiliation |
6+
| --------------------- | ------------------------------------------------ | -------------------------------------------------------------- | --------------------------- |
7+
| Andy Anderson | [@clubanderson](https://github.com/clubanderson) | Governance | IBM |
8+
| Sebastian Scheele | [@scheeles](https://github.com/scheeles) | Governance | Kubermatic |
9+
| Dr. Stefan Schimanski | [@sttts](https://github.com/sttts) | Governance, kcp core | NVIDIA |
10+
| Christoph Mewes | [@xrstf](https://github.com/xrstf) | kcp core, API Syncagent kcp-operator, infrastructure | Kubermatic |
11+
| Mangirdas Judeikis | [@mjudeikis](https://github.com/mjudeikis) | kcp core | Upbound |
12+
| Marvin Beckers | [@embik](https://github.com/embik) | kcp core, kcp-operator, multicluster-provider, infrastructure | Kubermatic |
13+
14+
## Emeritus Maintainers
15+
16+
No emeritus maintainers currently exist. We would like to highlight that this project does have prior maintainers and core contributors
17+
that, if they so wished, could (and should) be granted the status of emeritus maintainers.
18+
19+
## Security Response Team
20+
21+
The following maintainers are members of the security response team and enact the [security process](./SECURITY.md):
22+
23+
- Dr. Stefan Schimanski
24+
- Mangirdas Judeikis
25+
- Marvin Beckers

SECURITY.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,22 @@ The kcp maintainers take security for kcp very seriously, especially given kcp's
44

55
## Reporting a Vulnerability
66

7-
kcp uses GitHub to allow submission of private security reports. Please report any security finding via [this link](https://github.com/kcp-dev/kcp/security/advisories/new) or send a direct email to [[email protected]](mailto:[email protected]). Maintainers will triage your report as soon as possible and get in touch with you via your report or via email in case they have more questions.
7+
kcp uses GitHub to allow submission of private security reports. Please report any security finding via
8+
[this link](https://github.com/kcp-dev/kcp/security/advisories/new) or send a direct email to [[email protected]](mailto:[email protected]).
9+
Maintainers will triage your report as soon as possible and get in touch with you via your report or via email in case they have more questions.
810

9-
As a security researcher, please report vulnerabilities to kcp in a [coordinated vulnerability disclosure](https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html) fashion. In return, maintainers pledge to engage in good faith and collaborate with security researchers to address and publish vulnerabilities found in kcp as soon as possible.
11+
As a security researcher, please report vulnerabilities to kcp in a [coordinated vulnerability disclosure](https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html)
12+
fashion. In return, maintainers pledge to engage in good faith and collaborate with security researchers to address and publish vulnerabilities found in kcp as soon as possible.
1013

1114
Please understand that the maintainers also do not accept results of dependency scanners without proof that the detected CVE / vulnerability can be used against kcp.
1215

1316
## Security Advisories
1417

15-
Advisories are managed through GitHub. Public disclosure of vulnerabilities happens through GitHub and the kcp-users mailing list. Please visit [Security Advisories](https://github.com/kcp-dev/kcp/security/advisories) to review security bulletins published by the maintainers.
18+
Advisories are managed through GitHub. Public disclosure of vulnerabilities happens through GitHub and the kcp-users mailing list.
19+
Please visit [Security Advisories](https://github.com/kcp-dev/kcp/security/advisories) to review security bulletins published by the maintainers.
20+
21+
## Security Response Committee
22+
23+
kcp maintainers have formed a security response committee to ensure that security reports get addressed in a timely manner.
24+
You can find the list of members in [MAINTAINERS.md](./MAINTAINERS.md). Please do not contact them directly but follow the
25+
vulnerability reporting process as described abvove.

docs/content/contributing/.pages

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
nav:
2+
- index.md
3+
- getting-started.md
4+
- coding.md
5+
- continuous-integration
6+
- guides

docs/content/contributing/getting-started.md

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,16 @@
22

33
## Prerequisites
44

5-
1. Clone this repository.
5+
1. Clone the [kcp-dev/kcp](https://github.com/kcp-dev/kcp) repository.
66
2. [Install Go](https://golang.org/doc/install) (currently 1.23.10).
77
3. Install [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl).
88

9-
Please note that the go language version numbers in these files must exactly agree: go/go.mod file, kcp/Dockerfile, and in all the kcp/.github/workflows yaml files that specify go-version. In kcp/Dockerfile it is indicated by the "golang" attribute. In go.mod it is indicated by the "go" directive." In the .github/workflows yaml files it is indicated by "go-version"
9+
Please note that the go language version numbers in these files must exactly agree: go/go.mod file, kcp/Dockerfile, and in all the kcp/.github/workflows yaml files that specify go-version. In kcp/Dockerfile it is indicated by the "golang" attribute. In go.mod it is indicated by the "go" directive." In the .github/workflows yaml files it is indicated by "go-version".
1010

11-
## Build & Verify
12-
13-
1. In one terminal, build and start `kcp`:
14-
```
15-
go run ./cmd/kcp start
16-
```
17-
18-
2. In another terminal, tell `kubectl` where to find the kubeconfig:
19-
20-
```
21-
export KUBECONFIG=.kcp/admin.kubeconfig
22-
```
11+
If you wish to use a newer Go version (with the risk that your changes might not successfully pass CI when submitted as pull request), you can set an environment variable to ignore the Go version requirement.
2312

24-
3. Confirm you can connect to `kcp`:
25-
26-
```
27-
kubectl api-resources
13+
```sh
14+
export IGNORE_GO_VERSION=1
2815
```
2916

3017
## Developer Certificate of Origin (DCO)
@@ -45,6 +32,28 @@ Signed-off-by: Your Name <[email protected]>
4532

4633
Please be aware that we cannot accept pull requests in which commits are missing the sign-off.
4734

35+
36+
## Build & Verify
37+
38+
1. In one terminal, build and start `kcp`:
39+
40+
```sh
41+
go run ./cmd/kcp start
42+
```
43+
44+
2. In another terminal, tell `kubectl` where to find the kubeconfig:
45+
46+
```sh
47+
export KUBECONFIG=.kcp/admin.kubeconfig
48+
```
49+
50+
3. Confirm you can connect to `kcp`:
51+
52+
```sh
53+
kubectl api-resources
54+
```
55+
56+
4857
## Finding Areas to Contribute
4958

5059
Starting to participate in a new project can sometimes be overwhelming, and you may not know where to begin. Fortunately, we are here to help! We track all of our tasks here in GitHub, and we label our issues to categorize them. Here are a couple of handy links to check out:

docs/content/contributing/index.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,58 @@ Origin (DCO). This document was created by the Linux Kernel community and is a
1818
simple statement that you, as a contributor, have the legal right to make the
1919
contribution. See the [DCO](https://github.com/kcp-dev/kcp/tree/main/DCO) file for details.
2020

21+
For how to correctly set this on your commits, check out the [Getting Started](./getting-started.md#developer-certificate-of-origin-dco) guide.
22+
2123
## Community Roles
2224

2325
### Maintainers
2426

2527
The project maintainers are the central [gonvernance entity](https://github.com/kcp-dev/kcp/blob/main/GOVERNANCE.md) of
2628
kcp. They review and approve PRs into all projects in the kcp-dev GitHub organization and decide on project direction
27-
and other decisions.
29+
and other governance matters.
30+
31+
### Subproject Maintainers
32+
33+
The kcp-dev GitHub organization hosts several subprojects that utilize or extend kcp in some form. These subprojects
34+
might take on additional subproject maintainers that participate in code review and project goal decisions to steer
35+
their respective subprojects.
36+
37+
### Approvers
38+
39+
Consistent contributors with a specific area of expertise in the code base might be chosen to be approvers by the
40+
(subproject) maintainers. Approvers are allowed to approve (and subsequently, merge) code for parts of a specific project.
41+
Approvers are generally not allowed to have full approval rights for a (sub)project but only specific folders within it.
2842

2943
### Contributors
3044

3145
People that are consistently contributing to the project (through code, documentation or other means) are considered
3246
project contributors. They are invited by maintainers to join the kcp-dev GitHub organization, which allows them
3347
to submit PRs that do not need approval to run CI jobs in Prow.
3448

49+
Contributors are able to LGTM pull requests in the kcp-dev GitHub organization, but they cannot merge them.
50+
3551
## Project Management
3652

3753
### Priorities & Milestones
3854

3955
We prioritize issues and features both synchronously (during community meetings) and asynchronously (Slack/GitHub conversations).
4056

41-
We group issues together into milestones. Each milestone represents a set of new features and bug fixes that we want users to try out. We aim for each milestone to take about a month from start to finish.
57+
We group issues together into milestones. Each milestone represents a planned kcp release and subsequently can be open for a period of 3-5 months.
4258

4359
You can see the [current list of milestones](https://github.com/kcp-dev/kcp/milestones?direction=asc&sort=due_date&state=open) in GitHub.
4460

4561
For a given issue or pull request, its milestone may be:
4662

4763
- **unset/unassigned**: we haven't looked at this yet, or if we have, we aren't sure if we want to do it and it needs more community discussion
48-
- **assigned to a named milestone**
64+
- **assigned to a version milestone**
4965
- **assigned to `TBD`** - we have looked at this, decided that it is important and we eventually would like to do it, but we aren't sure exactly when
5066

5167
If you are confident about the target milestone for your issue or PR, please set it. If you don’t have permissions, please ask & we’ll set it for you.
5268

5369
### Epics
5470

55-
We use the [epic label](https://github.com/kcp-dev/kcp/issues?q=is%3Aopen+is%3Aissue+label%3Aepic+) to track large features that typically involve multiple stories. When creating a new epic, please use the [epic issue template](https://github.com/kcp-dev/kcp/issues/new?assignees=&labels=epic&template=epic.md&title=).
71+
We sometimes use the [epic label](https://github.com/kcp-dev/kcp/issues?q=is%3Aopen+is%3Aissue+label%3Aepic+) to track large features that typically involve multiple stories.
72+
When creating a new epic, please use the [epic issue template](https://github.com/kcp-dev/kcp/issues/new?assignees=&labels=epic&template=epic.md&title=).
5673

5774
Please make sure that you fill in all the sections of the template (it's ok if some of this is done later, after creating the issue). If you need help with anything, please let us know.
5875

docs/content/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fkcp-dev%2Fkcp.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fkcp-dev%2Fkcp?ref=badge_shield)
88

99
!!! tip ""
10-
Looking for other project documentation? Check out: [api-syncagent](https://docs.kcp.io/api-syncagent) | [kcp-operator](https://docs.kcp.io/kcp-operator)
10+
Looking for subproject documentation? Check out: [api-syncagent](https://docs.kcp.io/api-syncagent) | [kcp-operator](https://docs.kcp.io/kcp-operator)
1111

1212
## Overview
1313

0 commit comments

Comments
 (0)