Issues and Keeping Track of Work
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.
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:
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.
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.
- "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
#12in a commit closes the issue." A mention links the two. Closing needs a keyword likeCloses #12, and it happens when the pull request merges.
- 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 #12in 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