-
Notifications
You must be signed in to change notification settings - Fork 155
Development Process Explained
Stormpath uses a number of the built-in features of Github as well as waffle.io to manage our development process internally. Our repo, and thus all our issues and pull requests are public. Our waffle.io page is public as well, which makes it easy to see what's in the hopper for development and who is working on what.
The rest of this page outlines the basic rules we follow to get from the backlog to done and release.
Here's the flow of issues through the process:
backlog -> milestone -> ready -> in progress -> needs review -> done
-
An issue gets into the
backlog
simply by virtue of it being defined in github. -
A
milestone
defines a unit of work to be released. Allissues
assigned to the milestone will be included in the release. -
Once a
milestone
is defined andissues
added to it, theready
label can be applied. This indicates that theseissues
are ready to be worked on. Note: there should only ever beissues
in the samemilestone
with theready
label. -
A developer can "pick up" an
issue
to work on by applying thein progress
label to it. Anyissue
with thein progress
label should also have a developer assigned to it. -
When an
issue
is ready to be reviewed, the developer who worked on it should create a Pull Request (PR) for it. The title or the description of the PR should reference theissue
number with the pound sign (#) in front of it (description example: "resolves #444). Theissue
should have thein progress
label removed and theneeds review
label applied. -
Any developer, other than the one who worked on the
issue
, can "pick up" the PR and become the reviewer. This is done by the reviewer assigning the PR to themselves. If there is feedback on the PR, the reviewer will assign it back to the developer for update. Once the developer has addressed the comments from the reviewer, the developer will assign the PR back to the reviewer. This continues until the reviewer approves the PR and assigns it back to the developer a final time. -
Once a reviewer has approved a PR and assigned it back to the developer, AND the CI build is successful, the developer will merge the PR, close the
issue
and delete the branch. This will automatically remove the "needs review" label. Note: If the last commit message includes one of the keywords that Github uses for automatic closure and references the issue, the issue will be closed automatically.
Working with the labels as described in the previous section, will automatically cause the issues to flow through the waffle.io columns.
Alternatively, developers can work directly in waffle.io. Dragging an issue from the Ready
column to the In Progress
column automatically removes the ready
label and applies the in progress
label to the issue in Github.
There are two things that github.com has the waffle.io does not yet:
- The results of the CI build (travis)
- The milestone view, which shows % complete
[![ready][1]][1] [1]: images/dev_process/ready.png
[![in progress][2]][2] [2]: images/dev_process/in_progress.png
[![needs review][3]][3] [3]: images/dev_process/needs_review.png
-
All
issues
with theready
label applied should have amilestone
assigned AND it should be the samemilestone
. -
Only
issues
with the currentmilestone
should ever have thein progress
label applied. -
Any
issue
with thein progress
label applied should have adeveloper
assigned. -
When the assigned
developer
completes work on anissue
, thatdeveloper
will: -
create a pull request (
PR
) that references theissue
number in the title or description -
remove the
in progress
label from theissue
-
apply the
needs review
label to theissue
-
Another
developer
will assign themselves to thePR
, thus becoming thereviewer
. -
If the
reviewer
has comments/requests on thePR
, thereviewer
assigns thePR
back to the `developer -
When the
developer
resolves the comments from thereviewer
, thedeveloper
assigns thePR
back to thereviewer
-
repeat 1 and 2 as needed
-
The
reviewer
adds a comment to thePR
indicating that it is approved and assigns thePR
to thedeveloper
-
The
developer
merges thePR
, closes theissue
and deletes the github branch/