vignettes/pm.Rmd
pm.Rmd
GitHub, though primarily a code repository, also has some lightweight project management features.
This document includes some opinionated suggestions for using GitHub as our project management tool.
The project management on GitHub has some advantages, that may lend itself well to our remote and asynchronous work. It encourages you to think of a project in small chunks, each of which can (or could) be definitively completed.
But project management often degenerates into unproductive “work about work”, so skepticism is in order. You should never feel obligated to use a tool that does not help you. These suggestions are thus merely focal points for how to use GitHub together, if you find it useful. You can also use it partially, or only passively.
We held a related webinar on this topic on 2020-03-06.
You can find the recorded version at:
\\ug-sub-fs02.sub.uni-goettingen.de\share\metar
(requires VPN access)owncloud.gwdg.de\metar
(requires owncloud access)To get started right away:
held@sub.uni-goettingen.de
.GitHub has extensive documentation about its project management features in different formats:
You can learn how to write GitHub-Flavored Markdown (GFM), the (very simple) markup language for GitHub issues here:
The rest of this document lays out some conventions of how we might be using GitHub project management.
GitHub knows individual and organisation accounts. Our organisation is https://github.com/subugoe, which we share with everyone using GitHub at SUB.
Inside the org account, there are (nested) teams.
Teams make it easier to @
-mention or manage privileges for a group of people at the same time.
Relevant for us are:
On the team pages, you can find related repositories, project boards (more on that below) and a discussion page (which we’re probably not using).
You can always add more (nested) teams, or add repos to existing teams.
Learn more about organisations and teams here.
Project management on GitHub is organised around “issues” (otherwise known as “tickets”). Issues are relatively small chunks of work, ideas or problems, such as “add user login”.
Issues always belong to repos (short for repositories) which is where a particular piece of software is developed. In our case, some project or publication may reside in a repository, or more. You can also use GitHub issues on GitHub.com without ever touching the code in the repos. Issues should always be opened in the most appropriate repo, though they can also easily be moved.
@-
mention another username or team.Here are some more suggestions for how to write good issues.
In addition to the default GitHub issue labels, we can use these (they’ll look prettier on GitHub.com):
name | colour | description |
---|---|---|
needs-votes :thumbsup: | bfe9fc | Please upvote, if this is worthwhile |
placeholder :arrow_up: | cfffb2 | Work lives in another org |
You can set these up in your own repo by once running use_wag_labels()
.
needs-votes
is intended to gauge interest / worthiness of an idea before committing a lot of time to build it out.
If you have such an idea, just add the needs-votes
label.
You can see all current issues tagged needs-votes
with the search query label:needs-votes org:subugoe
using GitHub’s advanced search.
You can also get an overview over all issues at https://github.com/issues.
If you like an idea, react to it using one of the reaction emojis or comment on it.
We may also discuss these in person during weeklies or other meetings.
placeholder
is for work, which happens in, and is tracked in repositories outside of the subugoe
org, such as an ropensci package.
You might still want to track that work in a placeholder issue.
To add more special labels, request it in an issue to this package or create a pull request.
Issues should usually go inside the repo to which they pertain, and from which they can (or could) be closed.
There are some exceptions to this rule for issues without a clear place:
If you want to, you can also go all-in and enter project timetables and deliverables to GitHub with all the bells and whistles, as I have here done for the hybrid open access dashboard project.
GitHub also offers Kanban-style boards, which are confusingly known as “projects”.
Projects are a view on existing issues.
Counter to the issues themselves, projects can span issues from several repositories, though not from different orgs.
Projects can be a good way to:
Projects are also “automated”; the issue cards move around automatically based on their status.
There is so far only one project for us: https://github.com/orgs/subugoe/projects/2 The goal is to give everyone (if they want to know) some idea of what everyone else (if they want to share) is working on.
You can learn about them here: