What is versioning?

Versioning is the creation and management of multiple product releases, all of which have the same general function, but are improved, upgraded or customized. While many developers and vendors use the term in different contexts, versioning most often applies to operating systems, software artifacts and web services.

For example, vendors can assign unique names or specific numerical identifiers to an ongoing series of product releases, such as Windows 10 and Windows 11. The numbers represent different versions of the same software or application, and the numbers assigned increase to correspond to the latest development and releases.

Subsequent releases of the same product can also be assigned numerical identifiers consisting of two or three numbers separated by periods. The first number, called the major number, is increased when there are significant improvements or changes in functionality. For example, when Microsoft upgraded its erstwhile Internet Explorer 4 browser to Internet Explorer 5.

The second number, called the minor number, is incremented when there are minor feature changes or notable fixes. Internet Explorer 5.2 indicates that minor changes were made to the earlier version, Internet Explorer 5.1.

The third number, if it exists, is called the revision number and is added or increased when minor bugs are eliminated. For example, the 7 in Internet Explorer 5.1.7 shows that bug fixes were made to the previous version.

Chart comparing Windows 10 vs. Windows 11 system requirements
Vendors assign unique names or specific numerical identifiers with each new version of product in a series, such as Microsoft did with Windows 10 and Windows 11.

What is versioning in software development?

In software development, versioning allows development teams to keep track of changes they make to the project code. The changes may include new functions, features or bug fixes. Minor changes can also be tracked in a similar manner. Sometimes, entirely new functions and features are released based on developments across multiple versions.

Also called software versioning workflow, versioning can be an internal practice used to make it easier for developers to keep track of code evolution. During development, teams involved in the process may apply internal versioning numbers that can be incremented several times within a day. In contrast, the publicly released version usually does not change very often. For instance, the internal version number used by the development teams for Java SE 5.0 is 1.5.0.

What is semantic versioning?

There are many different ways of versioning software products and artifacts. One of the most popular schemes is semantic versioning. Semantic versioning, or SemVer, is often used as a versioning framework for applications, plugins, extensions and different software objects.

SemVer comprises three parts, X.Y.Z, where X, Y and Z are non-negative integers. This means that the primary or major version is X, and the minor version is Y. Bug fixes and patches are called version Z. So, it always takes the form of X.Y.Z, or major.minor.patch. For example, in SemVer 1.8.0, 1 indicates the major version, 8 the minor version, and 0 the bug fixes or patches.

What is versioning in AWS?

In Amazon Web Services (AWS), versioning helps keep track of multiple variants of an object in a single storage bucket. By leveraging the Amazon Simple Storage Service (S3) versioning feature, users can preserve, retrieve and restore all the different versions of every object stored in Amazon S3 buckets.

AWS S3 versioning helps users quickly recover from both application failures and unintended user actions. Whenever S3 bucket versioning is enabled, Amazon S3 will store different objects if it receives multiple write requests. This approach helps users recover accidentally overwritten or deleted objects. For example, if a user deletes an object, Amazon S3 will insert a delete marker instead of permanently removing the object. The delete marker becomes the object's current version, so users can quickly restore it by reverting to the previous version.

What is versioning in API?

Versioning in the application program interface (API) is the process of transparently managing changes to an API. API versioning is considered an effective way to communicate changes made to the API. This approach allows users to know what to expect from the latest release.

What is versioning in web API?

Web API versioning represents multiple implementations and versions of a web API. Web API versioning includes several dependencies like databases and third-party systems that are maintained and made available to users. The users can then request a specific web API version by defining the version in the Hypertext Transfer Protocol header, querystring or different media types.

What is versioning in REST API?

REST API versioning, like API versioning, uses a number to form a part of the base URL for REST requests, such as https://localhost:9334/ibmmq/rest/v3/admin/installation. The REST API version number helps isolate clients from changes to the REST API that development teams plan to introduce in future releases.

What is the difference between versioning and version control?

Although the terms versioning and version control are often used interchangeably, their technical meanings are different.

Versioning helps in the creation and management of multiple digital product releases such as software. While they have all the same general functions, some versions will be improved, customized or upgraded.

Similarly, version control ensures efficient and collaborative data sharing and editing among several different users of a system. This can help users track and manage changes to the software source code over time. These users may employ different versions of the product at any given time within the system.

Diagram explaining version control
Diagram of how distributed version control works in software development.

Version control is also critical to DevOps teams that strive to reduce development time while accelerating successful deployments.

See also: Select between distributed version control systems and tools, Get started with API versioning and URIs and 5 tips for better API versioning and migration

This was last updated in February 2022

Continue Reading About versioning

Dig Deeper on Software design and development

Cloud Computing
App Architecture