Introduction
The concept of versioning has been well known in the software industry for decades. Modern source control systems handle concurrent development, branching, merging, conflict resolution, and the versioning (tagging) of resources. Depending on the particular terminology, there has been very little specified regarding versioning, and even less has been implemented in the tools that support terminology authoring.
Snow Owl aims to fill this gap for its managed content by providing support for revision control, versioning, branching, and merging.
A version is created when the state of a particular terminology needs to be captured. From a business sense, it is performed when the terminology is ready to be published to customers. Versioning always applies to the entire terminology and can be performed at any time on the current state of the terminology. For example, the SNOMED CT July 2013 release is a version that marks the state of SNOMED CT at this particular point in time. Different versions are distinguished by tags, hence the process of creating a version is often referred to as tagging. There are no versions of SNOMED CT Reference Sets, and SNOMED CT Map type Reference Sets since they are considered to be part of SNOMED CT. When a new version of SNOMED CT is created, modifications made to Reference Sets and Map type Reference Sets are contained.
In addition to marking the state of the terminology, versioning is also useful if a patch needs to be provided between release cycles. A patch is a retrospective fix of an already published version. To create a patch, clinicians need to be able to view and make changes to an older (already published) version, without interfering with the ongoing development of the upcoming (unpublished) release. Therefore any work performed on a particular version is isolated from work performed on the rest of the versions. For this reason, changes made for the patch are not automatically included in the content of the later version but need to be authored separately.