Breaking Bad? Semantic Versioning and Impact of Breaking Changes in Maven Central
Lina Ochoa (TU/e), Thomas Degueule, Jean-R\'emy Falleri, Jurgen Vinju, (TU/e, CWI)

TL;DR
This study analyzes how Java libraries on Maven Central evolve with breaking changes, revealing high compliance with semantic versioning and limited impact on clients, aided by a new static analysis tool.
Contribution
It extends prior research with a larger dataset, addresses previous limitations, and introduces Maracas, a novel static analysis tool for detecting breaking changes in Java bytecode.
Findings
83.4% of library upgrades follow semantic versioning
Compliance with semantic versioning has increased over time
Only 7.9% of clients are affected by breaking changes
Abstract
Just like any software, libraries evolve to incorporate new features, bug fixes, security patches, and refactorings. However, when a library evolves, it may break the contract previously established with its clients by introducing Breaking Changes (BCs) in its API. These changes might trigger compile-time, link-time, or run-time errors in client code. As a result, clients may hesitate to upgrade their dependencies, raising security concerns and making future upgrades even more difficult.Understanding how libraries evolve helps client developers to know which changes to expect and where to expect them, and library developers to understand how they might impact their clients. In the most extensive study to date, Raemaekers et al. investigate to what extent developers of Java libraries hosted on the Maven Central Repository (MCR) follow semantic versioning conventions to signal the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software System Performance and Reliability · Software Testing and Debugging Techniques
