Litcius/Paper detail

Deprecation of Packages and Releases in Software Ecosystems: A Case Study on NPM

Filipe R. Cogo, Gustavo A. Oliva, Ahmed E. Hassan

2021IEEE Transactions on Software Engineering25 citationsDOI

Abstract

Deprecation is used by developers to discourage the usage of certain features of a software system. Prior studies have focused on the deprecation of source code features, such as API methods. With the advent of software ecosystems, package managers started to allow developers to deprecate higher-level features, such as package releases. This study examines how the deprecation mechanism offered by the <inline-formula><tex-math notation="LaTeX">${\sf npm}$</tex-math></inline-formula> package manager is used to deprecate releases that are published in the ecosystem. We propose two research questions. In our first RQ, we examine how often package releases are deprecated in <inline-formula><tex-math notation="LaTeX">${\sf npm}$</tex-math></inline-formula> , ultimately revealing the importance of a deprecation mechanism to the package manager. We found that the proportion of packages that have at least one deprecated release is 3.7 percent and that 66 percent of such packages have deprecated all their releases, preventing client packages to migrate from a deprecated to a replacement release. Also, 31 percent of the partially deprecated packages do not have any replacement release. In addition, we investigate the content of the deprecation messages and identify five rationales behind the deprecation of releases, namely: withdrawal, supersession, defect, test, and incompatibility. In our second RQ, we examine how client packages adopt deprecated releases. We found that, at the time of our data collection, 27 percent of all client packages directly adopt at least one deprecated release and that 54 percent of all client packages transitively adopt at least one deprecated release. The direct adoption of deprecated releases is highly skewed, with the top 40 popular deprecated releases accounting for more than half of all deprecated releases adoption. As a discussion that derives from our findings, we highlight the rudimentary aspect of the deprecation mechanism employed by <inline-formula><tex-math notation="LaTeX">${\sf npm}$</tex-math></inline-formula> and recommend a set of improvements to this mechanism. These recommendations aim at supporting client packages in detecting deprecated releases, understanding their impact, and coping with them.

Topics & Concepts

Computer scienceNotationSoftwareCode (set theory)Programming languageSoftware engineeringInformation retrievalWorld Wide WebArithmeticMathematicsSet (abstract data type)Software Engineering ResearchSoftware Engineering Techniques and PracticesAdvanced Software Engineering Methodologies
Deprecation of Packages and Releases in Software Ecosystems: A Case Study on NPM | Litcius