Project management using GitHub#

Topic learning objectives#

By the end of this topic, students should be able to:

  1. Use GitHub issues to label and assign tasks

  2. Use GitHub project boards to manage projects

  3. Use GitHub milestones to create and track project milestones and goals

Project boards#

Example of a physical Kanban board:

https://miro.medium.com/max/1300/1*9xfpL1ercY-JA7BzEiLpjA.jpeg

Source: https://medium.com/@mli/lets-get-physical-task-boards-f9d08383e667

Example of a digital project board from GitHub:

Reading: About project boards - GitHub Help

../../_images/github_kanban.png

Source: CodeDoesGood/org-website

Why use project boards for collaborative software projects?#

  • Transparency: everyone knows what everyone is doing

  • Motivation: emphasis on task completion

  • Flexibility: board columns and tasks are customized to each project

Exercise: Getting to know GitHub project boards#

We are going to each create our own project board for our MDS homework. I have set-up a template GitHub repository for you so that you can easily populate it with relevant issues for your homework this block. You will use these issues to create your MDS homework project board.

Steps:#

  1. Click the green “Use this template” button from this GitHub repository to obtain a copy of it for yourself (do not fork it).

  2. Click on the Actions tab, and then click on the workflow .github/workflows/create_issues.yml. You then should see a “Run workflow” button with a drop down menu, from that menu select “Run workflow”.

  3. Wait patiently while GitHub Actions to create 24 issues for you in your copy of this repository.

  4. Click on the Projects tab, and then click “Link a project” and then select “Create a new Project”. Select “Board” as the template option and give the project a a name.

  5. Use the issues in the repo to set-up a project board for the next two weeks (or more) of your DSCI 310 homework. For each issue you add to the project, assign it to yourself and add a label of “group-work” or “individual-work”.

Additional Resources:

Relevance to course project:#

  • You will be expected to create a project board for each of your groups projects and update it each milestone (at a minimum)

  • We expect that each issue should have at least one person assigned to it

Milestones#

  • Group related issues together that are needed to hit a given target (e.g., new release version of a software package)

  • Can assign a due date to a milestone

  • From the milestone page you can see list of statistics that are relevant to each milestone set in that repository

Reading: About milestones - GitHub Help

Example of the readr package milestones:

../../_images/readr-milestones.png

Source: https://github.com/tidyverse/readr/milestones

Exercise: Getting to know GitHub milestones#

We are going to practice creating milestones and associating issues with them. To do this we will continue working with the same repository that you just created a project board for.

Steps:#

  1. Click on the Issues tab, and then click on “Milestones”.

  2. Click “New milestone” and name it “month 1” and set the due date to be the end of January. Click “Create milestone”.

  3. Go to the Issues tab, and for each issue that should be associated with the month 1 milestone (i.e., things due before the end of January), click on their checkbox. Then click “Milestone” and select “month 1”

  4. Once you are done, go back to the Milestones page to view what the month 1 milestone looks like.

  5. If you finish early, do this for month 2.

Relevance to course project:#

  • You will be expected to create a milestone on each of your project repositories for each course assigned milestone. You must link the relevant issues needed to complete that milestone to it on GitHub.