Semantic version numbers
Gone are the days of arbitrarily assigning version numbers to every new software release. With semantic versioning, the question of how and when to bump versions is made simple.
According to semver.org, the syntax for version numbers should go like this: MAJOR.MINOR.PATCH
When you release a new version, it's easy to determine which numbers to increment:
MAJOR
version when you make incompatible API changes,MINOR
version when you add functionality in a backwards-compatible manner, andPATCH
version when you make backwards-compatible bug fixes.
The entire spec is actually quite short and simple (for a spec), but the concepts therein will [hopefully] change the way developers version their software in the future. While many projects already follow similar conventions, there are still many that don't. This is especially true in the case of smaller projects, where developers seem to arbitrarily bump version numbers without considering the impact such changes may have on their users.
If you don't have an existing standard for versioning your software, help make the world a better place and consider adopting SemVer in your next project!