Skip to content

Commit acd6dc5

Browse files
KEP-1553: Update issue triage KEP to implementable (kubernetes#1930)
* KEP-1553: Update issue triage KEP to implementable - Marks KEP as implementable - Adds goals, proposal, risk/mitigations, and any other previously <<[UNRESOLVED]>> portions. * Update issue triage KEP to addtionally target PRs
1 parent af14651 commit acd6dc5

File tree

2 files changed

+96
-112
lines changed

2 files changed

+96
-112
lines changed

keps/sig-contributor-experience/1553-issue-triage/README.md

Lines changed: 93 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,21 @@
33
<!-- toc -->
44
- [Release Signoff Checklist](#release-signoff-checklist)
55
- [Summary](#summary)
6-
- [Note to Reviewers](#note-to-reviewers)
76
- [Motivation](#motivation)
87
- [Goals](#goals)
98
- [Non-Goals](#non-goals)
109
- [Proposal](#proposal)
10+
- [New Workflow](#new-workflow)
11+
- [Re-categorize the triage/support label](#re-categorize-the-triagesupport-label)
1112
- [User Stories](#user-stories)
1213
- [Group Leads](#group-leads)
1314
- [Reviewers and Approvers](#reviewers-and-approvers)
1415
- [Contributors](#contributors)
15-
- [Notes/Constraints/Caveats (optional)](#notesconstraintscaveats-optional)
1616
- [Risks and Mitigations](#risks-and-mitigations)
1717
- [Design Details](#design-details)
18+
- [needs-triage and triage/accepted labels](#needs-triage-and-triageaccepted-labels)
19+
- [Rename the triage/support label](#rename-the-triagesupport-label)
1820
- [Graduation Criteria](#graduation-criteria)
19-
- [Phase 0](#phase-0)
20-
- [needs-triage and triage/accepted labels](#needs-triage-and-triageaccepted-labels)
21-
- [Remove or rename unused triage/** labels](#remove-or-rename-unused-triage-labels)
2221
- [Implementation History](#implementation-history)
2322
- [Drawbacks](#drawbacks)
2423
- [Alternatives](#alternatives)
@@ -30,11 +29,9 @@
3029
- [ ] Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
3130
- [ ] KEP approvers have approved the KEP status as `implementable`
3231
- [ ] Design details are appropriately documented
33-
- [ ] Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
3432
- [ ] Graduation criteria is in place
3533
- [ ] "Implementation History" section is up-to-date for milestone
36-
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
37-
- [ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
34+
- [ ] Contributor documentation has been created in [kubernetes/community]
3835

3936
[kubernetes.io]: https://kubernetes.io/
4037
[kubernetes/enhancements]: https://github.com/kubernetes/enhancements
@@ -46,43 +43,72 @@
4643
To ease the burden of SIG/area reviewers/approvers, we would like to prescribe
4744
a triage workflow and supporting automation.
4845

49-
### Note to Reviewers
50-
51-
For this `provisional` phase, the details of this KEP are left intentionally
52-
light. There was significant discussion across issues, mailing list threads,
53-
and PRs that didn't lead to forward progress because it seemed we were trying
54-
to solve everything at once.
55-
56-
Here we attempt to scope a single deliverable before moving on to discussing
57-
workflow, label states, and entry/exit criteria.
58-
5946
## Motivation
6047

61-
At present, there are [2,155 open issues and 902 pull requests](https://github.com/kubernetes/kubernetes/issues?utf8=%E2%9C%93&q=is%3Aopen) open in
48+
As of 09-08-2020, there are [3,004 open issues and 975 pull requests](https://github.com/kubernetes/kubernetes/issues?utf8=%E2%9C%93&q=is%3Aopen) open in
6249
`kubernetes/kubernetes`.
6350

64-
- [356 are categorized as `lifecycle/stale`](https://github.com/kubernetes/kubernetes/labels/lifecycle%2Fstale)
65-
- [246 are categorized as `lifecycle/rotten`](https://github.com/kubernetes/kubernetes/labels/lifecycle%2Frotten)
66-
- [690 are categorized as `lifecycle/frozen`](https://github.com/kubernetes/kubernetes/labels/lifecycle%2Ffrozen)
51+
- [197 are categorized as `lifecycle/stale`](https://github.com/kubernetes/kubernetes/labels/lifecycle%2Fstale)
52+
- [200 are categorized as `lifecycle/rotten`](https://github.com/kubernetes/kubernetes/labels/lifecycle%2Frotten)
53+
- [756 are categorized as `lifecycle/frozen`](https://github.com/kubernetes/kubernetes/labels/lifecycle%2Ffrozen)
6754

68-
This makes for about 20% of open issues/PRs that are in some state of staleness.
55+
This makes for about 13% of open issues/PRs that are in some state of staleness.
6956
If we consider items marked as `lifecycle/frozen`, then we're looking at around
70-
42% of issues/PRs that could potentially require attention.
57+
38% of issues/PRs that could potentially require attention.
7158

7259
### Goals
7360

74-
See [User Stories](#user-stories).
61+
Streamline the issue triage process used within the [kubernetes/kubernetes]
62+
repository.
7563

76-
<<[UNRESOLVED]>>
64+
- Create new workflow centered around `needs-triage` label auto-applied to new
65+
issues and Pull Requests (PRs).
7766

78-
### Non-Goals
67+
See [User Stories](#user-stories) for more information.
7968

80-
- Prescribing an issue triage workflow for all projects within Kubernetes orgs
8169

82-
<<[/UNRESOLVED]>>
70+
### Non-Goals
71+
72+
- Prescribing an issue triage workflow for all projects within Kubernetes orgs.
73+
- Requiring all community groups within Kubernetes to adhere to the issue triage
74+
workflow introduced in this KEP.
8375

8476
## Proposal
8577

78+
### New Workflow
79+
80+
An additional [required label] called `needs-triage` will be applied automatically
81+
to issues and PRs created within the [kubernetes/kubernetes] repository similar
82+
to the current `needs-sig` or `needs-kind` labels. This serves as a boolean signal
83+
to community group members that the issue has not yet been triaged.
84+
85+
After the issue or PR has been evaluated, an org member can apply one of the
86+
`triage` labels. If there is enough information or supporting evidence in the
87+
issue a member can signal that it is ready for work by using the `/triage accepted`
88+
bot command to apply the `triage/accepted` label. If the issue is a duplicate or
89+
lacks supporting evidence one of the other [triage labels] can be applied.
90+
91+
In either condition the `needs-triage` label will be removed.
92+
93+
**Note:** While any org member can apply the `triage/*` class of labels it
94+
should only be applied by those that are affiliated with the owning-sig. A
95+
mitigation strategy is outlined in the [Design details](#design-details) if
96+
this guideline is not being consistently followed.
97+
98+
99+
### Re-categorize the triage/support label
100+
101+
The label `triage/support` will become `kind/support`. `kind` better reflects
102+
the class or or type of issue.
103+
104+
**Note:** This is a revert of the previous decision to move the `support` label
105+
from `kind/*` to `triage/*` introduced in [kubernetes/test-infra#7598]. The
106+
goal at that time, was to use the label as a signal that the issue was something
107+
that should be closed. This is still true for [kubernetes/kubernetes], but the
108+
`triage/support` label's usage has grown outside of the [kubernetes/kubernetes]
109+
repo.
110+
111+
86112
### User Stories
87113

88114
#### Group Leads
@@ -104,57 +130,27 @@ As a contributor, I want to be able to submit issues or PRs and:
104130
- have some assurance that they will be routed to the correct group
105131
- have them addressed in a timely manner
106132

107-
<<[UNRESOLVED]>>
108-
109-
### Notes/Constraints/Caveats (optional)
110-
111-
<!--
112-
What are the caveats to the proposal?
113-
What are some important details that didn't come across above.
114-
Go in to as much detail as necessary here.
115-
This might be a good place to talk about core concepts and how they releate.
116-
-->
117-
118-
<<[/UNRESOLVED]>>
119-
120-
<<[UNRESOLVED]>>
121133

122134
### Risks and Mitigations
123135

124-
<!--
125-
What are the risks of this proposal and how do we mitigate. Think broadly.
126-
For example, consider both security and how this will impact the larger
127-
kubernetes ecosystem.
128136

129-
How will security be reviewed and by whom?
137+
**The new labels and process are either ignored or fall into dis-use.**
130138

131-
How will UX be reviewed and by whom?
139+
There are close to 200 labels associated with the [kubernetes/kubernetes]
140+
repository. This workflow introduces two additional labels, reclassifies one and
141+
adds an additional process. Both the labels and process could potentially go
142+
unused or ignored without effort made by the community groups to use them
143+
appropriately.
132144

133-
Consider including folks that also work outside the SIG or subproject.
134-
-->
145+
When the new process is ready to be put into place, the [upstream marketing team]
146+
will be engaged to ensure there is clear communication regarding the changes.
147+
Their message will be backed by updated documentation regarding the new
148+
[issue triage process].
135149

136-
<<[/UNRESOLVED]>>
137150

138151
## Design Details
139152

140-
<!--
141-
This section should contain enough information that the specifics of your
142-
change are understandable. This may include API specs (though not always
143-
required) or even code snippets. If there's any ambiguity about HOW your
144-
proposal will be implemented, this is the place to discuss them.
145-
-->
146-
147-
### Graduation Criteria
148-
149-
<!--
150-
**Note:** *Not required until targeted at a release.*
151-
-->
152-
153-
_Not required in `provisional` state._
154-
155-
### Phase 0
156-
157-
#### needs-triage and triage/accepted labels
153+
### needs-triage and triage/accepted labels
158154

159155
We currently have a Prow plugin called `require-matching-label`, which requires
160156
specific labels to be set on a issue or pull request.
@@ -179,59 +175,41 @@ Upon determining that an issue is ready to be actively worked on, an org member
179175
can apply the `triage/accepted` label using the following bot command:
180176

181177
```shell
182-
/triage accept
178+
/triage accepted
183179
```
184180

185181
(Alternatively, contributors with write access to `kubernetes/kubernetes` would be
186182
able to manually apply the `triage/accepted` label.)
187183

188184
**Considerations:**
189185

190-
- `triage/accepted` should be considered a placeholder name for the
191-
label in this provisional state, depending on what we decide is the most
192-
appropriate name.
193-
- There will be an expectation that only SIG members designated to triage
194-
issues are applying triage labels. We're considering limiting application of
195-
this label to the [`milestone-maintainers` GitHub team](https://github.com/orgs/kubernetes/teams/milestone-maintainers).
186+
Any Org member may use the `/triage` command in good faith that the issue is
187+
valid and belongs to the owning community group associated with the issue. Should
188+
it be widely misused, the command may be restricted to the [`milestone-maintainers`]
189+
or another to-be-determined GitHub team in the future.
196190

197191
From here, a group can search the open items labeled with
198192
`triage/accepted` and proceed to work on them.
199193

200194
A nice example of a written SIG workflow is the [grooming document from
201195
SIG Cluster Lifecycle](https://git.k8s.io/community/sig-cluster-lifecycle/grooming.md).
202196

203-
#### Remove or rename unused triage/** labels
204197

205-
As we're considering reviving the `triage/**` labels in this workflow, it's
206-
important that all labels with this affix are up-to-date, removing any
207-
`triage/**` label deemed to be unused.
198+
### Rename the triage/support label
208199

209-
The current list of `triage/**` labels is as follows:
200+
The label `triage/support` will become `kind/support`. `kind` better reflects
201+
the class or or type of issue.
210202

211-
- `triage/duplicate`
212-
- `triage/needs-information`
213-
- `triage/not-reproducible`
214-
- `triage/support`
215-
- `triage/unresolved`
203+
For more information on this decision see the [Proposal](#proposal).
216204

217-
We propose here removing the following labels:
218205

219-
- `triage/duplicate`
220-
- `triage/not-reproducible`
221-
- `triage/unresolved`
222-
223-
We rename the following labels:
206+
### Graduation Criteria
224207

225-
- `triage/support` --> `kind/support`: Issue has been identified as a support
226-
question, which should be routed to the appropriate forum and closed
227-
immediately afterwards
228-
- `triage/needs-information` --> `lifecycle/needs-information`: Issue requires
229-
more information (from submitter or SIG) in order to work on it
208+
This is a workflow change that will be rolled out at one time. It is not expected
209+
to go through the `alpha` / `beta` / `stable` stages and will instead go right
210+
to stable.
230211

231-
Which leaves the following label and accompanying definition:
232212

233-
- `triage/accepted`: Issue has been triaged by a SIG representative and
234-
is ready to be worked
235213

236214
## Implementation History
237215

@@ -248,23 +226,27 @@ Which leaves the following label and accompanying definition:
248226

249227
## Drawbacks
250228

251-
N/A
252-
253-
<<[UNRESOLVED]>>
229+
- It is yet-another-label for our contributors to keep track of.
230+
- A new contributor may not understand why it is applied and who can resolve it.
254231

255232
## Alternatives
256233

257-
<!--
258-
What other approaches did you consider and why did you rule them out? These do
259-
not need to be as detailed as the proposal, but should include enough
260-
information to express the idea and why it was not acceptable.
261-
-->
262-
263-
<<[/UNRESOLVED]>>
234+
Potential workflows could be built with the current set of labels in use. For
235+
example, issue triage teams could apply `triage/unresolved` to open issues that
236+
have not yet been acted upon. This process is done currently for `sig/network`
237+
issues automatically by [Athenabot].
264238

265239
## Infrastructure Needed
266240

267241
At the current stage of this proposal, Prow already supports the behaviors we require:
268242

269243
- Adding new labels
270244
- Enforcing label requirements on issues/PRs
245+
246+
[triage labels]: https://github.com/kubernetes/kubernetes/labels?q=triage
247+
[kubernetes/test-infra#7598]: https://github.com/kubernetes/test-infra/issues/7598
248+
[kubernetes/community]: https://git.k8s.io/community
249+
[required label]: http://git.k8s.io/test-infra/prow/plugins/require-matching-label/require-matching-label.go
250+
[issue triage process]: https://git.k8s.io/community/contributors/guide/issue-triage.md
251+
[Athenabot]: https://github.com/athenabot/k8s-issues#what-it-does
252+
[`milestone-maintainers`]: https://github.com/orgs/kubernetes/teams/milestone-maintainers

keps/sig-contributor-experience/1553-issue-triage/kep.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
title: Issue Triage Workflow and Automation
2-
status: provisional
2+
status: implementable
33
owning-sig: sig-contributor-experience
44
participating-sigs:
55
- sig-release
66
authors:
77
- "@justaugustus"
8+
- "@mrbobbytables"
9+
- "@nikhita"
810
reviewers:
911
- "@alejandrox1"
1012
- "@mrbobbytables"

0 commit comments

Comments
 (0)