Skip to content

Commit fbf96b3

Browse files
authored
Merge pull request #1554 from justaugustus/issue-triage
keps/contribex: Add KEP-1553 (Issue Triage Workflow and Automation)
2 parents 473d6a0 + c35a9eb commit fbf96b3

File tree

2 files changed

+290
-0
lines changed

2 files changed

+290
-0
lines changed
Lines changed: 270 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,270 @@
1+
# KEP-1553: Issue Triage Workflow and Automation
2+
3+
<!-- toc -->
4+
- [Release Signoff Checklist](#release-signoff-checklist)
5+
- [Summary](#summary)
6+
- [Note to Reviewers](#note-to-reviewers)
7+
- [Motivation](#motivation)
8+
- [Goals](#goals)
9+
- [Non-Goals](#non-goals)
10+
- [Proposal](#proposal)
11+
- [User Stories](#user-stories)
12+
- [Group Leads](#group-leads)
13+
- [Reviewers and Approvers](#reviewers-and-approvers)
14+
- [Contributors](#contributors)
15+
- [Notes/Constraints/Caveats (optional)](#notesconstraintscaveats-optional)
16+
- [Risks and Mitigations](#risks-and-mitigations)
17+
- [Design Details](#design-details)
18+
- [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)
22+
- [Implementation History](#implementation-history)
23+
- [Drawbacks](#drawbacks)
24+
- [Alternatives](#alternatives)
25+
- [Infrastructure Needed](#infrastructure-needed)
26+
<!-- /toc -->
27+
28+
## Release Signoff Checklist
29+
30+
- [ ] Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
31+
- [ ] KEP approvers have approved the KEP status as `implementable`
32+
- [ ] Design details are appropriately documented
33+
- [ ] Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
34+
- [ ] Graduation criteria is in place
35+
- [ ] "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
38+
39+
[kubernetes.io]: https://kubernetes.io/
40+
[kubernetes/enhancements]: https://github.com/kubernetes/enhancements
41+
[kubernetes/kubernetes]: https://github.com/kubernetes/kubernetes
42+
[kubernetes/website]: https://github.com/kubernetes/website
43+
44+
## Summary
45+
46+
To ease the burden of SIG/area reviewers/approvers, we would like to prescribe
47+
a triage workflow and supporting automation.
48+
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+
59+
## Motivation
60+
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
62+
`kubernetes/kubernetes`.
63+
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)
67+
68+
This makes for about 20% of open issues/PRs that are in some state of staleness.
69+
If we consider items marked as `lifecycle/frozen`, then we're looking at around
70+
42% of issues/PRs that could potentially require attention.
71+
72+
### Goals
73+
74+
See [User Stories](#user-stories).
75+
76+
<<[UNRESOLVED]>>
77+
78+
### Non-Goals
79+
80+
- Prescribing an issue triage workflow for all projects within Kubernetes orgs
81+
82+
<<[/UNRESOLVED]>>
83+
84+
## Proposal
85+
86+
### User Stories
87+
88+
#### Group Leads
89+
90+
As a SIG Chair/Technical Lead, WG/UG organizer, or subproject owner, I want to
91+
be able to easily triage my group's backlog of open issues and PRs to accelerate
92+
merge velocity and issue resolution.
93+
94+
#### Reviewers and Approvers
95+
96+
As a reviewer/approver, I want a simple system to categorize issues/PRs in my
97+
purview, so that I can prioritize what to review first.
98+
99+
#### Contributors
100+
101+
As a contributor, I want to be able to submit issues or PRs and:
102+
103+
- understand how the community works to address new submissions
104+
- have some assurance that they will be routed to the correct group
105+
- have them addressed in a timely manner
106+
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]>>
121+
122+
### Risks and Mitigations
123+
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.
128+
129+
How will security be reviewed and by whom?
130+
131+
How will UX be reviewed and by whom?
132+
133+
Consider including folks that also work outside the SIG or subproject.
134+
-->
135+
136+
<<[/UNRESOLVED]>>
137+
138+
## Design Details
139+
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
158+
159+
We currently have a Prow plugin called `require-matching-label`, which requires
160+
specific labels to be set on a issue or pull request.
161+
162+
Examples in [kubernetes/kubernetes] include:
163+
164+
- `needs-kind` (needs a `kind/foo` label)
165+
- `needs-priority` (needs a `priority/bar` label)
166+
- `needs-sig` (needs a `sig/baz` label)
167+
168+
Here we propose [introducing two new labels](https://github.com/kubernetes/test-infra/pull/16298):
169+
170+
- `needs-triage`
171+
- `triage/accepted`
172+
173+
The `needs-triage` label would be automatically applied to incoming issues.
174+
175+
Current contributors would then need to inspect issues with the `needs-triage`
176+
label and attempt to triage them.
177+
178+
Upon determining that an issue is ready to be actively worked on, an org member
179+
can apply the `triage/accepted` label using the following bot command:
180+
181+
```shell
182+
/triage accept
183+
```
184+
185+
(Alternatively, contributors with write access to `kubernetes/kubernetes` would be
186+
able to manually apply the `triage/accepted` label.)
187+
188+
**Considerations:**
189+
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).
196+
197+
From here, a group can search the open items labeled with
198+
`triage/accepted` and proceed to work on them.
199+
200+
A nice example of a written SIG workflow is the [grooming document from
201+
SIG Cluster Lifecycle](https://git.k8s.io/community/sig-cluster-lifecycle/grooming.md).
202+
203+
#### Remove or rename unused triage/** labels
204+
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.
208+
209+
The current list of `triage/**` labels is as follows:
210+
211+
- `triage/duplicate`
212+
- `triage/needs-information`
213+
- `triage/not-reproducible`
214+
- `triage/support`
215+
- `triage/unresolved`
216+
217+
We propose here removing the following labels:
218+
219+
- `triage/duplicate`
220+
- `triage/not-reproducible`
221+
- `triage/unresolved`
222+
223+
We rename the following labels:
224+
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
230+
231+
Which leaves the following label and accompanying definition:
232+
233+
- `triage/accepted`: Issue has been triaged by a SIG representative and
234+
is ready to be worked
235+
236+
## Implementation History
237+
238+
- 2020-02-15 - [Issue Triage KEP submitted as `provisional`](https://github.com/kubernetes/enhancements/pull/1554)
239+
- 2020-02-15 - [Issue Triage Enhancement issue](https://github.com/kubernetes/enhancements/issues/1553) opened
240+
- 2020-02-14 - [Carry PR opened](https://github.com/kubernetes/test-infra/pull/16298) for `needs-triage` and `triage/accepted` labels
241+
- 2020-02-14 - [Carry PR opened](https://github.com/kubernetes/test-infra/pull/16299) to rename `triage/**` labels to `close/**`
242+
- 2019-05-30 - [Original PR opened](https://github.com/kubernetes/test-infra/pull/12814) to rename `triage/**` labels to `close/**`
243+
- 2019-05-01 - ["Deadlines are horrible"](https://groups.google.com/d/topic/kubernetes-sig-release/dGVBrlkOXQo/discussion) discussion
244+
- 2019-03-18 - [Original PR opened](https://github.com/kubernetes/test-infra/pull/11818) for `needs-triage` and `lifecycle/ready` labels
245+
- 2019-03-18 - [k/k-wide triage workflow improvements](https://github.com/kubernetes/community/issues/3456) issue opened
246+
- 2019-03-08 - ["Issue triage again"](https://groups.google.com/d/topic/kubernetes-sig-contribex/BvGmOQ0v5f0/discussion) discussion
247+
- 2016-11-14 - [Initial mailing list](https://groups.google.com/d/topic/kubernetes-sig-contribex/mI7kuTFa_I4/discussion) discussion on issue triage
248+
249+
## Drawbacks
250+
251+
N/A
252+
253+
<<[UNRESOLVED]>>
254+
255+
## Alternatives
256+
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]>>
264+
265+
## Infrastructure Needed
266+
267+
At the current stage of this proposal, Prow already supports the behaviors we require:
268+
269+
- Adding new labels
270+
- Enforcing label requirements on issues/PRs
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
title: Issue Triage Workflow and Automation
2+
status: provisional
3+
owning-sig: sig-contributor-experience
4+
participating-sigs:
5+
- sig-pm
6+
- sig-release
7+
authors:
8+
- "@justaugustus"
9+
reviewers:
10+
- "@alejandrox1"
11+
- "@mrbobbytables"
12+
- "@logicalhan"
13+
- "@smourapina"
14+
- "@thockin"
15+
approvers:
16+
- "@cblecker"
17+
- "@nikhita"
18+
creation-date: 2020-02-15
19+
see-also:
20+
replaces:

0 commit comments

Comments
 (0)