This document describes the recommended implementation of using GitHub to manage our group's research projects.
We are using GitHub to track project progress, items we need to finish and discuss, and to give structure to our meetings. This approach is similar in nature to using Trello with a Kanban board configuration. We use this over Trello because of our success with using GitHub in our code and controls development and to minimize the number of different tools we have going.
We have two types of issues: todo
issues and roadmap
issues. We set up the repositories to be pre-loaded with templates for each of these issues.
todo
issues:
- One GitHub issue == one
todo
item; see this example to do issue - The template prompts the user to provide information in the following fields:
Abstract
,Context
, andApproach
. Populating these fields is optional, but encouraged. - Either make these issues small enough in scope that they can be reasonably completed within one week OR make the issue be a checklist of smaller
todo
under theApproach
heading, see this example - When you need to quickly record that something needs to get done, but don’t have time to properly articulate the issue: get that issue created with a partial description. And then, later, come back and explain it.
- These issues have the label
todo
applied to them.
roadmap
issues:
- These issues describe required tasks that correspond to a project statement of work and are timebound in nature, meaning they must adhere to a schedule.
- The template prompts the user to paste-in the exact text from the statement of work and then to break up the work up a list of
todo
issues. - The user should indicate the start/stop dates of the scheduled task.
- Usually these issues are created once at the start of a project, with due dates revised if the project timeline is revised.
- These issues have the label
roadmap
applied to them.
To close an todo
issue, leave a comment explaining how the issue has been completed and where a person would go to see the result. Depending on the nature of the issue, indicate where the completed work is by presenting your work in the issue for us to discuss or linking to a PR or code you added to the repo, attaching a picture or screenshot, or linking to a file in Google drive.
Did finishing an issue result in something of archival value? The issue should not be the only place that you store the result. I.e., add it to the repo. Or place it in Google Drive. Or... something else that is more permanent than the issue.
Each research project being organized in GitHub will have one GitHub Project. The project will have status
, Start date
, and Due date
fields that can be populated on all issues. GitHub Workflows will be used to facilitate east of project management. The Project will consist of two key views: Roadmap
and Board
, which are now described in conjunction with how they make use of the issue fields and Workflows.
The goal of this view is to provide a project management perspective on project timeline. It is meant to facilitate the team checking in on the critical milestones and obtain a quick glimpse into whether the project is on track. An example roadmap view can be found here (select a date in October 2023 to view the issues).
This view is configured as GitHub's Roadmap
layout and appplies the filter label:roadmap
so that it only shows roadmap
issues. The layout's Date fields
are configured for the Start date
and Due date
fields of the roadmap
issue (note that these fields are only used on roadmap
issues; they are not used on todo
issues).
With this configuration, the roadmap
issues are mapped out on a timeline. At team meetings, members can easily click on each of the issues to see the list of todo
issues that need to be completed (and whether or not they are completed).
The goal of this view is to provide a modified Kanban style board to check in on todo
issues. This view is where researchers will spend most of their time, checking in and updating on project progress. It is meant to quickly show what each team member is focusing on this week, what work has been completed, and what work remains. The project team will talk through this board at each check in meeting. An example board view can be found here.
The view is configured as GitHub's Board
layout and applies the filter -label:roadmap
. It is set up with six categories that todo
issues (and PRs) are placed within to indicate their status, from left to right:
>1 Month
: issues where work is scheduled to start over one month awayNext Month
: issues where work is scheduled to start sometime within the next monthNext
: issues where work should start as soon as possibleIn Progress
: issues where work is currently in progressHold
: issues where progress is blocked; e.g., waiting for parts or another researcher to answer a questionDone
: isses that have been completed and should be discussed at the next check in meeting (once these items have been discussed, the team archives them and they disappear from the board).
Project Workflow automation is set up to automatically add each new issue (and PR) to the Next
status and to move closed issues (and PRs) to the Done
status. Researchers are expected to manually drag issues across the board to the other categories based on their current progress.
- Graduate researchers should be hands-on and active with the
todo
issues: create, edit, updat, comment, re-organize--make them make sense for you and what you are working on. - Continually update the Project
Board
to make sure each issue is in the correct status category. Issues move left to right across the board--future plans to completed. - Don't work on too many things at once! Keep your
In Progress
andNext
categories focused with only a manageable number of issues. - Interlink items on GitHub to provide context. Sometimes all that is needed in the
Context
field is a link to another issue- Link PRs to issues
- Link issues to issues
- You can even link to items across different repositories within the group account, i.e.,
Severson-Group/RepoWithIssue#32
- Tag people when you want to bring them into a discussion, i.e.,
@elsevers, what do you think?
- In a typical research week, try to complete at least one
todo
issue. If you are having trouble doing this, it probably means the issue is too big and needs to be broken up into smaller issues. - Who is responsible for breaking issues up into smaller issues? The researcher it is assigned to!
- Keep the original issue, but modify the
Approach
section to be a list of smallertodo
issues
- Keep the original issue, but modify the
- Keep an active research dialog going on the
todo
issues. Some helpful examples can be found here, here, and here- Aren't sure what to do with an issue? Indicate that in the comments. Get help and revise the issue to make it clear what to do.
- Make some exciting progress with a
todo
issue? Add this info to the comments. - Are you stuck and need help with a
todo
issue? Document your problems in the comments.
Check in meetings are run by reviewing the Board View
going right to left. Start by going through the items wih a status of Done
, and either archive or re-open each item here. Then move to the items that have a Hold
status, then In Progress
, Next
, and so on.
To quickly set up a new repository using this system,
- Use the
Research-Repo-Template
repository as a template (selectResearch-Repo-Template
from theRepository template
dropdown box when creating a new repo) and - In the new repo, turn on branch protection rules for
main
by going to settings ->Branches
->Add rule
->Branch name pattern
set tomain
and checkRequire a pull request before merging
,Dismiss stale...
,Require... codeowners
. - Create a new project from
[TEMPLATE] Research Project
, by navigating here and clickingUse this template
in the top right corner. - On the new project, modify the Workflows by enabling
Auto-add to project