Skip to content

Commit 9ce0870

Browse files
committed
chore(process): document triage process for angular 2
1 parent 246151b commit 9ce0870

1 file changed

Lines changed: 168 additions & 0 deletions

File tree

TRIAGE_AND_LABELS.md

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
# Triage Process and Github Labels for Angular 2
2+
3+
This document describes how the Angular team uses labels and milestones to triage issues on github.
4+
5+
# Issues and PRs
6+
## Triaged vs Untriaged Issues
7+
8+
Every triaged issue must have four attributes assigned to it:
9+
10+
* `priority` -- P0 through P4. P0 issues are "drop everything and do this now". P4 are nice to have.
11+
* `component` -- Which area of Angular knowledge this relates to.
12+
* `effort` -- Rough assessment of how much work this issue is. E.g. `effort: hour` means
13+
"probably a few hours of work".
14+
* `type` -- Whether this issue is a bug, feature, or other kind of task.
15+
16+
Untriaged issues are any issues in the queue that don't yet have these four attributes.
17+
18+
You can view a report of untriaged issues here, in our
19+
[Angular Triage Dashboard](http://mhevery.github.io/github_issues/).
20+
21+
Issues should also have a clear action to complete that can be addressed or resolved within the
22+
scope of Angular 2. We'll close issues that don't meet these criteria.
23+
24+
### Assigning Issues to Milestones
25+
26+
Any issue that is being worked on must have:
27+
28+
* An `assignee`: The person doing the work.
29+
* A `Milestone`: When we expect to complete this work.
30+
31+
We aim to only have at most three milestones open at a time:
32+
33+
* Closing Milestone: A milestone with a very small number of issues, about to release.
34+
* Current Milestone: Work that we plan to complete within one week.
35+
* Next Milestone: Work that is > 1 week but current for the team.
36+
37+
The [backlog](https://github.com/angular/angular/issues?q=is%3Aopen+is%3Aissue+no%3Amilestone)
38+
consists of all issues that have been triaged but do not have an assignee or milestone.
39+
40+
## Triaged vs Untriaged PRs
41+
42+
Because of the cumulative pain associated with rebasing PRs, we triage PRs daily, and
43+
closing or reviewing PRs is a top priority ahead of other ongoing work.
44+
45+
Every triaged PR must have a `pr_action` label assigned to it and an assignee:
46+
47+
* `pr_action: cleanup` -- more work is needed from the current assignee.
48+
* `pr_action: discuss` -- discussion is needed, to be led by the current assignee.
49+
* `pr_action: merge` -- OK to merge this as soon as tests are green, `pr_state: LGTM`, and `CLA:
50+
yes` are true. assignee (or anyone else) can merge.
51+
* `pr_action: review` -- work is complete and comment is needed from the assignee.
52+
53+
In addition, PRs can have the following states:
54+
55+
* `pr_state: LGTM` -- PR may have outstanding changes but does not require further review.
56+
* `pr_state: WIP` -- PR is experimental or rapidly changing. Not ready for review or triage.
57+
* `pr_state: blocked` -- PR is blocked on an issue or other PR. Not ready for review or triage.
58+
59+
Note that an LGTM state does not mean a PR is ready to merge: for example, a reviewer might set the
60+
LGTM state but request a minor tweak that doesn't need further review, e.g., a rebase or small
61+
uncontroversial change.
62+
63+
PRs do not need to be assigned to milestones, unless a milestone release should be held for that
64+
PR to land.
65+
66+
Victor (`vsavkin`) and Tobias (`tbosch`) are owners of the PR queue. Here is a list of [current
67+
untriaged PRs](https://github.com/angular/angular/pulls?utf8=%E2%9C%93&q=is%3Aopen+no%3Amilestone+is%3Apr+-label%3A%22pr_action%3A+cleanup%22+-label%3A%22pr_action%3A+merge%22+-label%3A%22pr_action%3A+review%22+-label%3A%22pr_action%3A+discuss%22+-label%3A%22pr_state%3A+blocked%22+-label%3A%22pr_state%3A+WIP%22+).
68+
69+
# Prioritization of Work
70+
71+
What should you be working on?
72+
73+
1. Any PRs that are assigned to you that don't have `pr_state: WIP` or `pr_state: blocked`
74+
1. Any issues that are assigned to you in the lowest-numbered Milestone
75+
1. Any issues that are assigned to you in any Milestone
76+
77+
If there are no issues assigned to you in any Milestone, pick an issue, self-assign it, and add
78+
it to the most appropriate Milestone based on effort.
79+
80+
Here are some suggestions for what to work on next:
81+
82+
* Filter for issues in a component that you are knowledgeable about, and pick something that has a
83+
high priority.
84+
* Filter for any small effort task that has the special `cust: GT` or `cust:Ionic` tags,
85+
and priority > P3.
86+
* Add a new task that's really important, add `component`, `priority`, `effort`, `type` and
87+
assign it to yourself and the most appropriate milestone.
88+
89+
# Labels Used in Triage
90+
91+
## Priority
92+
How urgent is this issue? We use priority to determine what should be worked on in each new
93+
milestone.
94+
95+
* `P0: critical` -- drop everything to work on this
96+
* `P1: urgent` -- resolve quickly in the current milestone. people are blocked
97+
* `P2: required` -- needed for development but not urgent yet. workaround exists, or e.g. new API
98+
* `P3: important` -- must complete before Angular 2 is ready for release
99+
* `P4: nice to have` -- a good idea, but maybe not until after release
100+
101+
102+
## Effort
103+
Rough, non-binding estimate of how much work this issue represents. Please change this assessment
104+
for anything you're working on to better reflect reality.
105+
106+
* `effort: hour` -- straightforward issue that can be resolved in a few hours, e.g. < 1 day of work.
107+
* `effort: day` -- issue that will be a few days of work. Can be completed within a single
108+
milestone.
109+
* `effort: week` -- issue that will likely take more than 1 milestone to complete.
110+
111+
<!-- We don't like these label names as
112+
they're not absolute (what is one developer-hour, really?) but decided it wasn't worth arguing
113+
over terms. -->
114+
115+
## Component
116+
Which area of Angular knowledge is this issue most closely related to? Helpful when deciding what
117+
to work on next.
118+
119+
* `comp: benchpress` -- benchmarks and performance testing &rarr; *tbosch*, *crossj*
120+
* `comp: build/dev-productivity` -- build process, e.g. CLI and related tasks &rarr; *iminar*, *caitp*
121+
* `comp: build/pipeline` -- build pipeline, e.g. ts2dart &rarr; *mprobst*, *alexeagle*
122+
* `comp: core` -- general core Angular issues, not related to a sub-category (see below) &rarr;
123+
*mhevery*
124+
* `comp: core/animations` -- animations framework &rarr; *matsko*
125+
* `comp: core/change_detection` -- change detection &rarr; *vsavkin*
126+
* `comp: core/di` -- dependency injection &rarr; *vicb*, *rkirov*
127+
* `comp: core/directives` -- directives
128+
* `comp: core/forms` -- forms &rarr; *vsavkin*
129+
* `comp: core/pipes` -- pipes
130+
* `comp: core/templating` -- templating
131+
* `comp: core/testbed` -- e2e tests and support for them
132+
* `comp: dart-transformer` -- Dart transforms &rarr; *kegluneq*, *jakemac*
133+
* `comp: data-access` -- &rarr; *jeffbcross*
134+
* `comp: docs` -- API docs and doc generation &rarr; *naomiblack*, *petebacondarwin*
135+
* `comp: material-components` -- Angular Material components built in Angular 2 &rarr; *jelbourn*
136+
* `comp: router` -- Component Router &rarr; *btford*, *igorminar*, *matsko*
137+
* `comp: wrenchjs`
138+
139+
## Type
140+
What kind of problem is this?
141+
142+
* `type RFC / discussion / question`
143+
* `type bug`
144+
* `type chore`
145+
* `type feature`
146+
* `type performance`
147+
* `type refactor`
148+
149+
## Special Labels
150+
151+
### action:design
152+
More active discussion is needed before the issue can be worked on. Typically used for `type:
153+
feature` or `type: RFC/discussion/question`
154+
155+
<!-- TODO: Seems like this it's redundant to also have type:discussion, no? -->
156+
157+
[See all issues that need discussion](https://github.com/angular/angular/labels/action:%20Design)
158+
159+
### cla
160+
Managed by googlebot. Indicates whether a PR has a CLA on file for its author(s). Only issues with
161+
`cla:yes` should be merged into master.
162+
163+
### cust
164+
This is an issue causing user pain for early adopter customers `cust: GT` or `cust: Ionic`.
165+
166+
### WORKS_AS_INTENDED
167+
168+
Only used on closed issues, to indicate to the reporter why we closed it.

0 commit comments

Comments
 (0)