Skip to content

Commit ec900f8

Browse files
📖 Document the triage process (kubernetes-sigs#10367)
* Document the triage process * Address comments * Align the process to k/k + bots configuration * Address feedback * More feedback
1 parent 09649d6 commit ec900f8

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

CONTRIBUTING.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
- [Documentation changes](#documentation-changes)
1717
- [Releases](#releases)
1818
- [Proposal process (CAEP)](#proposal-process-caep)
19+
- [Triaging issues](#triaging-issues)
1920
- [Triaging E2E test failures](#triaging-e2e-test-failures)
2021
- [Reviewing a Patch](#reviewing-a-patch)
2122
- [Reviews](#reviews)
@@ -260,6 +261,62 @@ The [template](https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/pro
260261
- A proposal in a Google Doc MUST turn into a [Pull Request](https://github.com/kubernetes-sigs/cluster-api/pulls).
261262
- Proposals MUST be merged and in `implementable` state to be considered part of a major or minor release.
262263

264+
## Triaging issues
265+
266+
Issue triage in Cluster API follows the best practices of the Kubernetes project while seeking balance with
267+
the different size of this project.
268+
269+
While the maintainers play an important role in the triage process described below, the help of the community is crucial
270+
to ensure that this task is performed timely and be sustainable long term.
271+
272+
| Phase | Responsible | What is required to move forward |
273+
|---------------------|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
274+
| Initial triage | Maintainers | The issue MUST have: <br/> - [priority/*](https://github.com/kubernetes-sigs/cluster-api/labels?q=priority) label<br/>- [kind/*](https://github.com/kubernetes-sigs/cluster-api/labels?q=kind) label<br/> |
275+
| Triage finalization | Everyone | There should be consensus on the way forward and enough details for the issue being actionable |
276+
| Triage finalization | Maintainers | The issue MUST have: <br/> - `triage/accepted` label<br/> label, plus eventually `help` or `good-first-issue` label |
277+
| Actionable | Everyone | Contributors volunteering time to do the work and reviewers/approvers bandwidth<br/>The issue being fixed |
278+
279+
Please note that:
280+
281+
- Priority provides an indication to everyone looking at issues.
282+
- When assigning priority several factors are taken into consideration, including impact on users, relevance
283+
for the upcoming releases, maturity of the issue (consensus + completeness).
284+
- `priority/awaiting-more-evidence` is used to mark issue where there is not enough info to take a decision for
285+
one of the other [priorities values](https://github.com/kubernetes-sigs/cluster-api/labels?q=priority).
286+
- Priority can change over time, and everyone is welcome to provide constructive feedback about updating an issue's priority.
287+
- Applying a priority label is not a commitment to execute within a certain time frame, because implementation
288+
depends on contributors volunteering time to do the work and on reviewers/approvers bandwidth.
289+
290+
- Closing inactive issues which are stuck in the "triage" phases is a crucial task for maintaining an
291+
actionable backlog. Accordingly, the following automation applies to issues in the "triage" or the "refinement" phase:
292+
- After 90 days of inactivity, issues will be marked with the `lifecycle/stale` label
293+
- After 30 days of inactivity from when `lifecycle/stale` was applied, issues will be marked with the `lifecycle/rotten` label
294+
- After 30 days of inactivity from when `lifecycle/rotten` was applied, issues will be closed.
295+
With this regard, it is important to notice that closed issues are and will always be a highly valuable part of the
296+
knowledge base about the Cluster API project, and they will never go away.
297+
- Note:
298+
- The automation above does not apply to issues triaged as `priority/critical-urgent`, `priority/important-soon` or `priority/important-longterm`
299+
- Maintainers could apply the `lifecycle/frozen` label if they want to exclude an issue from the automation above
300+
- Issues excluded from the automation above will be re-triaged periodically
301+
302+
- If you really care about an issue stuck in the "triage" phases, you can engage with the community or
303+
try to figure out what is holding back the issue by yourself, e.g.:
304+
- Issue too generic or not yet actionable
305+
- Lack of consensus or the issue is not relevant for other contributors
306+
- Lack of contributors; in this case, finding ways to help and free up maintainers/other contributors time from other tasks
307+
can really help to unblock your issues.
308+
309+
- Issues in the "actionable" state are not subject to the stale/rotten/closed process; however, it is required to re-assess
310+
them periodically given that the project change quickly. Accordingly, the following automation applies to issues
311+
in the "actionable" phase:
312+
- After 30 days of inactivity, the `triage/accepted` label will be removed from issues with `priority/critical-urgent`
313+
- After 90 days of inactivity the `triage/accepted` label will be removed from issues with `priority/important-soon`
314+
- After 1 year of inactivity the `triage/accepted` label will be removed from issues without `priority/critical-urgent` or `priority/important-soon`
315+
316+
- If you really care about an issue stuck in the "actionable" phase, you can try to figure out what is holding back
317+
the issue implementation (usually lack of contributors), engage with the community, find ways to help and free up
318+
maintainers/other contributors time from other tasks, or `/assign` the issue and send a PR.
319+
263320
## Triaging E2E test failures
264321

265322
When you submit a change to the Cluster API repository as set of validation jobs is automatically executed by

0 commit comments

Comments
 (0)