| 
1 |  | -# Triage Process and Github Labels for Angular  | 
 | 1 | +# Triage Process and GitHub Labels for Angular  | 
2 | 2 | 
 
  | 
3 |  | -This document describes how the Angular team uses labels and milestones   | 
 | 3 | +This document describes how the Angular team uses labels and milestones  | 
4 | 4 | to triage issues on github. The basic idea of the process is that  | 
5 |  | -caretaker only assigns a component and type (bug, feature) label. The   | 
6 |  | -owner of the component than is in full control of how the issues should   | 
 | 5 | +caretaker only assigns a component and type (bug, feature) label. The  | 
 | 6 | +owner of the component than is in full control of how the issues should  | 
7 | 7 | be triaged further.  | 
8 | 8 | 
 
  | 
9 |  | -Once this process is implemented and in use, we will revisit it to see   | 
 | 9 | +Once this process is implemented and in use, we will revisit it to see  | 
10 | 10 | if further labeling is needed.  | 
11 | 11 | 
 
  | 
12 |  | -## Components  | 
 | 12 | +## Label Types  | 
13 | 13 | 
 
  | 
14 |  | -A caretaker should be able to determine which component the issue   | 
 | 14 | +### Components  | 
 | 15 | + | 
 | 16 | +A caretaker should be able to determine which component the issue  | 
15 | 17 | belongs to. The components have a clear piece of source code associated  | 
16 |  | -with it.  | 
17 |  | - | 
18 |  | -* `comp: animations`: `@matsko`  | 
19 |  | -* `comp: benchpress`: `@tbosch`  | 
20 |  | -* `comp: build & ci`: `@IgorMinar` -- All build and CI scripts   | 
21 |  | -* `comp: common`: `@mhevery`  -- This includes core components / pipes.  | 
22 |  | -* `comp: core & compiler`: `@tbosch` -- Because core and compiler are very   | 
23 |  | -  intertwined, we will be treating them as one.  | 
24 |  | -* `comp: forms`: `@kara`  | 
25 |  | -* `comp: http`: `@jeffbcross`  | 
26 |  | -* `comp: i18n`: `@vicb`  | 
27 |  | -* `comp: language service`: `@chuckjaz`  | 
28 |  | -* `comp: metadata-extractor`: `@chuckjaz`  | 
29 |  | -* `comp: router`: `@vicb`  | 
30 |  | -* `comp: testing`: `@juliemr`  | 
31 |  | -* `comp: upgrade`: `@mhevery`  | 
32 |  | -* `comp: web-worker`: `@vicb`  | 
33 |  | -* `comp: zones`: `@mhevery`  | 
 | 18 | +with it within the `/packages/` folder of this repo.  | 
 | 19 | + | 
 | 20 | +* `comp: aio` - the angular.io application  | 
 | 21 | +* `comp: animations`  | 
 | 22 | +* `comp: benchpress`  | 
 | 23 | +* `comp: common` - this includes core components / pipes  | 
 | 24 | +* `comp: core, compiler` - because core, compiler, compiler-cli and  | 
 | 25 | +  browser-platforms are very intertwined, we will be treating them as one  | 
 | 26 | +* `comp: forms`  | 
 | 27 | +* `comp: http`  | 
 | 28 | +* `comp: i18n`  | 
 | 29 | +* `comp: language service`  | 
 | 30 | +* `comp: router`  | 
 | 31 | +* `comp: testing`  | 
 | 32 | +* `comp: upgrade`  | 
 | 33 | +* `comp: web-worker`  | 
 | 34 | +* `comp: zones`  | 
34 | 35 | 
 
  | 
35 | 36 | There are few components which are cross-cutting. They don't have  | 
36 | 37 | a clear location in the source tree. We will treat them as a component  | 
37 | 38 | even thought no specific source tree is associated with them.  | 
38 | 39 | 
 
  | 
39 |  | -* `comp: docs`: `@naomiblack`  | 
40 |  | -* `comp: packaging`: `@IgorMinar`  | 
41 |  | -* `comp: performance`: `@tbosch`  | 
42 |  | -* `comp: security`: `@IgorMinar`  | 
 | 40 | +* `comp: build & ci` - all build and CI scripts  | 
 | 41 | +* `comp: docs` - documentation, including API docs, guides, tutorial  | 
 | 42 | +* `comp: packaging`  | 
 | 43 | +* `comp: performance`  | 
 | 44 | +* `comp: security`  | 
 | 45 | + | 
43 | 46 | 
 
  | 
 | 47 | +### Type  | 
44 | 48 | 
 
  | 
45 |  | -## Type  | 
46 | 49 | What kind of problem is this?  | 
47 | 50 | 
 
  | 
48 | 51 | * `type: RFC / discussion / question`  | 
@@ -95,62 +98,49 @@ These criteria are then used to calculate a "user pain" score as follows:  | 
95 | 98 | `pain = severity × frequency`  | 
96 | 99 | 
 
  | 
97 | 100 | 
 
  | 
98 |  | -### Assigning Issues to Milestones  | 
99 |  | - | 
100 |  | -Any issue that is being worked on must have:  | 
101 |  | - | 
102 |  | -* An `Assignee`: The person doing the work.  | 
103 |  | -* A `Milestone`: When we expect to complete this work.  | 
104 |  | - | 
105 |  | -We aim to only have at most three milestones open at a time:  | 
106 |  | - | 
107 |  | -* Closing Milestone: A milestone with a very small number of issues, about to release.   | 
108 |  | -* Current Milestone: Work that we plan to complete within one week.  | 
109 |  | -* Next Milestone: Work that is > 1 week but current for the team.  | 
110 |  | - | 
111 |  | -The [backlog](https://github.com/angular/angular/issues?q=is%3Aopen+is%3Aissue+no%3Amilestone)   | 
112 |  | -consists of all issues that have been triaged but do not have an assignee or milestone.    | 
113 |  | - | 
114 | 101 | ## Triaged vs Untrained PRs  | 
115 | 102 | 
 
  | 
116 |  | -PRs should also be label with a `comp: *` so that it is clear which   | 
 | 103 | +PRs should also be label with a `comp: *` so that it is clear which  | 
117 | 104 | primary area the PR effects.  | 
118 | 105 | 
 
  | 
119 |  | -Because of the cumulative pain associated with rebasing PRs, we triage PRs daily, and   | 
120 |  | -closing or reviewing PRs is a top priority ahead of other ongoing work.   | 
 | 106 | +Because of the cumulative pain associated with rebasing PRs, we triage PRs daily, and  | 
 | 107 | +closing or reviewing PRs is a top priority ahead of other ongoing work.  | 
121 | 108 | 
 
  | 
122 | 109 | Every triaged PR must have a `pr_action` label assigned to it and an assignee:  | 
123 |  | -   | 
124 |  | -* `pr_action: review` -- work is complete and comment is needed from the assignee.  | 
125 |  | -* `pr_action: cleanup` -- more work is needed from the current assignee.   | 
126 |  | -* `pr_action: discuss` -- discussion is needed, to be led by the current assignee.  | 
127 |  | -* `pr_action: merge` -- the PR should be merged. Add this to a PR when you would like to   | 
 | 110 | + | 
 | 111 | +* `pr_action: review` - work is complete and comment is needed from the assignee.  | 
 | 112 | +* `pr_action: cleanup` - more work is needed from the current assignee.  | 
 | 113 | +* `pr_action: discuss` - discussion is needed, to be led by the current assignee.  | 
 | 114 | +* `pr_action: merge` - the PR should be merged. Add this to a PR when you would like to  | 
128 | 115 |   trigger automatic merging following a successful build. This is described in [COMMITTER.md](COMMITTER.md).  | 
129 | 116 | 
 
  | 
130 | 117 | In addition, PRs can have the following states:  | 
131 | 118 | 
 
  | 
132 |  | -* `pr_state: LGTM` -- PR may have outstanding changes but does not require further review.  | 
133 |  | -* `pr_state: WIP` -- PR is experimental or rapidly changing. Not ready for review or triage.  | 
134 |  | -* `pr_state: blocked` -- PR is blocked on an issue or other PR. Not ready for review or triage.  | 
 | 119 | +* `pr_state: WIP` - PR is experimental or rapidly changing. Not ready for review or triage.  | 
 | 120 | +* `pr_state: blocked` - PR is blocked on an issue or other PR. Not ready for review or triage.  | 
135 | 121 | 
 
  | 
136 |  | -Note that an LGTM state does not mean a PR is ready to merge: for example, a reviewer might set the  | 
137 |  | -LGTM state but request a minor tweak that doesn't need further review, e.g., a rebase or small   | 
138 |  | -uncontroversial change.  | 
139 | 122 | 
 
  | 
140 |  | -PRs do not need to be assigned to milestones, unless a milestone release should be held for that   | 
141 |  | -PR to land.  | 
 | 123 | +## PR Approvals  | 
 | 124 | + | 
 | 125 | +Before a PR can be merged it must be approved by the appropriate reviewer(s).  | 
 | 126 | + | 
 | 127 | +To ensure that there right people review each change, we configured [PullApprove bot](https://about.pullapprove.com/) via (`.pullapprove.yaml`) to provide aggregate approval state via the GitHub PR Status API.  | 
 | 128 | + | 
 | 129 | +Note that approved state does not mean a PR is ready to be merged. For example, a reviewer might  | 
 | 130 | +approve the PR but request a minor tweak that doesn't need further review, e.g., a rebase or small  | 
 | 131 | +uncontroversial change.  | 
142 | 132 | 
 
  | 
143 | 133 | 
 
  | 
144 | 134 | ## Special Labels  | 
145 | 135 | 
 
  | 
146 | 136 | ### action:design  | 
147 |  | -More active discussion is needed before the issue can be worked on further. Typically used for   | 
 | 137 | +More active discussion is needed before the issue can be worked on further. Typically used for  | 
148 | 138 | `type: feature` or `type: RFC/discussion/question`  | 
149 | 139 | 
 
  | 
150 | 140 | [See all issues that need discussion](https://github.com/angular/angular/labels/action:%20Design)  | 
151 | 141 | 
 
  | 
152 |  | -### cla  | 
153 |  | -Managed by googlebot. Indicates whether a PR has a CLA on file for its author(s). Only issues with   | 
 | 142 | +### cla: yes, cla: no  | 
 | 143 | +Managed by googlebot. Indicates whether a PR has a CLA on file for its author(s). Only issues with  | 
154 | 144 | `cla:yes` should be merged into master.  | 
155 | 145 | 
 
  | 
156 | 146 | ### WORKS_AS_INTENDED  | 
 | 
0 commit comments