Snaps: Bloated and Outdated?
本文实证研究发现Snap软件包在大小上臃肿且更新频率越界,为软件打包领域研究提供了数据支持。
2025-07-01 cs.SE
SoK: Towards Reproducibility for Software Packages in Scripting Language Ecosystems
本文系统梳理了脚本语言生态系统中软件可重现性面临的挑战,对比了编译型语言生态系统,指出现有研究稀少且聚焦单一,并明确了改进该领域可重现性的后续步骤。
2025-03-27 cs.CR cs.SE
The Popularity Hypothesis in Software Security: A Large-Scale Replication with PHP Packages
University of Southern Denmark(南丹麦大学)
本研究针对PHP软件开展大规模重复验证分析,证实软件流行度与漏洞存在正相关,同时为软件安全实证知识及漏洞术语讨论提供了支撑。
2026-09-02 cs.CR cs.SE
PVAC: Package Version Activity Categorizer, Leveraging Semantic Versioning in a Heterogeneous System
本研究提出系统方法和原型工具 PVAC,通过解析语义化版本控制细节并利用三个组件对异构包管理器生态系统中的版本活动进行分类与定量评分,在 Debian 和 Ubuntu 数据集上验证了其准确性与有效性。
2025-05-31 cs.SE
Towards Measuring Vulnerabilities and Exposures in Open-Source Packages
本研究定量分析开源软件仓库与包管理器中漏洞的频率与演变,提出CVE映射方法,并展示其在不同编程语言中的分布,以评估开源生态的安全风险。
2023-05-09 cs.CR cs.SE
On Security Measures for Containerized Applications Imaged with Docker
在过去的几年里,Linux容器越来越受欢迎,正在进入商业IT服务产品(如PaaS),应用程序部署和各种开发团队中的持续交付/集成管道。随着Docker的广泛采用,安全漏洞和担忧也浮出水面。在本调查中,我们研究了目前最流行的容器系统的安全状态:Docker。我们还将研究其起源于操作系统本身内置的Linux技术;检查固有的漏洞,例如Docker Image实现;并分析该领域使用的当前工具和现代方法,以评估和增强其安全性。对于每一部分,我们都指出了感兴趣的指标,因为它们是由该领域的研究人员和专家揭示的,并总结了他们的发现,以描绘出这些发现背后的努力的全貌。最后,我们看看行业中用于简化Docker安全扫描和分析的工具,这些工具提供了关键指标的内置聚合。
2020-08-11 cs.CR cs.SE
On the Diversity of Software Package Popularity Metrics: An Empirical Study of npm
软件系统通常利用开源软件库来重用功能。这样的库可以通过软件包管理器(如JavaScript的npm)轻松获得。由于在这样的包分发中可用的包的巨大数量,开发者通常基于其流行度来决定依赖于或贡献于软件包。此外,研究人员通常依赖流行度指标进行数据采样并为他们的研究选择合适的候选人。然而,受欢迎程度的含义是相对的,可以以多种方式定义和测量,即使在考虑相同的研究时,也可能产生不同的结果。在本文中,我们展示了在软件工程研究中流行的意义是如何不同的证据。此外,我们实证分析了不同的软件流行性措施之间的关系。作为一个案例研究,对于175 k npm包的大型数据集,我们从三个开源跟踪系统(libraries.io,npmjs.com和GitHub)中计算并提取了9个不同的流行度指标。我们发现,实际上流行度可以用不同的无关指标来衡量,每个指标都可以在特定的上下文中定义。这表明需要一个通用的框架,将使用一个投资组合的流行度度量从不同的概念。
2019-01-14 cs.SE
Debugging Memory Issues In Embedded Linux: A Case Study
检测表示检测程序中意外可观察行为的根本原因的过程,例如程序崩溃、产生意外输出值或断言违规。排除程序错误是一项困难的任务,并且在软件开发生存周期中经常花费大量的时间。在嵌入式软件的背景下,bug的概率相当高。由于嵌入式软件要求低代码大小和更少的资源消耗,因此通常在开发期间消除大量的健全性检查。这导致在运行时间在生产代码中发现错误的可能性很高。在本文中,我们提出了一种方法来调试BusyBox,Linux在嵌入式系统中的事实标准的错误。我们的方法工作在Valgrind,一个流行的内存错误检测器和Daikon,一个不变的分析。我们在BusyBox中实验了两个已发表的错误,并在本文中报告了我们的发现。
2012-08-02 cs.SE
The Software Garden
本文介绍了一种实用的方法,开发定制的HPC软件产品,使用存储库和工具独立于操作系统称为“花园”。从产品到底层操作系统发行版库的所有依赖关系都被小心地切断,将软件包与系统升级引起的不稳定性隔离开来,并确保在不同版本的Linux上进行可重复的确定性构建。该方法还保证了软件产品的多个版本可以共存并正确运行,极大地方便了升级和回滚。该方法是第一个已知的系统,暴露所有过去的软件版本的设计师,并支持确定性的单一软件包回滚,而不影响其他安装的软件。最后给出了该方法在C++语言中构建一个高性能交易系统的应用。
2013-05-01 cs.SE
Insecure Ingredients? Exploring Dependency Update Patterns of Bundled JavaScript Packages on the Web
Fraunhofer FKIE(弗劳恩霍夫应用研究促进协会FKIE);University of Bonn(波恩大学)
本文提出Aletheia方法,通过剽窃检测算法分析JavaScript捆绑,发现依赖更新行为,揭示5%-20%的域名在16周内更新依赖,且捆绑包更新速度更快,但少数供应商可能主导更新。
2026-01-23 cs.CR cs.SE
Evolution of a Modular Software Network
“进化就像一个修补匠”(弗朗索瓦·雅各布,《科学》,1977年)。软件系统提供了一个独特的机会来理解生物过程使用网络理论的概念。Debian GNU/Linux操作系统允许我们以一种新颖的方式探索复杂网络的演变。在其增长过程中检测到的模块化设计是基于现有代码的重用,以最大限度地减少编程期间的成本。随着时间的推移,系统模块化程度的增加并没有抵消模块内软件包之间不兼容性的增加。这种负面影响远非设计的失败。一个随机的软件包安装过程表明,模块化程度越高,在本地计算机上正常工作的软件包的比例就越大。来自不同模块的包之间的冲突的相对数量的减少避免了一个包的功能故障在整个系统中传播。一些潜在的类比与进化和生态过程确定相互作用的物种的生态网络的结构进行了讨论。
2011-11-22 cs.OS cs.SE
Uncovering Similar but Different Packages in PyPI and Potential Security Threats
Korea University(高丽大学);Dongduk Women’s University(东德女子大学)
本研究大规模分析 PyPI 中的包复制现象,发现大量复制包复制现有包的大部分代码,导致漏洞传播和恶意包生成,并通过三种视角揭示其关键特征和威胁。
2026-06-29 cs.SE
A complex network analysis of the Comprehensive R Archive Network (CRAN) package ecosystem
自由和开源软件包生态系统已经存在了很长时间,是最复杂的人造系统之一。最古老和最流行的软件包生态系统之一是CRAN,它是统计语言R的软件包存储库,也是当今最流行的统计计算环境之一。CRAN存储了大量定期更新的包,并依赖于复杂关系图中的许多其他包;本文从复杂网络分析(CNA)的角度对这种图进行了实证研究,展示了以前工作提出的网络理论和措施如何帮助分析生态系统并从三个角度检测优势,良好实践和潜在风险:生态系统的宏观属性(网络的结构和复杂性)、单个包的微观属性(表示为节点)和模块化属性(社区发现)。结果表明,复杂的网络分析工具可以用来评估一个包的生态系统,特别是CRAN。
2020-07-15 cs.SE
Which Pull Requests Get Accepted and Why? A study of popular NPM Packages
背景资料:Pull Request(PR)集成商经常面临多个并发PR的挑战,因此衡量哪些PR将被接受的能力可以帮助他们平衡工作负载。公关创作者将受益于了解他们的公关的某些特征是否会增加接受的机会。目的:我们使用随机森林模型对PR在创建后一个月内被接受的概率进行了建模,该模型利用了50个预测因子,这些预测因子代表了作者、PR和PR提交到的项目的属性。方法:我们分析了来自4218个流行NPM包的483,988个PR,并选择了一个14个预测因子的子集,足以使调整后的随机森林模型达到高精度。结果:AUC-ROC值为0.95,预测PR接受。排除提交后发生变化的PR属性的模型给出的AUC-ROC值为0.89。我们通过使用NPM包\textit{bootstrap}的历史数据对其进行训练,并预测未来提交的PR是否会被接受,来测试我们的模型在实际场景中的实用性。这给了我们所有14个预测因子的AUC-ROC值为0.94,排除PR属性在其创建后发生变化,则为0.77。结论:PR集成商可以使用我们的模型对开放PR的质量进行高度准确的评估,PR创建者可以通过了解从集成商的角度来看他们的PR的哪些特性可能是不期望的来从模型中受益。该模型可以实现为一个工具,我们计划这样做,作为未来的工作。
2020-03-02 cs.SE
How Reliable Are FOSS Popularity Metrics? Analyzing the Effort Required for Spoofing Common Software Popularity Metrics
University of Bonn(波恩大学);Fraunhofer FKIE(弗劳恩霍夫FKIE研究所)
本文研究了开源软件流行度指标的可靠性,分析了伪造这些指标所需的努力,并指出许多指标类别,如提交数据、问题跟踪器活动、下载量、仓库内容和依赖关系,可以被低至中等程度地操纵,揭示了npm上的一个涉及影响奖励机制的Sybil攻击。
2026-05-20 cs.CR cs.SE
Characterizing Deep Learning Package Supply Chains in PyPI: Domains, Clusters, and Disengagement
本研究分析PyPI中TensorFlow与PyTorch的深度学习包供应链,揭示其领域分布、集群形态与包脱离的原因,为供应链维护与依赖管理提供参考。
2023-12-20 cs.SE
Rust Coreutils: Rebuilding Unix Foundations in a Modern Language
Debian(德比安);LTCI, Télécom Paris, Institut Polytechnique de Paris(电信巴黎学院,巴黎理工学院 LTCI)
本文介绍用Rust重新实现GNU coreutils的开源项目Rust coreutils,该项目已成为兼容多数Linux发行版的直接替代品,为关键软件的替代开发提供了见解,也凸显现代编程特性对遗留软件包开发的吸引力。
2026-09-11 cs.SE
Towards Using Package Centrality Trend to Identify Packages in Decline
由于其日益增加的复杂性,今天的软件系统经常通过利用库和包形式的可重用代码来构建。软件生态系统(例如,npm)是这种代码重用的主要推动者,为开发人员提供了一个共享自己代码和使用他人代码的平台。这些生态系统发展迅速:开发人员每天都添加新的软件包来解决新的问题或提供替代的解决方案,导致过时的软件包对社区的重要性下降。开发人员应该避免依赖于下降的包,因为随着时间的推移,这些包的重用率越来越低,维护频率也越来越低。然而,当前流行度度量(例如,Stars和Downloads)不适合向开发人员提供这些信息,因为它们的语义不能恰当地捕捉社区兴趣的变化。在本文中,我们提出了一种可扩展的方法,使用包在生态系统中的中心地位来识别下降的包。我们使用npm生态系统评估了我们的方法,并表明随着时间的推移,中心性的趋势可以正确区分ROC-AUC为0.9的软件包。该方法可以捕获87%的软件包下降,平均18个月前的趋势显示在目前使用的软件包流行度指标。我们在一个工具中实现了这种方法,该工具可用于增强npm指标,并帮助开发人员在重用npm中的包时避免包下降。
2021-10-19 cs.SE
Learning Embeddings of Directed Networks with Text-Associated Nodes---with Applications in Software Package Dependency Networks
University of Southern California(南加州大学);University of California, Berkeley(加州大学伯克利分校)
网络嵌入由网络中每个节点的矢量表示组成。它的有用性已经在许多现实世界的应用领域,如社交网络和Web网络中显示。具有与每个节点相关联的文本的有向网络,例如软件包依赖性网络,是常见的。然而,据我们所知,它们的嵌入迄今尚未被专门研究。在本文中,我们提出了PCTADW-1和PCTADW-2,两个算法的基础上神经网络,学习嵌入有向网络与文本与每个节点。我们创建了两个新的节点标记的网络:两个流行的GNU/Linux发行版Debian和Fedora中的包依赖网络。我们的实验表明,我们的算法产生的嵌入导致节点分类的质量比这两个网络上的各种基线更好。我们观察到在软件包依赖网络的网络嵌入中存在系统的类比(类似于词嵌入中的类比)。据我们所知,这是第一次在网络和文档嵌入中观察到这种系统性的类比。我们进一步证明了这些网络嵌入可以新颖地用于更好地理解软件属性,如软件的开发过程和用户界面等。
2020-11-26 cs.LG cs.SE cs.SI
Empirical Study on the Software Engineering Practices in Open Source ML Package Repositories
York University(约克大学);École Polytechnique de Montréal(蒙特利尔高等理工学院);Queen’s University(皇后大学)
人工智能(AI),特别是机器学习(ML)的最新进展已经引入了各种实际应用(例如,虚拟个人助理和自动驾驶汽车),增强日常用户的体验。然而,像深度学习这样的现代机器学习技术需要大量的技术专业知识和资源来开发、训练和部署这些模型,这使得有效地重用机器学习模型成为必要。实践者和研究人员的这种发现和重用正在由公共ML包存储库解决,该存储库将预先训练的模型捆绑到包中以供发布。由于这类储存库是最近才出现的现象,因此没有关于其现状和挑战的经验数据。因此,本文进行了一项探索性研究,分析了两个流行的ML包存储库TFHub和PyTorch Hub的结构和内容,比较了它们的信息元素(功能和策略),包组织,包管理器功能和使用上下文与流行的软件包存储库(npm,PyPI和CRAN)。通过这些研究,我们确定了共享ML包的独特SE实践和挑战。这些发现和影响对于打算使用这些共享ML包的数据科学家,研究人员和软件开发人员来说非常有用。
2020-12-08 cs.AI cs.SE
Engineering Formality and Software Risk in Debian Python Packages
本文研究了 Debian 中 182 个 Python 软件包的工程形式化与生产不足风险的关系,发现正式结构会增加风险,而开发者责任提升可降低风险。
2024-04-26 cs.CY cs.SE
We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs
University of Texas at San Antonio(德克萨斯大学圣安东尼奥分校);University of Oklahoma(俄克拉荷马大学);Virginia Tech(弗吉尼亚理工大学)
本文全面评估了代码生成LLM中的包幻觉现象,发现商业模型平均幻觉率为5.2%,开源模型为21.7%,并提出了有效的缓解策略以在保持代码质量的同时显著减少幻觉。
2025-03-02 cs.AI cs.CR cs.LG
Breaking the borders: an investigation of cross-ecosystem software packages
软件生态系统是在同一环境中开发和发展的项目的集合。现有的文献调查软件生态系统作为孤立的实体,其边界不重叠,并假设它们是自包含的。然而,许多软件项目分布在不止一个生态系统中。作为不同的方面,例如,成功、安全漏洞、错误等,这种跨生态系统的软件包可能会影响多个生态系统,我们调查了这些跨生态系统的软件包在12个大型软件发行版中的存在和特点。我们发现少量的软件包分布在多个包装生态系统中,这些软件包通常分布在两个生态系统中。这些软件包倾向于更好地支持某些生态系统的新版本,而它们的发展可能会影响其他生态系统中的大量软件包。最后,这样的软件包似乎在大型开发人员社区中很受欢迎。
2018-12-13 cs.SE
Bridging the Language Gap: An Empirical Study of Bindings for Open Source Machine Learning Libraries Across Software Package Ecosystems
University of Alberta(阿尔伯塔大学)
本文通过BindFind方法收集并实证研究跨13个软件包生态系统的2,436个ML库绑定,揭示其多由社区维护、版本覆盖有限且技术滞后严重,为开发者集成与后续研究提供依据。
2024-08-19 cs.LG cs.SE
On The Relation Between Outdated Docker Containers, Severity Vulnerabilities and Bugs
将软件打包到容器中正在成为在云和其他环境中部署服务时的常见做法。Docker镜像是用于构建和部署容器的最流行的容器技术之一。容器映像通常包括软件包的集合,这些软件包可能具有影响容器健康的错误和安全漏洞。我们的目标是通过分析过时的容器和安装在其中的脆弱和错误的包之间的关系来支持容器部署者。我们使用容器的技术滞后的概念作为给定容器与最新容器之间的差异,该最新容器可能具有相同包集合的最新版本。对于7,380个基于Debian Linux发行版的官方和社区Docker镜像,我们确定其中安装了哪些软件包,并测量它们在版本更新、安全漏洞和错误方面的技术滞后。我们发现,没有一个版本是没有漏洞的,因此部署者即使部署了最新的软件包也无法避免漏洞。我们为容器开发人员提供了一些关于他们可以遵循的策略的经验教训,以尽量减少漏洞的数量。我们认为,Docker容器扫描和安全管理工具应该通过添加有关其他类型错误的数据来改进其平台,并包括技术滞后的测量,以便为部署人员提供何时更新的信息。
2018-11-30 cs.PL cs.SE
An Exploration of npm Package Co-Usage Examples from Stack Overflow: A Case Study
使用第三方软件包已经成为当代软件开发中的一种常见做法。开发人员经常面临不同的挑战,包括选择正确的库,安装错误,差异,设置环境,以及在软件开发过程中构建失败。维护第三方软件包的风险是众所周知的,但不清楚来自Stack Overflow(SO)的信息如何有用。本文对SO中的npm共用现象进行了实证研究。从超过30,000个SO帖子中,我们提取了2,100个与npm相关的SO帖子,并将它们与217,934个npm库包进行了匹配。我们发现,流行的和高度使用的库并没有经常在SO中讨论。然而,我们可以看到,被接受的答案可能是有用的,因为我们相信使用示例和可执行命令可以被重用为工具支持。
2022-02-28 cs.SE
On the Variability of Source Code in Maven Package Rebuilds
Victoria University of Wellington(惠灵顿维多利亚大学);Oracle Inc(甲骨文公司)
本文研究了Maven包重建中源代码变化性问题,发现构建扩展生成的代码导致非等价源代码,提出应对策略。
2026-02-22 cs.SE
Promises and Perils of Mining Software Package Ecosystem Data
本文综述了挖掘软件包生态系统数据的承诺与风险,探讨了依赖网络获取、边界界定、未使用依赖检测、开发者识别等挑战,并强调了跨语言泛化问题。
2023-05-29 cs.SE
Underproduction: An Approach for Measuring Risk in Open Source Software
针对FLOSS维护依赖志愿者导致的劳动力供需失衡问题,提出“生产不足”风险概念,构建识别框架并结合Debian数据集提出统计方法,通过实验验证其识别高风险包的实用性并揭示Debian中普遍的生产不足现象。
2021-02-27 cs.CY cs.SE