EZEZ Changelog

version 1.0.0

This work is based on keepachangelog.com, created by Olivier Lacan and MIT licensed.

What is a changelog?

A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of a project.

Why keep a changelog?

To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project.

Who needs a changelog?

People do. Whether consumers or developers, the end users of software are human beings who care about what's in the software. When the software changes, people want to know why and how.

How do I make a good changelog?

Changelogs are for humans, not machines.

Changelogs are useful for both end products (like applications, where end user can be a non-tech person) and libraries (where end user is a developer). However, changelog should not state internal changes that are not relevant to the end user, even if they are a developer. Rewriting a class, refactoring a function, changing a private variable name, adding a unit test is something you could state in a commit message, but not in a changelog.

Guiding Principles

Types of changes

How can I reduce the effort required to maintain a changelog?

Add an Unreleased section at the top to track upcoming changes.

This serves two purposes:

What about yanked releases?

Yanked releases are versions that had to be pulled because of a serious bug or security issue. Often these versions don't even appear in change logs. They should. This is how you should display them: ## [0.0.5] - 2014-12-13 [YANKED] The [YANKED] tag is loud for a reason. It's important for people to notice it. Since it's surrounded by brackets it's also easier to parse programmatically.

Can changelogs be bad?

See Can changelogs be bad? section on keepachangelog.com.

FAQ

See FAQ section on keepachangelog.com.

Differences from keep a changelog

Introduced differences are based on my personal preferences and experience. They are opinionated just like the original (see the last FAQ entry of the original).

License

MIT