The scheme that Canonical seems to be playing with is that larger projects (DEs, central libs) are put into what they call frameworks.<p>These are packages that other packages can refer to rather than massively duplicating the content within themselves.<p>These frameworks will in turn be versioned, so that if package X wants framework Z, while Y wants Z+1 they can both be happy without descending into dependency hell.<p>Note that Gobolinux gets around this to a degree by using age old soname and symlinks. This in that ld and similar is pointed at a directory containing symlinks.<p>libxyz.so.1 will be pointing to whatever is the active version of libxyz, while something like libxyz.so.1.1 will be pointing to that specific lib version.<p>Disabling a specific lib version is done by removing the relevant symlinks.<p>Gobolinux provides tools for doing this, but they are basically shell scripts. And so in a pinch someone can do all that manually.