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