Projects per year
Abstract
Ansible, a popular Infrastructure-as-Code platform, provides reusable collections of tasks called roles. Roles are often contributed by third parties, and like general-purpose libraries, they evolve. Therefore, new releases of roles need to be tagged with version numbers, for which Ansible recommends adhering to the semantic versioning format. However, roles significantly differ from general-purpose libraries, and it is not yet known what constitutes a breaking change or the addition of a feature to a role. Consequently, this can cause confusion for clients of a role and new role contributors.
To alleviate this issue, we perform an empirical study on semantic versioning in Ansible roles to uncover the types of changes that trigger certain types of version bumps. Our dataset consists of over 81 000 version increments spanning upwards of 8 500 Ansible roles. We design a novel structural model for these roles, and implement a domain-specific structural change extraction algorithm to calculate structural difference metrics. Afterwards, we quantitatively investigate the state of semantic versioning in Ansible roles and identify the most commonly changed elements. Then, using the structural difference metrics, we train a Random Forest classifier to predict applicable version bumps for Ansible role releases. Finally, we confirm our empirical findings with a developer survey.
Our observations show that although most Ansible role developers follow the semantic versioning format, it appears that they do not always consistently follow the same rules when selecting the version bump to apply. Moreover, we find that the distinction between patch and minor increments is often unclear. Therefore, we use the gained insights to formulate a number of guidelines to apply semantic versioning on Ansible roles. These guidelines can be used by role developers to ensure a clear interpretation of the version increments.
To alleviate this issue, we perform an empirical study on semantic versioning in Ansible roles to uncover the types of changes that trigger certain types of version bumps. Our dataset consists of over 81 000 version increments spanning upwards of 8 500 Ansible roles. We design a novel structural model for these roles, and implement a domain-specific structural change extraction algorithm to calculate structural difference metrics. Afterwards, we quantitatively investigate the state of semantic versioning in Ansible roles and identify the most commonly changed elements. Then, using the structural difference metrics, we train a Random Forest classifier to predict applicable version bumps for Ansible role releases. Finally, we confirm our empirical findings with a developer survey.
Our observations show that although most Ansible role developers follow the semantic versioning format, it appears that they do not always consistently follow the same rules when selecting the version bump to apply. Moreover, we find that the distinction between patch and minor increments is often unclear. Therefore, we use the gained insights to formulate a number of guidelines to apply semantic versioning on Ansible roles. These guidelines can be used by role developers to ensure a clear interpretation of the version increments.
Original language | English |
---|---|
Article number | 111059 |
Number of pages | 21 |
Journal | Journal of Systems and Software |
Volume | 182 |
DOIs | |
Publication status | Published - Dec 2021 |
Keywords
- Ansible
- Infrastructure as Code
- empirical study
- Semantic Versioning
- mining software repositories
- IaC
Fingerprint
Dive into the research topics of 'On the practice of semantic versioning for Ansible galaxy roles: An empirical study and a change classification model'. Together they form a unique fingerprint.Projects
- 2 Finished
-
FWOSB103: Pattern Mining and Static Analysis for Detecting Defects in Infrastructure as Code
1/11/20 → 31/10/24
Project: Fundamental
-
FWOEOS10: Automated Assistance for Developing Software in Ecosystems of the Future
De Roover, C., Mens, T., Demeyer, S. & Cleve, A.
1/01/18 → 31/12/21
Project: Fundamental
Datasets
-
Replication Package for "On the Practice of Semantic Versioning for Ansible Galaxy Roles: An Empirical Study and a Change Classification Model"
Opdebeeck, R. (Creator), Zerouali, A. (Creator), Velazquez Rodriguez, C. E. (Creator) & De Roover, C. (Creator), Zenodo, 2021
Dataset
-
Data for "On the Practice of Semantic Versioning for Ansible Galaxy Roles: An Empirical Study and a Change Classification Model"
Opdebeeck, R. (Creator), Zerouali, A. (Creator), Velazquez Rodriguez, C. E. (Creator) & De Roover, C. (Creator), Zenodo, 2021
Dataset