Taxonomy of Package Management in Programming Languages and Operating Systems
Reviewed by Greg Wilson / 2021-09-22
Keywords: Package Management, Tools
Muhammad2019 opens by saying, "Package management is instrumental for programming languages and operating systems, and yet it is neglected by both areas as an implementation detail," to which I can only reply, "Amen." The authors go on to create a simple taxonomy of package management systems with language-agnostic versus language-specific as one axis and filesystem-oriented versus database-oriented as another, then discuss the crucial issue of integration between languages versus integration between package managers. (If you have ever struggled to keep C extensions to Python in sync, you'll share the authors' frustration that package managers don't integrate as cleanly as languages do.)
Reading this paper brought the difficulties package managers face into focus for me, and I will use its taxonomy in the future when teaching. A rational reconstruction like the one in yesterday's paper on build systems would have been helpful; I hope someone will use this paper as a starting point and build something like that.
Muhammad2019 Hisham Muhammad, Lucas C. Villa Real, and Michael Homer: "Taxonomy of Package Management in Programming Languages and Operating Systems". Proceedings of the 10th Workshop on Programming Languages and Operating Systems, 10.1145/3365137.3365402.
Package management is instrumental for programming languages and operating systems, and yet it is neglected by both areas as an implementation detail. For this reason, it lacks the same kind of conceptual organization: we lack terminology to classify them or to reason about their design trade-offs. In this paper, we share our experience in both OS and language-specific package manager development, categorizing families of package managers and discussing their design implications beyond particular implementations. We also identify possibilities in the still largely unexplored area of package manager interoperability.