Skip to main content

GitHub Projects and Issue Triage Guide

This guide provides a structured overview of how we use GitHub Projects to plan, prioritize, and track work in the pyicub project. It also outlines how to triage issues using standard labels, views, and processes.


1. Introduction to GitHub Projects

GitHub Projects is a planning and tracking system built directly into GitHub. It allows teams to manage tasks using issues, pull requests, labels, priorities, and milestones, all organized through interactive views.

GitHub Projects enables:

  • Visual task tracking through boards and timelines.
  • Issue categorization and prioritization.
  • Assignment of tasks and ownership.
  • Structured planning using milestones and fields.

2. Project Structure

Each project consists of:

  • Items: Issues or pull requests that represent work.
  • Views: Ways to visualize items (Boards, Tables, Roadmaps).
  • Fields: Metadata like Status, Priority, Milestone, Assignee.
  • Automation: Optional rules that move or modify items automatically.

3. Core Views and Their Purpose

View NamePurpose
Status BoardKanban-style flow for daily tracking of tasks.
RoadmapCalendar-based timeline for long-term planning.
Prioritized BacklogSorted list of tasks by priority level.
BugsShows only bug-labeled issues for QA and release prep.
My ItemsTasks assigned to the logged-in user.
In ReviewLists items currently under code review.

4. Field Definitions

FieldPurpose
StatusTracks task progression (Backlog, Ready, In Progress, etc.).
PriorityDenotes urgency (P0, P1, P2).
AssigneeWho is responsible for completing the item.
MilestoneTargeted sprint, release, or date.
EstimateOptional time or effort estimate.

5. Label Definitions

LabelDescription
bugA confirmed malfunction or incorrect behavior.
documentationMissing, unclear, or incorrect documentation.
duplicateAlready tracked by another issue or PR.
enhancementA feature request or usability improvement.
good first issueEntry-level task suitable for new contributors.
help wantedMaintainers welcome external contributions.
invalidNot valid; caused by incorrect usage.
questionUser or contributor request for clarification.
wontfixAcknowledged but not planned for resolution.

6. Triage Process

Triage ensures that issues are categorized, prioritized, and actionable. This is typically done by maintainers on a weekly basis.

Step-by-step Workflow:

  1. Confirm It’s an Issue

    • If it’s a question, label as question.
    • If it lacks enough context, label as invalid or request clarification.
  2. Check for Duplicates

    • Search the Issues tab.
    • Close duplicates and link the existing issue.
  3. Label and Categorize

    • Apply one or more labels (bug, enhancement, etc.).
  4. Assign Priority

    • P0 = urgent/blocker
    • P1 = high-priority, next sprint
    • P2 = low-priority, backlog
  5. Assign and Schedule

    • Assign a team member.
    • Associate the issue with a milestone.
  6. Move in Status Board

    • Backlog: untriaged or new issues.
    • Ready: approved for development.
    • In Progress: active work.
    • In Review: under pull request.
    • Done: resolved/merged.

7. When to Close Issues

An issue can be closed if:

  • The pull request linked to it is merged.
  • It is determined to be invalid or a duplicate.
  • It is accepted as wontfix.

8. Milestones and Roadmap Planning

Milestones group related issues and features under a release goal or sprint cycle. These are reflected visually in the Roadmap view. Each accepted issue should be attached to a milestone.


9. Best Practices

  • Perform triage weekly.
  • Ensure each task has a defined scope, priority, and assignee.
  • Align Roadmap view with actual sprint or delivery timelines.
  • Review and update issue status regularly.
  • Ensure all code changes are linked to issues.