Nikos Mavrogiannopoulos <nmav@redhat.com> wrote on Fri, 13 Feb 2015 14:11:49 +0100:
On Fri, 2015-02-13 at 15:21 +0330, Hedayat Vatankhah wrote:
Dear all,
I don't know if this has been discussed before, but I didn't find any.
Summary: I have a proposal to make it easier for maintainers to have
multiple versions of the same library in distro (by making it
*naturally* possible) (and with minimal maintenance overhead), and for
users/developers to get their desired version(s) installed. Proposal
in brief: instead of packaging libfoo as libfoo, the maintainer *can*
package it as libfooVER (e.g. libfoo2) and create libfoo/libfoo-devel
package which depends on libfoo2/libfoo2-devel. Now, libfoo-3 package
can be packaged as libfoo3, and both can be installed simultaneously
(assuming that they provide different .so versions, otherwise it could
be provided as an update to libfoo2). Notice that once libfoo2 is in
the repos, newer versions (libfoo3/libfoo4)  should not require a
package review. 
I'm not against it, for the libraries which provide proper symbol
versioning. Otherwise, if you only rely on the soname, you may end up in
a situation where a program crashes because of inter-dependencies which
make it link with both libfoo1 and libfoo2 which provide the same (but
most likely incompatible) symbols.
I wonder if it should be taken care of by packages, rather than libraries themselves. I'm not sure, but probably most of the libraries doesn't have such symbol versioning in place.
Also, note that all packages must be linked to the 'default' version, unless strictly needed. And probably linking to libfoo1 and libfoo2 simultaneously should be checked automatically (e.g. AutoQA) and forbidden completely.

Thanks,
Hedayat