Go Back

Versioning in Software Development

Introduction to SemVer, CalVer, and GitHub Flow

David Onifade
David Onifade3/2/2024

2 min

Software versioning is a way of keeping track of different versions of a project. When working on a project, we make changes, fix mistakes, or add new features. To keep track of these changes and make sure everyone involved in the project or direct users of the project are on the same page, we use a versioning system.

Now, you might heard of 'git' as a version control system, but there are different ways to name or number these versions, and some popular methods are Semantic Versioning (SemVer), Calendar Versioning (CalVer), and GitHub Flow. I'll be addressing all in this blog post.

Semantic Versioning (SemVer)

It is like a three-part code (e.g., 1.2.3). The first part <mark>(1)</mark> increases when you make big changes that might break things for users. The second part <mark>(2)</mark> increases when you add new features but everything still works as before. The third part <mark>(3)</mark> increases when you fix small issues or bugs. This makes it easy for users to understand what has changed between versions.

Calendar Versioning (CalVer)

It uses dates in the version number (e.g., 2023.02.1). This tells users when the version was released or when it's based on. It's really useful for projects that release updates frequently or follow a regular release schedule.

GitHub Flow

It's a versioning method that focuses on collaboration and continuous improvement. It's based on using Git, a popular version control system, and involves creating separate branches for new features or bug fixes. Once the changes are ready, they're reviewed and merged into the main project. This allows for a smooth workflow and ensures that everyone is working on the most up-to-date version.

In summary, software versioning is like keeping track of different versions of a project, and there are various methods to do this, such as SemVer, CalVer, and GitHub Flow. All versioning system discussed in this blog post are great! you just have to choose one that fits your project need/requirement and helps your team work together effectively.

Thank you for reading to this point, I hope you learnt one or two things. Until next time, happy coding, and stay curious ✌🏼

Read on hashnode

Last updated: 12/18/2024

Subscribe to my newsletter

no spam, good stuff only

Built by David, Designed by Kolawole Olubummo