|
| 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