Open source software ecosystems consist of thousands of interdependent libraries, which users can combine to great effect. Recent work has pointed out two kinds of risks in these systems: that technical problems like bugs and vulnerabilities can spread through dependency links, and that relatively few developers are responsible for maintaining even the most widely used libraries. However, a more holistic diagnosis of systemic risk in software ecosystem should consider how these social and technical sources of risk interact and amplify one another. Motivated by the observation that the same individuals maintain several libraries within dependency networks, we present a methodological framework to measure risk in software ecosystems as a function of both dependencies and developers. In our models, a library's chance of failure increases as its developers leave and as its upstream dependencies fail. We apply our method to data from the Rust ecosystem, highlighting several systemically important libraries that are overlooked when only considering technical dependencies. We compare potential interventions, seeking better ways to deploy limited developer resources with a view to improving overall ecosystem health and software supply chain resilience.
翻译:开放源码软件生态系统由数千个相互依存的图书馆组成,用户可以大量结合。最近的工作指出了这些系统中的两种风险:如虫子和脆弱性等技术问题可以通过依赖关系扩散,而相对较少的开发者负责维护甚至最广泛使用的图书馆。然而,对软件生态系统中的系统性风险进行更全面的分析,应考虑这些社会和技术风险来源如何相互作用和相互扩大。由于观察到这些个人在依赖关系网络中保留若干图书馆,我们提出了一个方法框架,用以衡量软件生态系统中的风险,作为依赖者和开发者的一种功能。在我们的模式中,一个图书馆的失败概率随着开发者离开而增加,而上游依赖关系也失败了。我们运用了我们的方法,从鲁斯特生态系统中收集数据,突出了在考虑技术依赖性时被忽视的若干系统重要图书馆。我们比较了可能采取的干预措施,以更好的方式部署有限的开发资源,以期改善整个生态系统的健康和软件供应链的复原力。