Randy Barlow wrote:
> I haven't used Nix before, so I can't comment on that one, but in what
> way would Gentoo's solution require a substantial user experience
> change? When Gentoo added it, the only user experience change for me
> was when I wanted to pick a non-default slot (or as we call it,
> stream). If I wasn't doing that, things just kept working they way they
> had for years before that. It's still like that to this day - I only
> have to know about Gentoo slots if I am trying to opt-in to some
> version that isn't the default (the default in Gentoo is typically the
> latest stable version). Actually, even if you don't opt in you are
> likely to end up with a few packages parallel installing due to
> dependencies pulling in different versions of things.
The big difference is that Gentoo is source-based, whereas Fedora is binary-
based. So where Gentoo needs to ship only one ebuild (the equivalent of a
specfile) for foo-1.2.3 that the user can then compile against different
choices of dependencies, we need to ship binary RPMs of that same foo-1.2.3
version for each and every combination (exponentially many) of dependency
versions that we want to support. Which is one of the unsolved issues with
our Modularity implementation, too.
One solution would be to pick one combination of dependency versions and
rely on parallel installation of the dependencies, but for that, we need not
only a stream system, but also the file system layout tweaks of the
parallel-installable Gentoo slots. For parallel installation, there are
really only 2 solutions:
1. manually tweak things per package in the least invasive possible way
(e.g., installing headers to /usr/include/qt5 rather than just
/usr/include), as already done in compatibility packages, or
2. use a custom prefix under /opt, as is already done in SCLs.
I think 1. is by far superior (even though it is more work), and AFAIK, FPC
and FESCo mostly agree: in fact, Fedora ships packages that do 1., but not
packages that do 2. (SCLs have basically been rejected in Fedora).
langdon wrote:
>> * compat-libs (or compat lib style): not discoverable, name mangling
Randy Barlow replied:
> Yeah I don't love this either.
I don't understand why people dislike compatibility libraries so much.
"not discoverable": How so? If you search for foo in Dnfdragora, you will
automatically also find foo1. How is that "not discoverable"? In addition,
compatibility libraries are usually used for non-leaf packages, which in
most cases you don't want to install directly, but instead, whatever you
actually want to install will automatically drag in the correct version. So
there is nothing to "discover" in that case.
"name mangling": Why is this a problem? First of all, it is not mangling, it
is suffixing. The original name is retained unchanged and nothing is
prepended to it, only appended. And, e.g., Qt 3, 4, and 5 are all different
packages, so why should they have the same package name? I can understand
people complaining about "mangling" if you do things the Debian way and
append an soversion (not a human readable version, so the KDE 3 libraries
end up as kdelibs4 and the KDE 4 libraries as kdelibs5!) to all libraries
(even the default version), but that is not how compatibility libraries work
in Fedora.
I think that compatibility libraries are the much cleaner solution than any
stream-based approach, be it module streams or Gentoo slots.
Kevin Kofler
_______________________________________________
devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/[email protected]