Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 41e648a

Browse files
committed
chore(triaging.md): update triaging guidelines
I removed the complexity metric as suggested by this blog post on triaging: http://www.lostgarden.com/2008/05/improving-bug-triage-with-user-pain.html (see The temptation to assign ‘cost’) Big thanks to @ashleygwilliams and @davidjnelson for their help and feedback!
1 parent 5d9d6a5 commit 41e648a

File tree

1 file changed

+113
-41
lines changed

1 file changed

+113
-41
lines changed

TRIAGING.md

+113-41
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,134 @@
11
# Triage new issues/PRs on github
22

33
This document shows the steps the Angular team is using to triage issues.
4-
The labels are used later on for planning releases.
4+
The labels are used later on for [planning releases](#assigning-work).
55

6-
## Tips ##
76

8-
* Label "resolution:*"
9-
* these tags can be used for labeling a closed issue/PR with a reason why it was closed. (we can add reasons as we need them, right there are only a few rejection reasons. it doesn't make sense to label issues that were fixed or prs that were merged)
7+
## Automatic processing
108

9+
We have tools (e.g. [Mary Poppins]) that automatically add comments and labels to issues and PRs.
10+
The following is done automatically so you don't have to worry about it:
1111

12-
## Automatic processing ##
12+
* Label `cla: yes` or `cla: no` for pull requests
13+
* Label `GH: *`
14+
* `PR` - issue is a PR
15+
* `issue` - otherwise
1316

14-
We have automatic tools (e.g. Mary Poppins) that automatically add comments / labels to issues and PRs.
15-
The following is done automatically and should not be done manually:
1617

17-
* Label "cla: yes" or "cla: no" for pull requests
18+
## Triaging Process
1819

19-
## Process ##
20+
This process based on the idea of minimizing user pain
21+
[from this blog post](http://www.lostgarden.com/2008/05/improving-bug-triage-with-user-pain.html).
2022

21-
1. Open list of [non triaged issues](https://github.com/angular/angular.js/issues?direction=desc&milestone=none&page=1&sort=created&state=open)
23+
1. Open the list of [non triaged issues](https://github.com/angular/angular.js/issues?direction=desc&milestone=none&page=1&sort=created&state=open)
24+
* Sort by submit date, with the newest issues first
25+
* You don't have to do issues in order; feel free to pick and choose issues as you please.
26+
* You can triage older issues as well
27+
* Triage to your heart's content
2228
1. Assign yourself: Pick an issue that is not assigned to anyone and assign it to you
23-
1. Assign milestone:
24-
* "Docs only" milestone - for documentation PR -> **Done**.
25-
* Current/next milestone - regressions
26-
* 1.2.x - everything else
27-
1. Label "GH: *" (to be automated via Mary Poppins)
28-
* PR - issue is a PR
29-
* issue - otherwise
29+
30+
1. Understandable? - verify if the description of the request is clear.
31+
* If not, [close it][] according to the instructions below and go to the last step.
32+
1. Duplicate?
33+
* If you've seen this issue before [close it][], and go to the last step.
34+
* Check if there are comments that link to a dupe. If so verify that this is indeed a dupe, [close it][], and go to the last step.
3035
1. Bugs:
31-
* Label "Type: Bug"
32-
* Label "Type: Regression" - if the bug is a regression
33-
* Duplicate? - Check if there are comments pointing out that this is a dupe, if they do exist verify that this is indeed a dupe and close it and go to the last step
34-
* Reproducible? - Steps to reproduce the bug are clear, if not ask for clarification (ideally plunker or fiddle)
35-
* Reproducible on master? - http://code.angularjs.org/snapshot/
36+
* Label `Type: Bug`
37+
* Reproducible? - Steps to reproduce the bug are clear. If they are not,
38+
* Reproducible on master? - <http://code.angularjs.org/snapshot/>
3639

3740
1. Non bugs:
38-
* Label "Type: Feature" or "Type: Chore" or "Type: Perf"
39-
* Label "needs: breaking change" - if needed
40-
* Label "needs: public api" - if a new public api is needed
41-
* Understandable? - verify if the description of the request is clear. if not ask for clarification
42-
* Goals of angular core? - Often new features should be implemented as a third-party module rather than an addition to the core.
43-
44-
1. Label "component: *"
41+
* Label `Type: Feature`, `Type: Chore`, or `Type: Perf`
42+
* Belongs in core? – Often new features should be implemented as a third-party module rather than an addition to the core.
43+
If this doesn't belong, [close it][], and go to the last step.
44+
* Label `needs: breaking change` - if needed
45+
* Label `needs: public api` - if the issue requires introduction of a new public API
46+
1. Label `browser: *` - if the issue **only** affects a certain browser
47+
1. Label `frequency: *` – How often does this issue come up? How many developers does this affect?
48+
* low - obscure issue affecting a handful of developers
49+
* moderate - impacts a common usage pattern
50+
* high - impacts most or all Angular apps
51+
1. Label `severity: *` - How bad is the issue?
52+
* security issue
53+
* regression
54+
* memory leak
55+
* broken expected use - it's hard or impossible for a developer using Angular to accomplish something that Angular should be able to do
56+
* confusing - unexpected or inconsistent behavior; hard-to-debug
57+
* inconvenience - causes ugly/boilerplate code in apps
58+
1. Label `component: *`
4559
* In rare cases, it's ok to have multiple components.
46-
1. Label "impact: *"
47-
* small - obscure issue affecting one or handful of developers
48-
* medium - impacts some usage patterns
49-
* large - impacts most or all of angular apps
50-
1. Label "complexity: *"
51-
* small - trivial change
52-
* medium - non-trivial but straightforward change
53-
* large - changes to many components in angular or any changes to $compile, ngRepeat or other "fun" components
54-
1. Label "PRs plz!" for "GH: issue"
55-
* if complexity is small or medium and the problem as well as solution are well captured in the issue
56-
1. Label "origin: google" for issues from Google
57-
1. Label "high priority" for security issues, major performance regressions or memory leaks
60+
1. Label `PRs plz!` - These issues are good targets for PRs from the open source community. Apply to issues where the problem and solution are well defined in the comments, and it's not too complex.
61+
1. Label `origin: google` for issues from Google
62+
63+
1. Assign a milestone:
64+
* Current 1.x.y milestone - regressions and urgent bugs only
65+
* Backlog - fixes; changes that should go into a patch release
66+
* Ice Box - new features; changes that belong inß a major/minor release
5867

5968
1. Unassign yourself from the issue
6069

6170

71+
## Tips
72+
73+
* Label `resolution: *`
74+
* these tags can be used for labeling a closed issue/PR with a reason why it was closed.
75+
* Right now there are only a few rejection reasons, but we can add more as needed. Feel free to suggest one to a core team member. We don't use this label for issues that were fixed or PRs that were merged.
76+
77+
78+
## Closing an Issue or PR
79+
80+
We're grateful to anyone who takes the time to submit an issue, even if we ultimately decide not to act on it.
81+
Be kind and respectful as you close issues. Be sure to follow the [code of conduct][].
82+
83+
1. Always thank the person who submitted it.
84+
1. If it's a duplicate, link to the older or more descriptive issue that supersedes the one you are closing.
85+
1. Let them know if there's some way for them to follow-up.
86+
* When the issue is unclear or reproducible, note that you'll reopen it if they can clarify or provide a better example. Mention [plunker] or [fiddle] for examples. Watch your notifications and follow-up if they do provide clarification. :)
87+
* If appropriate, suggest implementing a feature as a third-party module.
88+
89+
If in doubt, ask a core team member what to do.
90+
[Brian](https://github.com/btford) is probably the person to ask.
91+
You can mention him in the relevant thread like this: `@btford`.
92+
93+
**Example:**
94+
95+
> Thanks for submitting this issue!
96+
> Unfortunately, we don't think this functionality belongs in core.
97+
> The good news is that you could easily implement this as a third-party module and publish it on Bower and/or npm.
98+
99+
100+
## Assigning Work
101+
102+
These criteria are then used to calculate a "user pain" score.
103+
Work is assigned weekly to core team members starting with the highest pain, descending down to the lowest.
104+
105+
```
106+
pain = severity × frequency
107+
```
108+
109+
**severity:**
110+
111+
- security issue (6)
112+
- regression (5)
113+
- memory leak (4)
114+
- broken expected use (3)
115+
- confusing (2)
116+
- inconvenience (1)
117+
118+
**frequency:**
119+
120+
- low (1)
121+
- moderate (2)
122+
- high (3)
123+
124+
**Note:** Security issues, regressions, and memory leaks should almost always be set to `frequency: high`.
125+
126+
62127
[![Analytics](https://ga-beacon.appspot.com/UA-8594346-11/angular.js/TRIAGING.md?pixel)](https://github.com/igrigorik/ga-beacon)
128+
129+
130+
[close it]: #closing-an-issue-or-pr
131+
[code of conduct]: https://github.com/angular/code-of-conduct/blob/master/CODE_OF_CONDUCT.md
132+
[Mary Poppins]: https://github.com/btford/mary-poppins
133+
[plunker]: http://plnkr.co/
134+
[fiddle]: http://jsfiddle.net/

0 commit comments

Comments
 (0)