迷失于零空间——软件包分发中 0.y.z 版本的实证比较
软件工程
2021-04-13 v1
摘要
面向特定编程语言的开源软件包分发通过允许软件项目依赖此类可复用包所提供的功能来促进软件开发。软件项目的健康可受其依赖包成熟度的影响。所用包版本的版本号提供了其成熟度的指示。版本号为 0.y.z 的包通常被假定处于初始开发阶段,意味着它们可能较不稳定,依赖它们可能被视为较不健康。本文中,我们针对四个开源包分发(Cargo、npm、Packagist 和 RubyGems)实证研究了 0.y.z 包版本与 >=1.0.0 包版本在多大程度上表现不同。我们量化了 0.y.z 版本的普遍程度,探究包在初始开发阶段停留多久,比较 0.y.z 与 >=1.0.0 包版本的更新频率,研究 0.y.z 版本被其他包依赖的频繁程度,评估对其依赖是否遵循语义化版本规范,并比较托管于 GitHub 的 0.y.z 与 >=1.0.0 包仓库的一些特征。除其他外,我们观察到包分发对 0.y.z 版本比语义化版本规范所要求的更为宽松,且许多 0.y.z 版本实际上可被视为成熟包。因此,版本号并不能很好地指示包版本的成熟度。
引用
@article{arxiv.2101.00836,
title = {Lost in Zero Space -- An Empirical Comparison of 0.y.z Releases in Software Package Distributions},
author = {Alexandre Decan and Tom Mens},
journal= {arXiv preprint arXiv:2101.00836},
year = {2021}
}
备注
preprint