4.1. Issues, Pull Requests, and Discussions
GitHub gives collaboration three distinct surfaces, and picking the right one for a given conversation is exactly the kind of judgment call the exam likes to test.
💡 First Principle: Each of GitHub's three collaboration surfaces exists for a different shape of conversation. An issue tracks a discrete unit of work — a bug, a task, a request — that's expected to eventually close. A pull request proposes a specific code change and exists to be reviewed and merged (or closed). A discussion is open-ended — questions, ideas, announcements — with no expectation that it resolves to a single outcome the way an issue or PR does.
| Issue | Pull Request | Discussion | |
|---|---|---|---|
| Tracks | A unit of work | A proposed code change | An open-ended conversation |
| Contains a diff? | No | Yes | No |
| Expected outcome | Closed | Merged or closed | Ongoing or marked answered |
| Typical use | Bug report, task | Code review | Q&A, ideas, announcements |
⚠️ Exam Trap: A pull request is not just "an issue with code attached." It carries an actual diff against the target branch and drives the review/merge workflow — issues and discussions never do either of those things.
Reflection Question: A contributor wants to propose a design change before writing any code, just to get early feedback. Which of the three surfaces fits that conversation best, and why not the other two?