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      ![Open issues](images/issue_list.png)
   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      ![Easy issue](images/easy_issue.png)
   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).