Skip to content

Commit 679f411

Browse files
committed
Add definition of core and non-core subprojects
Signed-off-by: Phil Estes <[email protected]>
1 parent 1760698 commit 679f411

File tree

2 files changed

+71
-9
lines changed

2 files changed

+71
-9
lines changed

GOVERNANCE.md

Lines changed: 61 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,71 @@ maintainer has already discussed the candidacy with the candidate and a
6161
maintainer is willing to be a sponsor by opening the pull request. The candidate
6262
becomes a maintainer once the pull request is merged.
6363

64-
## Adding sub-projects
65-
66-
Similar to adding maintainers, new sub projects can be added to containerd
67-
GitHub organization as long as they adhere to the CNCF
68-
[charter](https://www.cncf.io/about/charter/) and mission. After a project
69-
proposal has been announced on a public forum (GitHub issue or mailing list),
70-
the existing maintainers are given five business days to discuss the new
64+
## Subprojects
65+
66+
containerd subprojects are divided into two flavors currently: **core** and
67+
**non-core**. Most of the repositories within the containerd GitHub organization are
68+
"core" to the delivery of the containerd runtime project's releases. For example,
69+
the Golang implementations of the cgroups, runc, and console APIs, the ttrpc
70+
implementation, and various built-in plugins like the CRI implementation. These, among a
71+
handful of other repositories, are all **core** and required pieces which culminate
72+
in officially supported and maintained releases of containerd.
73+
74+
Non-core projects have a strong affiliation with the containerd runtime, but
75+
operate similarly to the traditional `contrib/` directory in many open source
76+
projects. In most cases the maintainer list will be unique and the project can
77+
have unique release, support, and maintainer processes. Non-core projects may be
78+
written in other languages and therefore require different skills, developer
79+
tools, and CI systems than the core projects. For these reasons, non-core
80+
subprojects have a few unique properties that are described in the section
81+
"_Adding non-core subprojects_" below.
82+
83+
Both core and non-core subprojects must adhere to the CNCF
84+
[charter](https://www.cncf.io/about/charter/) and mission.
85+
86+
### Adding core subprojects
87+
88+
New core subprojects can request to be added to the containerd GitHub
89+
organization by submitting a project proposal via public forum (a
90+
`containerd/project` GitHub issue is the easiest way to provide this proposal).
91+
The existing maintainers are given five business days to discuss the new
7192
project, raise objections and cast their vote. Projects must be approved by at
72-
least 66% of the current maintainers by adding their vote.
93+
least 66% of the current maintainers.
7394

7495
If a project is approved, a maintainer will add the project to the containerd
7596
GitHub organization, and make an announcement on a public forum.
7697

98+
Please add the suggested text from our [Project core documents](./README.md#project-core-documents) section
99+
to your `README.md`.
100+
101+
### Adding non-core subprojects
102+
103+
Non-core subprojects will also submit a project proposal via public forum, and
104+
should state that the project is expected to be **non-core**.
105+
106+
The proposal should include a proposed list of maintainers who will manage
107+
the non-core project and provide general information on support, releases,
108+
stability, and any additional detail useful for the containerd maintainers to
109+
understand the scope and nature of the project.
110+
111+
The existing maintainers are given five business days to discuss the new
112+
project, raise objections and cast their vote. Projects must be approved by at
113+
least 66% of the current maintainers.
114+
115+
If a project is approved, a core maintainer will add the project to the containerd
116+
GitHub organization and provide write access for that repository to the proposed
117+
maintainer list, as well as make an announcement on a public forum.
118+
119+
Unlike core maintainers, non-core project maintainers are responsible for maintenance
120+
tasks in their subproject only. Core maintainers have maintainer privileges across
121+
all core and non-core projects to help contribute to project health, maintenance,
122+
and release processes within the GitHub organization. For ease of list management,
123+
the `MAINTAINERS` file of a non-core project will only list the non-core project
124+
maintainers—the core maintainers of containerd will not be appended to each subproject.
125+
126+
Please add the suggested text from our [Non-core project documents](./README.md#non-core-project-documents)
127+
section to your `README.md`.
128+
77129
## Stepping down policy
78130

79131
Life priorities, interests, and passions can change. If you're a maintainer but
@@ -151,6 +203,6 @@ made through a pull request.
151203

152204
If you have a technical dispute that you feel has reached an impasse with a
153205
subset of the community, any contributor may open an issue, specifically
154-
calling for a resolution vote of the current maintainers to resolve the dispute.
206+
calling for a resolution vote of the current core maintainers to resolve the dispute.
155207
The same voting quorums required (2/3) for adding and removing maintainers
156208
will apply to conflict resolution.

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,13 @@ As a containerd sub-project, you will find the:
5252
information in our [`containerd/project`](https://github.com/containerd/project) repository.
5353
```
5454

55+
### Non-core project documents
56+
57+
If your project is a non-core addition to the containerd GitHub organization, please
58+
make the following changes to your project once approved and added:
59+
60+
* Clearly state in an opening sentence within your project `README.md` that "_Project X is
61+
a **non-core** subproject of containerd_"
62+
* Add the project details boilerplate provided above with the following two changes:
63+
1. The first line should be modified to state: _{Some-project} is a **non-core** containerd subproject_
64+
2. Do not link to the core `MAINTAINERS` file in `containerd/project`. That link should be modified to point to your existing non-core project `MAINTAINERS` file.

0 commit comments

Comments
 (0)