Changelog Writing
5 exercises — Practice writing changelogs that communicate user value: translating technical fixes, feature announcements, breaking change notices, and adopting Keep a Changelog format.
0 / 5 completed
Quick reference: Changelog writing principles
- Bug fixes — describe user-observable behavior, not internal error names
- Features — what users can now do + capabilities + docs link
- Breaking changes — ⚠️ + date + migration guide link (mandatory)
- Categories — Added / Fixed / Changed / Security / Deprecated / Removed
1 / 5
A changelog entry reads: "Fixed bug where null pointer exception occurred in UserService when processing empty payloads." How should this be rewritten for a public changelog?
Changelog entries should describe user-observable behavior, not internal implementation details.
Translation layers:
• "NullPointerException" → "crash" or "error"
• "UserService" → doesn't matter to users
• "empty payloads" → "all fields left blank"
The user-facing rewrite tells users:
1. What type of entry this is ("Fixed")
2. What happened from their perspective ("app crashed")
3. When it happened ("when submitting a form with all fields blank")
Option B is close but slightly more verbose ("submitting a form with no required fields filled in" = more words than needed).
Option C ✓ — same information, tighter language.
Key vocabulary:
• User-observable behavior — what the user sees or experiences, not internal system state
• Changelog entry types — Added, Fixed, Changed, Deprecated, Removed, Security
• Technical-to-plain translation — converting internal error names to user-facing descriptions
• Keep a Changelog — the widely adopted changelog format standard (keepachangelog.com)
Translation layers:
• "NullPointerException" → "crash" or "error"
• "UserService" → doesn't matter to users
• "empty payloads" → "all fields left blank"
The user-facing rewrite tells users:
1. What type of entry this is ("Fixed")
2. What happened from their perspective ("app crashed")
3. When it happened ("when submitting a form with all fields blank")
Option B is close but slightly more verbose ("submitting a form with no required fields filled in" = more words than needed).
Option C ✓ — same information, tighter language.
Key vocabulary:
• User-observable behavior — what the user sees or experiences, not internal system state
• Changelog entry types — Added, Fixed, Changed, Deprecated, Removed, Security
• Technical-to-plain translation — converting internal error names to user-facing descriptions
• Keep a Changelog — the widely adopted changelog format standard (keepachangelog.com)