Reuse and maintenance practices among divergent forks in three software ecosystems
Loading...
Date
2022
Journal Title
Journal ISSN
Volume Title
Publisher
Empirical Software Engineering
Abstract
With the rise of social coding platforms that rely on distributed version control systems,
software reuse is also on the rise. Many software developers leverage this reuse by creating
variants through forking, to account for different customer needs, markets, or environments.
Forked variants then form a so-called software family; they share a common code base and
are maintained in parallel by same or different developers. As such, software families can
easily arise within software ecosystems, which are large collections of interdependent software
components maintained by communities of collaborating contributors. However, little
is known about the existence and characteristics of such families within ecosystems, especially
about their maintenance practices. Improving our empirical understanding of such
families will help build better tools for maintaining and evolving such families. We empirically
explore maintenance practices in such fork-based software families within ecosystems
of open-source software. Our focus is on three of the largest software ecosystems existence
today: Android, .NET, and JavaScript. We identify and analyze software families that are
maintained together and that exist both on the official distribution platform (Google play,
nuget, and npm) as well as on GitHub , allowing us to analyze reuse practices in depth.
We mine and identify 38 software families, 526 software families, and 8,837 software families
from the ecosystems of Android, .NET, and JavaScript, to study their characteristics
and code-propagation practices. We provide scripts for analyzing code integration within
our families. Interestingly, our results show that there is little code integration across the
studied software families from the three ecosystems. Our studied families also show that
techniques of direct integration using git outside of GitHub is more commonly used than
GitHub pull requests. Overall, we hope to raise awareness about the existence of software
families within larger ecosystems of software, calling for further research and better tools
support to effectively maintain and evolve them.
Description
Keywords
Clone-and-own, Change propagation, Variant synchronisation, Empirical study, Variant developers, Version control systems, Pull requests, Cherry-picking changes, Rebasing changes, Squashing changes, Software product lines, Variants
Citation
Businge, J., Openja, M., Nadi, S., & Berger, T. (2022). Reuse and maintenance practices among divergent forks in three software ecosystems. Empirical Software Engineering, 27(2), 54. https://doi.org/10.1007/s10664-021-10078-2