Affiliation:
1. Federal University of Technology (UTFPR), Brazil
2. Huawei Technologies, Canada
3. Northern Arizona University (NAU), United States
Abstract
Complex software systems have a network of dependencies. Developers often configure package managers (e.g.,
npm
) to automatically update dependencies with each publication of new releases containing bug fixes and new features. When a dependency release introduces backward-incompatible changes, commonly known as
breaking changes
, dependent packages may not build anymore. This may indirectly impact downstream packages, but the impact of breaking changes and how dependent packages recover from these breaking changes remain unclear. To close this gap, we investigated the manifestation of breaking changes in the
npm
ecosystem, focusing on cases where packages’ builds are impacted by breaking changes from their dependencies. We measured the extent to which breaking changes affect dependent packages. Our analyses show that around 12% of the dependent packages and 14% of their releases were impacted by a breaking change during updates of non-major releases of their dependencies. We observed that, from all of the manifesting breaking changes, 44% were introduced in both minor and patch releases, which in principle should be backward compatible. Clients recovered themselves from these breaking changes in half of the cases, most frequently by upgrading or downgrading the provider’s version without changing the versioning configuration in the package manager. We expect that these results help developers understand the potential impact of such changes and recover from them.
Funder
National Science Foundation
CNPq/MCTI/FNDCT
MCTIC/CGI/FAPESP
Publisher
Association for Computing Machinery (ACM)
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Understanding the Impact of APIs Behavioral Breaking Changes on Client Applications;Proceedings of the ACM on Software Engineering;2024-07-12
2. The role of library versions in Developer-ChatGPT conversations;Proceedings of the 21st International Conference on Mining Software Repositories;2024-04-15
3. Lightweight Syntactic API Usage Analysis with UCov;Proceedings of the 32nd IEEE/ACM International Conference on Program Comprehension;2024-04-15
4. BUMP: A Benchmark of Reproducible Breaking Dependency Updates;2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER);2024-03-12
5. Unboxing Default Argument Breaking Changes in Scikit Learn;2023 IEEE 23rd International Working Conference on Source Code Analysis and Manipulation (SCAM);2023-10-02