Semantic versioning and impact of breaking changes in the Maven repository
S Raemaekers, A van Deursen, J Visser - Journal of Systems and Software, 2017 - Elsevier
S Raemaekers, A van Deursen, J Visser
Journal of Systems and Software, 2017•ElsevierAbstract Systems that depend on third-party libraries may have to be updated when updates
to these libraries become available in order to benefit from new functionality, security
patches, bug fixes, or API improvements. However, often such changes come with changes
to the existing interfaces of these libraries, possibly causing rework on the client system. In
this paper, we investigate versioning practices in a set of more than 100,000 jar files from
Maven Central, spanning over 7 years of history of more than 22,000 different libraries. We …
to these libraries become available in order to benefit from new functionality, security
patches, bug fixes, or API improvements. However, often such changes come with changes
to the existing interfaces of these libraries, possibly causing rework on the client system. In
this paper, we investigate versioning practices in a set of more than 100,000 jar files from
Maven Central, spanning over 7 years of history of more than 22,000 different libraries. We …
Abstract
Systems that depend on third-party libraries may have to be updated when updates to these libraries become available in order to benefit from new functionality, security patches, bug fixes, or API improvements. However, often such changes come with changes to the existing interfaces of these libraries, possibly causing rework on the client system. In this paper, we investigate versioning practices in a set of more than 100,000 jar files from Maven Central, spanning over 7 years of history of more than 22,000 different libraries. We investigate to what degree versioning conventions are followed in this repository. Semantic versioning provides strict rules regarding major (breaking changes allowed), minor (no breaking changes allowed), and patch releases (only backward-compatible bug fixes allowed). We find that around one third of all releases introduce at least one breaking change. We perform an empirical study on potential rework caused by breaking changes in library releases and find that breaking changes have a significant impact on client libraries using the changed functionality. We find out that minor releases generally have larger release intervals than major releases. We also investigate the use of deprecation tags and find out that these tags are applied improperly in our dataset.
Elsevier