What our version numbers mean
By the end of March we will have reached a milestone: version 1.0.0 of the digital pattern library.
As I write this, we are currently on version 0.22.0. But what exactly do those version numbers mean?
Semantic versioning
Tracking changes in something like the digital pattern library is important. It helps people know what version of the resource they are using. At a glance it can tell them whether something has been fixed, a new feature has been added, or more.
We follow a versioning standard called Semantic Versioning 2.0.0.
Here is a handy graphic to explain it:
As you can see, there are three levels of change:
- Major (a breaking change)
- Minor (a backwards-compatible feature)
- Patch (a backwards-compatible bug fix)
To explain how this works, let’s use the analogy of writing a book.
We begin with version 0.0.0.
The author writes a draft of chapter one. This is a new feature, so he increments the minor version by one: v0.1.0.
Reading through the draft, he spots a couple of typos which he corrects. These are equal to backwards-compatible bug fixes. We are now at v0.1.1.
As new chapters are written, and typos are caught, the minor and patch versions increment accordingly.
Perhaps at version 0.32.4 the author feels his book is now ready to be published.
On publication the version number gets bumped to v1.0.0. This is the first major version of the book.
Any revisions would then affect the version numbers in the same way. Typo fixes would increment the patch version; new chapters would increment the minor version.
Translating the book into French, say, might bump the major version to v2.0.0. This version is now incompatible with the original v1.0.0 which is in English.
Version 3.0.0 might be in German, v4.0.0 in Spanish, etc.
Aiming for DPL v1.0.0
This is like what we are attempting to do with the digital pattern library.
We are aiming to reach v1.0.0 by the end of March. We are aiming for a product we believe is complete, and good enough to put our names to.
Of course, that doesn’t mean the DPL will be complete at that point. We will continue to improve it and add to it as we go along. But once it reaches v1.0.0 it will be good enough for us to release for more widespread usage.
A piece of software is only as robust as the foundation it has, and we want the DPL to be as strong as we can make it.