Distributions of open source software packages dedicated to specific programming languages facilitate software development by allowing software projects to depend on the functionality provided by such reusable packages. The health of a software project can be affected by the maturity of the packages on which it depends. The version numbers of the used package releases provide an indication of their maturity. Packages with a 0.y.z version number are commonly assumed to be under initial development, suggesting that they are likely to be less stable, and depending on them may be considered as less healthy. In this paper, we empirically study, for four open source package distributions (Cargo, npm, Packagist and RubyGems) to which extent 0.y.z package releases and >=1.0.0 package releases behave differently. We quantify the prevalence of 0.y.z releases, we explore how long packages remain in the initial development stage, we compare the update frequency of 0.y.z and >=1.0.0 package releases, we study how often 0.y.z releases are required by other packages, we assess whether semantic versioning is respected for dependencies towards them, and we compare some characteristics of 0.y.z and >=1.0.0 package repositories hosted on GitHub. Among others, we observe that package distributions are more permissive than what semantic versioning dictates for 0.y.z releases, and that many of the 0.y.z releases can actually be regarded as mature packages. As a consequence, the version number does not provide a good indication of the maturity of a package release.
翻译:用于特定编程语言的开放源代码软件包的分布,通过允许软件项目依赖这些可再使用的软件包所提供的功能,为软件开发提供便利。软件项目的健康可能受到软件包成熟程度的影响。用过的软件包释放的版本号可以显示其成熟程度。使用过的软件包的版本号可以显示其成熟程度。通常假定初始开发阶段的版本号为0.y.z。使用0.y.z版本号的软件包可能不太稳定,并视其是否健康。在本文中,我们的经验研究允许软件项目依靠这些可再使用软件包提供的功能。对于四个开放源软件包的成熟性分发(Cargo、npm、packagist和RubyGUbyGems),其成熟程度可能受到影响。我们量化了0.y.z版本的版本,我们探索最初开发阶段的软件包的普及程度有多长,我们比较了0.y.z版本的更新频率,我们研究其他软件包需要多少次为 0.y.z 的版本,我们评估是否尊重了对它们的依赖程度,并且我们比较了O.y 版本的版本的版本的版本的版本的版本的版本的版本。我们观察了这些版本的版本的版本的版本的版本。