Package: debian-policy Version: 3.2.1.2 (We've had this argument before, and it degenerated into the policy process row. It seems that Wichert is unwilling to act to fix the process, so I'll just reopen the issue like this. I can't find it in the archives anywhere.)
Currently, wrt shared libraries, we mandate (or do) this: foo2 (2.1) /usr/lib/libfoo.so.2 -> libfoo.so.2.1 /usr/lib/libfoo.so.2.1 (actual library) foo-dev (2.1) /usr/include/foo.h /usr/lib/libfoo.so -> libfoo.so.2 The effect is that foo-dev (2.1) has to have a dependency on foo2 (2.1) because otherwise you might compile against a .so file and headers from different versions. This is bad because it makes it hard to upgrade your runtime environment to run new versions of things without also making your compilation environment generate new and incompatible binaries. We can and should fix this by doing this instead: foo2 (2.1) /usr/lib/libfoo.so.2 -> libfoo.so.2.1 /usr/lib/libfoo.so.2.1 (actual library) foo-dev (2.1) /usr/include/foo.h /usr/lib/libfoo.so (copy of actual library) Now foo-dev (2.1) doesn't need to Depend on any particular version of foo2; >= 2.1 will do. So you can upgrade foo2 without breaking your foo-dev. We should try to do this sooner rather than later, because it's straightforward and almost entirely a good thing. The only downside is that the -dev package wastes some disk space if it happens to be the same version as the shlib package. Ian.