4 exercises — Keep a Changelog entries, major-version release notes, automated changelog troubleshooting, and documenting silent behavioral changes.
0 / 9 completed
1 / 9
You're writing the CHANGELOG.md entry for a new patch release, `v2.4.1`, that fixes a bug where the CLI crashed on Windows paths with spaces. Which entry follows Keep a Changelog conventions best?
Option B follows the Keep a Changelog format correctly:
Structure: 1. Version + date header — `## [2.4.1] - 2026-07-10` — machine-parseable, links to a git tag/diff in most tooling 2. Category heading — `### Fixed` — Keep a Changelog defines six standard categories: Added, Changed, Deprecated, Removed, Fixed, Security. Using the correct one lets readers scan for what matters to them (e.g. someone scanning only for Security entries) 3. Specific bullet — names the exact symptom (`ENOENT` crash), the trigger condition (Windows paths with spaces), the issue number (#412) for full context, and the fix mechanism (paths are now quoted) — a reader can identify in one line whether this release affects them
Why "bug fixes" (vague) fails readers: A user who was NOT affected by this bug has no way to know whether they need to upgrade. A user who WAS affected can't confirm their issue is actually fixed without reading the source diff. Specific changelog entries let users self-triage in seconds.
Why "various fixes and improvements" is the most common changelog anti-pattern: It provides zero information. Users cannot decide urgency, cannot search for their specific bug, and cannot verify the fix addresses their issue. This phrase should almost never appear in a well-maintained CHANGELOG.md.
The reader-first principle: A changelog entry should answer: what changed, why it matters to me, and (for bugs) how do I know if I was affected. "Thanks to everyone" is nice but belongs in release notes prose, not as a substitute for the technical description.
2 / 9
You're writing GitHub release notes for `v3.0.0`, a major version with breaking changes to the public API. Which opening paragraph is most appropriate?
Option B is the correct structure for major-version release notes with breaking changes:
What makes it effective: 1. Leads with the risk level — "major release with breaking changes" stated immediately, not buried — respects that some readers will stop reading after this sentence and go straight to the migration guide 2. Directive, not passive — "Read the migration guide before upgrading" (bolded) — tells the reader exactly what to do, not just that a guide exists 3. Names the headline breaking change specifically — `Client.connect()` → `Client.createConnection()` — with the deprecation history (#201, since v2.5) which shows this wasn't a surprise change, and the new capability gained (connection pooling) which explains the "why" 4. Scopes the migration effort — "most users only need to rename the method call" — this single sentence answers the reader's most urgent question ("how much work is this for me?") before they even open the migration guide 5. Flags the exception precisely — "small number of edge cases involving custom timeout handling" — tells affected users exactly what to look for, without forcing everyone to read every edge case
Why "upgrade at your own risk" fails: It's alarming without being informative — it raises anxiety but gives no actionable guidance. Good breaking-change communication reduces uncertainty; this increases it.
Why "many exciting features, we hope you enjoy it" is inappropriate for a breaking release: Marketing-style enthusiasm buries the operationally important information (breaking changes) under vague positive language. For infrastructure and library releases especially, engineers reading release notes want risk information first, celebration second (if at all).
3 / 9
A contributor asks in your project's Discord: "Why isn't my fix in the changelog for v1.8.0? I merged it two weeks ago." Your project generates changelogs automatically from Conventional Commit messages. What is the most likely, and most helpful, response?
Option B is the correct, technically grounded response to a changelog generation question:
Why this response works: 1. Asks for the specific PR — rather than guessing, gathers the exact data needed to diagnose the issue 2. Explains the actual mechanism — Conventional-Commit-based changelog generators (e.g. `standard-version`, `release-please`, `semantic-release`) parse commit prefixes and often deliberately exclude non-user-facing categories like `chore:`, `test:`, `ci:` from the public changelog — this is a design choice, not a bug, and is worth explaining so the contributor understands the system rather than just getting a fix 3. Names the two most common causes — a squash-merge that lost the original conventional prefix, or a category intentionally excluded — covers the vast majority of real cases 4. Commits to a concrete next step — checking the history and either fixing the changelog or filing a tooling bug — gives the contributor a clear resolution path rather than leaving them uncertain
Why this matters for contributor experience: A missing changelog entry can feel like an erasure of credit for real work. Explaining the mechanism (rather than a vague "weird, I'll look into it") helps the contributor understand how to format future commits correctly, and reassures them the omission wasn't personal or arbitrary.
Automated changelog gotcha worth knowing: Squash-and-merge on GitHub uses the PR title as the commit message by default — so if the PR title doesn't follow Conventional Commits (even if individual commits inside the PR did), the changelog generator often misses it entirely. This is the single most common cause of "my fix isn't in the changelog" complaints.
4 / 9
You maintain a small open-source library and are about to release `v1.5.0`, which adds a new feature but also silently changes a default timeout value from 30s to 10s (not technically a breaking API change, but a behavioral change that could affect existing users). How should you document this in the release notes?
Option B is the correct approach to documenting a silent behavioral change:
Why "not technically breaking" isn't the right bar: Semantic versioning is about API contracts, but changelogs exist to serve users, not just satisfy semver rules. A default value change that alters runtime behavior (timeouts, retry counts, batch sizes, logging verbosity) can silently break production systems even without an API signature change — e.g. requests to a slow legacy endpoint start failing after upgrade with no code change on the user's side.
Structure of the correct entry: 1. Bold, specific headline — "Default request timeout reduced from 30s to 10s" — impossible to miss when scanning 2. Rationale — "to better match typical API response times" — explains why, which builds trust that the change was deliberate 3. Actionable mitigation — "set `timeout: 30000` explicitly" — gives affected users the exact code change to preserve old behavior 4. Explicit label — "this is a behavioral change" — names the category clearly even though it doesn't fit neatly into semver's "breaking" bucket, so readers calibrate risk correctly
Why burying it in a footnote is harmful: Users scan changelogs top-to-bottom expecting the most important information first (this is why Keep a Changelog groups by category, not chronology). A footnote treatment for something that can cause production incidents is a trust-eroding surprise when discovered later via a support ticket instead of the release notes.
Why bumping to a major version alone is insufficient: Even if you do decide the change warrants a major bump (a reasonable, more conservative choice for genuinely risky behavioral changes), the version number alone tells users "something changed" but not what or how to adapt — the prose explanation is still required.
5 / 9
Sarah from the Infrastructure team just posted this message in Slack: 'Hey @john_doe, we've got a potential issue with the new authentication service. Users are reporting intermittent timeouts when accessing the API. Can you investigate?' Which of the following is the most effective way for you to respond, focusing on clear communication about the release?
The best response acknowledges the issue and requests specific information (error logs) to facilitate investigation. Option A is too dismissive, option B lacks context, and options C & D misdirect attention away from the recent release and potential cause. It's crucial to quickly assess if a new release is impacting users.
6 / 9
You're reviewing a pull request for a new feature in the RocketUI component library. The contributor has included this description: 'Added support for dark mode. This utilizes CSS variables to manage color palettes.' Which of the following best describes what this PR description is trying to communicate?
The description correctly frames the PR's purpose—the implementation of dark mode. Options A and B are too generic, while option D highlights a lack of detail which is a common issue with PR descriptions. A good release announcement should clearly state what was *done* in the change.
7 / 9
David, the project lead, asks you during a standup: 'Can you give me an update on the progress of the Phoenix module? We're aiming for v1.0 release next week.' You've been working on fixing performance bottlenecks. What is the most appropriate way to respond, keeping in mind the goal of transparency and alignment?
Providing a specific update on your progress (optimizing database queries) demonstrates accountability and helps David assess the project's status. Option A is vague, option B lacks detail and feels boastful, while option D deflects responsibility and doesn't provide actionable information.
8 / 9
Your team has just released version v4.2.0 of the DataPipeline service. The release notes state: 'Improved data validation and error handling.' Which statement best describes the potential impact of this change on existing consumers of the API?
This release note clearly indicates an improvement in data validation. This *does* imply that consumers might need to adjust their code or configurations to align with the new rules. Option A is overly optimistic, option B correctly identifies a potential impact, and options C & D are inaccurate.
9 / 9
You're drafting release notes for the StreamSync library's v1.3.0 release. It includes a significant refactoring of the message processing pipeline. Which sentence is most appropriate to include in the 'Known Issues' section?
Transparency is key when documenting known issues. Acknowledging potential latency during peak periods allows consumers to proactively mitigate the impact. Options B & C are misleading as they imply a complete absence of problems, while option D falsely claims all previous issues have been resolved.
What will I practise in "Writing Release Announcements"?
This module focuses on Open Source Contribution — real workplace phrasing you'll use on the job. It contains 9 scenario-based multiple-choice questions with instant feedback.
Is this exercise free to use?
Yes. Every exercise on CoderSlingo, including this one, is free to use with no account or sign-up required.
How many questions does this exercise have?
This module includes 9 questions. Each one gives an immediate right/wrong result plus a full explanation of the correct phrasing.
What happens if I answer a question incorrectly?
You'll see the correct answer highlighted straight away, along with a plain-English explanation of why it's right and why the other options don't fit — mistakes are part of the learning here.
Can I retry the exercise if I want a better score?
Yes — use the 'Try again' button on the results screen to reset your score and go through the questions again. There's no limit on attempts.
Who is this Open Source Contribution exercise for?
It's aimed at IT professionals with working English who want to sound more natural and precise around open source contribution — useful whether you're preparing for real conversations at work or just building confidence with the vocabulary.
Do I need an account to track my progress?
No account is needed. Your progress through the exercise is tracked locally in your browser for the current session, and you can replay the module at any time.
How is this different from reading a blog article?
This exercise is an interactive drill that tests and reinforces specific phrasing through multiple-choice questions with instant feedback, while blog articles explain concepts and vocabulary in prose. The two work well together.
Where can I find more Open Source Contribution exercises?
See the Open Source Contribution hub for more modules like this one, or browse the full Exercises page for other IT-English topics.
Can I complete this exercise on my phone?
Yes — every exercise on CoderSlingo is fully responsive and works on phones and tablets, so you can practise anywhere.