Package distribution is the problem of delivering packages from authors to integrators in such a way that the latter can effectively combine the packages into a larger whole. If it is done poorly, the integrators will face a compatibility jigsaw puzzle that has been called things like DLL Hell and RPM Hell. The problem is real, but I believe these names place the fault incorrectly: it is not the DLL format or the RPM format which is to blame, but the distribution network. I would like to understand and improve the package distribution networks.
For this problem, Linux distributions have a lot to show us. Linux distributions have long addressed the problem of assembling workable systems out of multiple available versions of reconfigurable OS subsystems. The techniques that work for Linux distributions, I believe will also help with distributing libraries within a programming-language community. Likewise, I believe these techniques can help in the infrastructure for large software projects.
I have written a position paper on this topic, taking the stance that even a simple "package universe" approach to distribution would already be superior to what most programming-language communities use. As ongoing experiments, I work with Package Universes for Squeak and with sbaz for Scala to test this theory. In addition, thinking about package distribution leads one naturally to think about interface evolution.