Print Email Facebook Twitter API evolution on Maven Central: do developers adhere to semantic versioning? Title API evolution on Maven Central: do developers adhere to semantic versioning? Author Vos, Simcha (TU Delft Electrical Engineering, Mathematics and Computer Science) Contributor Keshani, M. (mentor) Proksch, S. (mentor) Gerritsen, B.H.M. (graduation committee) Degree granting institution Delft University of Technology Programme Computer Science and Engineering Project CSE3000 Research Project Date 2022-06-21 Abstract In this paper, we investigate whether developers of artifacts on Maven Central adhere to semantic versioning. We also investigate whether there is a link between violations in semantic versioning and the popularity of the violating method. Developers can violate semantic versioning by removing or altering methods in their API, which we refer to as breaking changes. They can also violate semantic versioning by extending the API in a patch version, referred to as an illegal API extension. APIs that do not keep their promise of adhering to semantic versioning, will unexpectedly break their dependents during upgrading of dependencies. We have found that these two types of violations do occur in practice. We find that 24% of analyzed artifacts contain breaking changes and 24% of artifacts contain illegal API extensions. Finally, we show that popularity of a method does not have an impact on breaking changes. We conclude that semantic versioning can not always guarantee that upgrading dependencies will not lead to incompatibility. This indicates a need for developers to be more aware of the impact that violating semantic versioning has. Subject Maven Centralcompatibilitysemantic versioningAPI evolutionbreaking changes To reference this document use: http://resolver.tudelft.nl/uuid:41d7e05b-8c68-400b-96cd-6261fbbe6e1e Part of collection Student theses Document type bachelor thesis Rights © 2022 Simcha Vos Files PDF API_evolution_on_Maven_Central.pdf 303.04 KB Close viewer /islandora/object/uuid:41d7e05b-8c68-400b-96cd-6261fbbe6e1e/datastream/OBJ/view