Linux 包依赖越来越像食物链

也许你在很多平台上都听到过“软件生态系统”(software ecosystem) 这个词,但是大部分人还是不太把这个词当回事的。现在,有一些软件界的“进化论者”,开始用一些生态学的理念来研究 Debian 的演进,主要是来研究软件依赖和兼容性的问题。

这个团队退回到了 1993 年,也就是从 Debian 诞生的那一年开始编译、统计 Debian 的每一个稳定发行版,记录每一个发行版所包含的软件包,并拿这些数据和之前的版本做对比。这项统计工作得以让研究人员记录每个软件包的生命周期,查看有哪些软件包被引入,又有哪些软件包被剔除。除了编译和统计工作,这个研究团队还编译了 x86 平台的系统,随机安装软件,以获得关于依赖和不兼容情况发生的频率。

从数据来看,可以发现一些规律。比如说,在 3.0 之前,Debian 系统组件的数目在成倍地增长,但这之后又陡然下降。不过这以后,组件数量还是保持着相对的稳定。这方面对于系统的功能性起着很重要的影响——也就是在操作系统中随机安装软件成功的几率。成功率随着 3.1 的发布有了很明显地上升。作者把原因归于这期间的“版沟”(gap between releases).

通过长时间的测试,他们发现软件、模块(主要是相互依赖的软件包)的数量在文件大小及数量上都增加了。而且,随着这种趋势的继续,软件间的冲突减少了,然而,软件内的冲突增加了。”因此,在软件包中会采取下面两种方案中的一种:要么继续使用现存的代码,要么使用引起冲突的代码。”作者如此总结。

研究也指出,使用通常的生态学理念也能塑造出这种选择的场景:软件包之间的依赖就像食物链中的捕食者和被捕食者,而软件包冲突就像是优胜劣汰的竞争行为。

最后,这项研究指出了模块性(可组合性)的关键特点:减少冲突模块的数量意味着操作系统可以安装更多的软件,因为一个冲突导致整个软件不能安装和运行的情况的确不太常见,但是研究并没有给出一个实例。因此,这个结论似乎并不能太让人信服。

消息来源:ars technica

发表回复