Nothing Special   »   [go: up one dir, main page]

Semantic versioning versus breaking changes

A study of the Maven Repository

More Info
expand_more

Abstract

For API users, backward compatibility of new releases is important, as it permits safe and fast upgrading when the new release becomes available. To signal safe upgrading, version naming schemes such as semantic versioning provide strict rules on major (breaking changes permitted) versus minor and patch (no breaking changes permitted) releases. In this paper, we analyze seven years of library release history in Maven Central, and contrast version identifiers with actual incompatibilities. We find that around one third of all releases introduce at least one breaking change, and that this figure is the same for minor and major releases. Furthermore, we find that deprecation tags that could signal breaking changes are hardly used. We explore the wider implications of our findings, concerning education, tool support, versioning principles, and repository mining research.