github.com/a4a881d4/docker@v1.9.0-rc2/docs/project/find-an-issue.md (about) 1 <!--[metadata]> 2 +++ 3 title = "Find and claim an issue" 4 description = "Basic workflow for Docker contributions" 5 keywords = ["contribute, issue, review, workflow, beginner, expert, squash, commit"] 6 [menu.main] 7 parent = "smn_contribute" 8 weight=2 9 +++ 10 <![end-metadata]--> 11 12 <style type="text/css"> 13 14 .gh-label { 15 display: inline-block; 16 padding: 3px 4px; 17 font-size: 12px; 18 font-weight: bold; 19 line-height: 1; 20 color: #fff; 21 border-radius: 2px; 22 box-shadow: inset 0 -1px 0 rgba(0,0,0,0.12); 23 } 24 .gh-label.beginner { background-color: #B5E0B5; color: #333333; } 25 .gh-label.expert { background-color: #599898; color: #ffffff; } 26 .gh-label.master { background-color: #306481; color: #ffffff; } 27 .gh-label.novice { background-color: #D6F2AC; color: #333333; } 28 .gh-label.proficient { background-color: #8DC7A9; color: #333333; } 29 .gh-label.bug { background-color: #FF9DA4; color: #333333; } 30 .gh-label.cleanup { background-color: #FFB7B3; color: #333333; } 31 .gh-label.content { background-color: #CDD3C2; color: #333333; } 32 .gh-label.feature { background-color: #B7BEB7; color: #333333; } 33 .gh-label.graphics { background-color: #E1EFCB; color: #333333; } 34 .gh-label.improvement { background-color: #EBD2BB; color: #333333; } 35 .gh-label.proposal { background-color: #FFD9C0; color: #333333; } 36 .gh-label.question { background-color: #EEF1D1; color: #333333; } 37 .gh-label.usecase { background-color: #F0E4C2; color: #333333; } 38 .gh-label.writing { background-color: #B5E9D5; color: #333333; } 39 40 </style> 41 42 43 # Find and claim an issue 44 45 On this page, you choose the issue you want to work on. As a contributor, you can work 46 on whatever you want. If you are new to contributing, you should start by 47 working with our known issues. 48 49 ## Understand the issue types 50 51 An existing issue is something reported by a Docker user. As issues come in, 52 our maintainers triage them. Triage is its own topic. For now, it is important 53 for you to know that triage includes ranking issues according to difficulty. 54 55 Triaged issues have one of these labels: 56 57 <table class="tg"> 58 <thead> 59 <tr> 60 <td class="tg-031e">Label</td> 61 <td class="tg-031e">Experience level guideline</td> 62 </tr> 63 </thead> 64 <tbody> 65 <tr> 66 <td class="tg-031e"><strong class="gh-label beginner">exp/beginner</strong></td> 67 <td class="tg-031e">You have made less than ten contributions in your life time to any open source project.</td> 68 </tr> 69 <tr> 70 <td class="tg-031e"><strong class="gh-label novice">exp/novice</strong></td> 71 <td class="tg-031e">You have made more than ten contributions to an open source project or at least 5 contributions to Docker. </td> 72 </tr> 73 <tr> 74 <td class="tg-031e"><strong class="gh-label proficient">exp/proficient</strong></td> 75 <td class="tg-031e">You have made more than five contributions to Docker which amount to at least 200 code lines or 1000 documentation lines. </td> 76 </tr> 77 <tr> 78 <td class="tg-031e"><strong class="gh-label expert">exp/expert</strong></td> 79 <td class="tg-031e">You have made less than 20 commits to Docker which amount to 500-1000 code lines or 1000-3000 documentation lines. </td> 80 </tr> 81 <tr> 82 <td class="tg-031e"><strong class="gh-label master">exp/master</strong></td> 83 <td class="tg-031e">You have made more than 20 commits to Docker and greater than 1000 code lines or 3000 documentation lines.</td> 84 </tr> 85 </tbody> 86 </table> 87 88 These labels are guidelines. You might have written a whole plugin for Docker in a personal 89 project and never contributed to Docker. With that kind of experience, you could take on an <strong 90 class="gh-label expert">exp/expert</strong> or <strong class="gh-label 91 master">exp/master</strong> level issue. 92 93 ## Claim a beginner or novice issue 94 95 To claim an issue: 96 97 1. Go to the `docker/docker` <a 98 href="https://github.com/docker/docker" target="_blank">repository</a>. 99 100 2. Click the "Issues" link. 101 102 A list of the open issues appears. 103 104  105 106 3. From the "Labels" drop-down, select <strong class="gh-label beginner">exp/beginner</strong>. 107 108 The system filters to show only open <strong class="gh-label beginner">exp/beginner</strong> issues. 109 110 4. Open an issue that interests you. 111 112 The comments on the issues describe the problem and can provide information for a potential 113 solution. 114 115 5. When you find an open issue that both interests you and is unclaimed, add a 116 `#dibs` comment. Make sure that no other user has chosen to work on the issue. 117 118 The project does not permit external contributors to assign issues to themselves. Read 119 the comments to find if a user claimed the issue by leaving a 120 `#dibs` comment on the issue. 121 122 7. Your issue # will be different depending on what you claimed. After a moment, Gordon the Docker 123 bot, changes the issue status to claimed. The following example shows issue #11038. 124 125  126 127 8. Make a note of the issue number; you will need it for later. 128 129 ## Sync your fork and create a new branch 130 131 If you have followed along in this guide, you forked the `docker/docker` 132 repository. Maybe that was an hour ago or a few days ago. In any case, before 133 you start working on your issue, sync your repository with the upstream 134 `docker/docker` master. Syncing ensures your repository has the latest 135 changes. 136 137 To sync your repository: 138 139 1. Open a terminal on your local host. 140 141 2. Change directory to the `docker-fork` root. 142 143 $ cd ~/repos/docker-fork 144 145 3. Checkout the master branch. 146 147 $ git checkout master 148 Switched to branch 'master' 149 Your branch is up-to-date with 'origin/master'. 150 151 Recall that `origin/master` is a branch on your remote GitHub repository. 152 153 4. Make sure you have the upstream remote `docker/docker` by listing them. 154 155 $ git remote -v 156 origin https://github.com/moxiegirl/docker.git (fetch) 157 origin https://github.com/moxiegirl/docker.git (push) 158 upstream https://github.com/docker/docker.git (fetch) 159 upstream https://github.com/docker/docker.git (push) 160 161 If the `upstream` is missing, add it. 162 163 $ git remote add upstream https://github.com/docker/docker.git 164 165 5. Fetch all the changes from the `upstream master` branch. 166 167 $ git fetch upstream master 168 remote: Counting objects: 141, done. 169 remote: Compressing objects: 100% (29/29), done. 170 remote: Total 141 (delta 52), reused 46 (delta 46), pack-reused 66 171 Receiving objects: 100% (141/141), 112.43 KiB | 0 bytes/s, done. 172 Resolving deltas: 100% (79/79), done. 173 From github.com:docker/docker 174 * branch master -> FETCH_HEAD 175 176 This command says get all the changes from the `master` branch belonging to 177 the `upstream` remote. 178 179 7. Rebase your local master with the `upstream/master`. 180 181 $ git rebase upstream/master 182 First, rewinding head to replay your work on top of it... 183 Fast-forwarded master to upstream/master. 184 185 This command applies all the commits from the upstream master to your local 186 master. 187 188 8. Check the status of your local branch. 189 190 $ git status 191 On branch master 192 Your branch is ahead of 'origin/master' by 38 commits. 193 (use "git push" to publish your local commits) 194 nothing to commit, working directory clean 195 196 Your local repository now has all the changes from the `upstream` remote. You 197 need to push the changes to your own remote fork which is `origin master`. 198 199 9. Push the rebased master to `origin master`. 200 201 $ git push origin master 202 Username for 'https://github.com': moxiegirl 203 Password for 'https://moxiegirl@github.com': 204 Counting objects: 223, done. 205 Compressing objects: 100% (38/38), done. 206 Writing objects: 100% (69/69), 8.76 KiB | 0 bytes/s, done. 207 Total 69 (delta 53), reused 47 (delta 31) 208 To https://github.com/moxiegirl/docker.git 209 8e107a9..5035fa1 master -> master 210 211 9. Create a new feature branch to work on your issue. 212 213 Your branch name should have the format `XXXX-descriptive` where `XXXX` is 214 the issue number you are working on. For example: 215 216 $ git checkout -b 11038-fix-rhel-link 217 Switched to a new branch '11038-fix-rhel-link' 218 219 Your branch should be up-to-date with the `upstream/master`. Why? Because you 220 branched off a freshly synced master. Let's check this anyway in the next 221 step. 222 223 9. Rebase your branch from upstream/master. 224 225 $ git rebase upstream/master 226 Current branch 11038-fix-rhel-link is up to date. 227 228 At this point, your local branch, your remote repository, and the Docker 229 repository all have identical code. You are ready to make changes for your 230 issue. 231 232 233 ## Where to go next 234 235 At this point, you know what you want to work on and you have a branch to do 236 your work in. Go onto the next section to learn [how to work on your 237 changes](work-issue.md).