On 7/16/26 11:40, Andreas Enge wrote:
Am Thu, Jul 16, 2026 at 11:25:19AM +0200 schrieb Hugo Buddelmeijer:
My take-home from Konrad's article: having one package be more 'modern' and
'better' than another, by no means imply that the other package is 'broken'
and needs to be 'fixed' in the name of progress or harmony.

Luckily, Guix by design makes it feasible, desirable even, to have all these
different packages to co-exist harmoniously all the while being
incompatible.

Well, this is true for C with its dynamic libraries, rpath setting in
applications, and sonames (which is why I do not quite feel your pain
with the Python packages for my own work, although it comes with its own
challenges - five versions of fmt, for instance). But it is made terribly
complicated by propagated inputs. Are these handled by your suggestions?

Yes, those incompatibilities are addressed by letting go of the idea that we should be able to install all Python packages into the same profile. "Most" would be good enough.

There are old abandoned packages that are not updated but that are still useful. We can keep those around with older dependencies. It would just not be possible to use those packages in the same profile with newer incompatible packages.

But that is fine. Or at least, our job is to ensure that we can still use those packages, independently in different profiles. That is what Guix excels at.

Guix would give the users of old software a choice (as in freedom): using it as-is forever, in which case they can't combine it with the latest and greatest other packages, or they can maintain it, or they can abandon it. Other systems force one of those choices.

The drawback to Guix is that Guix would need to provide the 'outdated' libraries that the software requires. As a compromise we can *choose* to patch the outdated software. (And in extreme cases, remove them.)

For instance I remember sage being unusable for a few weeks because
it propagated the Python libraries A and B, which in turn propagated
different versions of the Python library C, causing profile collisions.

Yes, the current way we resolve that is claiming that sage or one of those libraries is broken and needs fixing.

Instead, we would do better by allowing sage to use libraries A' and B' that propagate the same version of C. Maybe the versions of those libraries are specifically kept for sage.

That would mean that sage cannot be installed in the same profile as another application (say Q) that uses library C'. Which is indeed annoying, but not problematic:

- sage could still be installed with an older version of Q, either also provided by current Guix, or otherwise through inferiors,

- sage itself could be improved upstream. The design of Guix ensures that we don't need to do that for them.

Hugo



Reply via email to