Issues and Keeping Track of Work
Topic 37

Issues and Keeping Track of Work

Collaboration

An issue is a written note that something should change: a bug, an idea, a question. It costs a minute, it survives the conversation that produced it, and on GitHub it is where most real work starts.

It is the same argument as commit messages, one level up. A decision that lives only in someone's memory is a decision nobody can find later.

What goes in one

For a bug, four things: a title someone can scan, what you expected, what actually happened, and how to see it yourself. That last one is the difference between a report and a wish.

An issue Theo can act on
Title: Sightings list unreadable on a phone

Expected: the list of recent sightings fits the screen width.
Actual: the dates run off the right edge and get cut off.
To see it: open the home page on a phone, or make the browser
window narrower than about 400px. Screenshot attached.

For an idea or a question, less structure is needed. State the thing, say why it would matter, and stop.

Organizing them

Labels sort issues by kind: bug, idea, documentation. The label good first issue is a convention across open source, marking work suitable for a newcomer — and it is where Chapter 9 suggests you start.

Assignees say who is doing it, which mostly prevents two people doing the same thing.

That is enough structure for a small project. GitHub offers milestones, project boards and more; they are useful at scale and pure overhead for two people and a club website.

Connecting an issue to the work

Mention an issue's number anywhere on GitHub and it becomes a link:

A commit message that references the issue
git commit -m "Wrap the sightings list on narrow screens (#12)"

Better still, write Closes #12 in the pull request description. When that pull request merges into the default branch, GitHub closes the issue automatically — the work and the reason it existed are linked permanently, without anybody remembering to tidy up.

From a report to a closed issue, in one connected line
Issue #12the sightings list on phones
Branchmobile-sightings-layout
Pull request"Closes #12"
Mergeissue closes itself

Issues as conversation

Questions and decisions live in the issue, which means the reason behind a change is findable a year later by someone who was not there when it was made.

Between the issue, the pull request, and the commit messages, a well-run project answers "why is this like this" three times over. A minute of record-keeping buys an answer a year later, which is the only reason any of it is worth doing.

On your own project

Opening issues on a project only you touch feels odd for about a week, and then becomes obviously useful.

A solo project is exactly where written notes are worth most, because nobody else remembers what you meant and future-you is a stranger with no context. It also means the ideas you have on a Tuesday and cannot act on until Saturday are somewhere other than a text file called todo.

Common Confusions
  • "Issues are only for bugs." Ideas, questions and tasks all live there. Labels are what distinguish them.
  • "Closing an issue deletes it." It stays, searchable, with its whole discussion attached. Closed means resolved, not gone.
  • "I should not open issues on my own project." A solo project is where written notes are worth most, because nothing else remembers what you meant.
  • "Writing #12 in a commit closes the issue." A mention links the two. Closing needs a keyword like Closes #12, and it happens when the pull request merges.
Why It Matters
  • Issues are how open source communicates, and reading them well is what makes Chapter 9's first contribution possible.
  • The issue-to-pull-request link connects "why we did this" to "here is what we did", which is the completed version of the record commit messages start.
  • A bug report with steps to reproduce is one of the most useful things a beginner can contribute to any project, and it needs no code at all.

Knowledge Check

What separates a useful bug report from an unhelpful one?

  • Steps that let somebody else reproduce the problem for themselves
  • A confident guess about which part of the code is causing the problem
  • A severity rating so the team knows how urgently it should be handled
  • A screenshot, since a picture makes the problem obvious without explanation

How do you make merging a pull request close an issue automatically?

  • Write a keyword such as Closes #12 in the pull request description
  • Mention the issue number anywhere in one of the branch's commit messages
  • Assign the issue to yourself before you open the pull request for the work
  • Give the branch the same name as the issue number in the project

What happens to an issue when it is closed?

  • It stays where it is, searchable, with its whole discussion attached
  • It is deleted after a short period unless somebody reopens it first
  • It is archived and can only be read by people with write access
  • It is converted into a pull request so the change can be tracked

Why does this topic recommend opening issues even on a solo project?

  • Because future-you has no memory at all of what present-you meant
  • Because GitHub requires at least one issue before a repository can be public
  • Because issues make the contribution graph on your profile look more active
  • Because a pull request cannot be opened unless an issue exists first

You got correct