Skip to content

Commit af44703

Browse files
committed
Merge pull request #20 from dylanPowers/issues-guide
Issues guide
2 parents 97f04e0 + 8483adc commit af44703

File tree

1 file changed

+153
-0
lines changed

1 file changed

+153
-0
lines changed

issues-guide.md

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
Issues Guide
2+
=============
3+
This is a guide for collaborators and non-collaborators on how GitHub issues
4+
are handled and processed.
5+
6+
7+
The Sprint
8+
-----------
9+
A large part of our issue flow is dictated by our weekly sprints. The details
10+
of those can be read about at https://github.com/ipfs/pm#sprints.
11+
12+
13+
Github Labels
14+
--------------
15+
We make extensive use of Github labels to help us and our tools organize issues.
16+
Here is a rough guide. Note that it isn't strictly followed and feel free to
17+
reference the [ipfs/go-ipfs repo's labels](https://github.com/ipfs/go-ipfs/labels).
18+
19+
### Colors
20+
* yellow: Documentation
21+
* light red: An important topic like security
22+
* orange: An important task like cleanup / refactor
23+
* red: Very important stuff like bugs
24+
* light green: The difficulty level
25+
* green: Help wanted
26+
* dark green: Testing
27+
* blue: A topic or subsystem
28+
* purple: Enhancement
29+
* gray: Used by tools like [Waffle](https://waffle.io/ipfs/ipfs)
30+
31+
### Naming
32+
It's very ad-hoc with no strict science. Generally, the names should be
33+
understandable by themselves. For example, use "difficulty: moderate" instead
34+
of "moderate".
35+
36+
### Commonly Used Labels
37+
Here are some common labels currently in use:
38+
* yellow
39+
* documentation
40+
* light red
41+
* security
42+
* red
43+
* bug
44+
* light green
45+
* difficulty: easy
46+
* difficulty: moderate
47+
* difficulty: hard
48+
* green
49+
* help wanted
50+
* dark green
51+
* testing
52+
* test_failure
53+
* purple
54+
* enhancement
55+
* gray
56+
* icebox - Waffle Icebox column
57+
* backlog - Waffle Backlog column
58+
* sprint - Waffle Sprint column
59+
* in progress - Waffle In Progress column
60+
* codereview - Waffle Code Review & QA column
61+
62+
63+
Waffle
64+
-------
65+
[Waffle](https://waffle.io/ipfs/ipfs) is our issue board and is divided into
66+
7 columns:
67+
* New Issues: This is pretty self explanatory and is where all the new issues
68+
get thrown into.
69+
* Icebox: These are issues we've decided that aren't important for now, but
70+
will want to get to some day.
71+
* Backlog: These are the issues that are ready for work to begin on and we
72+
will pull from these when determining what to work on for
73+
the next sprint cycle.
74+
* Sprint: These are the issues that are being tackled for the current sprint.
75+
* In Progress: These are the issues that people are working on at the current
76+
point in time.
77+
* Code Review & QA: These are the issues where work has been completed and
78+
the issues are open for feedback and comments. An issue here may be
79+
moved back to the In Progress column when feedback is no longer necessary
80+
because there are substantial enough code review
81+
changes that additional comments would no longer be helpful.
82+
* Done: All the issues that have been closed in the past week.
83+
84+
### Some notes
85+
It's not necessary to use Waffle directly. Everything done in Waffle
86+
can be done through GitHub. Dragging an issue between
87+
columns is the same as reassigning the issue the corresponding label for that column.
88+
89+
When working on an issue, don't feel like you have to drag it around with the
90+
pull request submission that fixes it. Waffle does a decent job at
91+
connecting a pull request to an issue, but it isn't perfect so just do what makes sense.
92+
Waffle is more about communicating to others about the progress of an issue
93+
than anything else.
94+
95+
96+
Closing Issues
97+
---------------
98+
Issues should only be closed when they have in fact been resolved. This makes
99+
searching for unresolved or duplicate issues much easier. It also means that
100+
issues are only reopened when the original issue was in fact not resolved.
101+
In instances where an issue submitter is not responding to questions and feedback
102+
the issue should be put in the icebox. We can later come back to close the
103+
issue when it's no longer relevant and has thus been "resolved" because of it.
104+
105+
106+
Issue Workflow Example
107+
-----------------------
108+
### New issue submitted
109+
1. The issue is submitted:
110+
* The issue gets automatically sent to the New Issues column in Waffle.
111+
* A collaborator on the repo intercepts the issue and begins discussion on
112+
the issue.
113+
2. The issue has been sufficiently described for work to begin:
114+
* If work should begin soon on the issue then a collaborator moves the issue
115+
to the backlog column. Less pressing issues are moved to the Icebox column.
116+
3. In a sprint meeting, a collaborator decides to work on an issue:
117+
* The issue is moved to the Sprint column and assigned an owner.
118+
4. A collaborator starts work on the issue:
119+
* The collaborator moves the issue to the In Progress column.
120+
5. The collaborator submits a pull request for the work they've completed:
121+
* The pull request is automatically moved to the In Progress column.
122+
6. The collaborator decides that their work is ready for review:
123+
* The collaborator moves the pull request to the Code Review & QA column.
124+
7. The collaborator's peers have pointed out some changes:
125+
* The collaborator makes the appropriate changes. If the changes are large
126+
enough that additional comments wouldn't be beneficial, the issue should
127+
be moved back to the In Progress column and repeat step 6.
128+
8. The collaborator's peers have determined that the pull request is ready to
129+
be merged:
130+
* The pull request is merged by the collaborator's peers and the issue is
131+
closed.
132+
133+
### Non-collaborator pull request submitted
134+
Note that this flow may be completely incorrect and should be used as a general
135+
guideline. These should be handled on a case-by-case basis primarily because
136+
everyone who wants to contribute has the opportunity to become a collaborator.
137+
138+
1. The pull request is submitted:
139+
* The issue gets automatically sent to the Backlog column in waffle.
140+
2. In a sprint meeting, a collaborator decides to work on the issue:
141+
* The issue is moved to the Sprint column and assigned an owner.
142+
3. The collaborator starts work on the issue:
143+
* The collaborator moves the issue to the Code Review & QA column.
144+
4. Questions and comments are made by the collaborator:
145+
* The pull request submitter makes the appropriate changes.
146+
5. The collaborator determines that the pull request is ready to be merged:
147+
* The pull request is merged by the collaborator.
148+
149+
150+
References
151+
-----------
152+
* https://robinpowered.com/blog/best-practice-system-for-organizing-and-tagging-github-issues/
153+
* https://www.zenhub.io/blog/how-the-zenhub-team-uses-zenhub-boards-on-github/#zenhubboardsforproductdevelopment

0 commit comments

Comments
 (0)