GitHub issues have historically provided a simple yet powerful way to track work in your GitHub repositories. Each issue includes a description, assignee(s), and a timeline with a comment thread and automatically-generated references to related issues and PRs. Issues can be categorized using labels, and the issues list can be searched or filtered in many ways.
But as projects get larger and more complex, working with issues also has its challenges.
- How to turn large "Epic" issues into smaller issues?
- How to prioritize and organize issues into iterations?
- How to track issues across multiple repositories?
- How best to incorporate community contributions and other feedback?
GitHub has incrementally tried to address some of these challenges.
Task lists add convenient checkboxes to markdown lists in issue descriptions.
Milestones provide a simple way to collect and prioritize issues within a repo.
Projects started as single-repo kanban boards, with issues or notes moving vertically or sideways. They later acquired cross-repo and limited automation capabilities.
Issue templates help contributors to include specific information in an issue.
With their Issues announcement in June, GitHub signalled a less-incremental approach.
The announcement included two parts
- A powerful new way to create and group issues into projects.
- Ways to grow from ideas expressed as text, into collections of issues.
Project tables are spreadsheet-like views where each row is a real or draft issue.
Rows (issues) can be grouped by field value. This includes custom fields whose values are maintained in the project instead of on issues in a repo. Maintaining custom field data inside projects is key to their power.
Rather than polluting your issues with all possible categories of tags, new categories can be scoped inside a project.
Since Beta Projects also support kanban views, I expect them to replace the existing Projects once they reach feature parity.
Auto-creating issues from task lists makes it easier to break down "epic" issues into smaller sub-issues. The task list item is checked off when the issue is resolved, and the child-issue links to the parent-issue with the task list.
This makes task lists and project tables two convenient ways to brainstorm ideas, and break them down into smaller issues.
The GitHub public roadmap features a planning view specific to issues.
A number of informative talks at the recent GitHub Universe 2021 also provided hints about what the team is planning.
Remember that the new projects and issues features are still in Beta.