Concepts of variation control systems
Journal article, 2021

Version control systems are an integral part of today's software engineering. They facilitate the collaborative management of revisions (sequential versions) and variants (concurrent versions) of software systems under development. Typical version control systems maintain revisions of files and variants of whole software systems. Variants are supported via branching or forking mechanisms that conceptually clone whole systems in a coarse-grained way. Unfortunately, such cloning leads to high maintenance efforts. To avoid these disadvantages and support fine-grained variation, developers need to employ custom configuration mechanisms, which leads to a misappropriation of tools and undesired context switches. Addressing this trade-off, a number of variation control systems has been conceived, providing a richer set of capabilities for handling variants. Variation control systems decompose a software system into finer-grained variable entities and offer high-level metaphors to automatically manage this variability. In this paper, we classify and compare variation control systems and illustrate their core concepts and characteristics. All investigated variation control systems offer an iterative (checkout–modify–commit) workflow, but there are essential differences affecting developers. We highlight challenges and discuss research perspectives for developing the next generation of version and variation control systems.

Software repositories

Configuration management

Software product lines

Version control

Variability management


Lukas Linsbauer

Technische Universität Braunschweig

Felix Schwägerl

University of Bayreuth

Thorsten Berger

University of Gothenburg

Paul Grünbacher

Johannes Kepler University of Linz (JKU)

Journal of Systems and Software

0164-1212 (ISSN)

Vol. 171 110796

Subject Categories

Software Engineering

Embedded Systems

Computer Systems



More information

Latest update