Hi!

On Sat, 2018-09-08 at 20:18:10 +0200, Sylvestre Ledru wrote:
> Le 08/09/2018 à 18:39, Sean Whitton a écrit :
> > On Fri 07 Sep 2018 at 10:10PM +0200, Ruben Undheim wrote:
> > > However, I think the policy gives us a lot of freedom to choose (it
> > > is not very strict in this case).
> > 
> > I don't understand.  This seems pretty strict:
> > 
> >     Two different packages must not install programs with different
> >     functionality but with the same filenames.

> I think the policy should be changed.

I'd very very strongly oppose any such change.

It's also sad to see that the tech-ctte decision on the node non-problem
seems to have created, for some, such very bad precedent. :(

> It was possible to accommodate that when the archive was a few thousand
> packages. Now that it is much bigger, that floss are everywhere,
> packages are being forked, we might want to update the policy to give
> more flexibility.

Precisely now, with so many packages, it's way more important than ever
to keep such policy, compared to earlier times where such potential
conflicts could have been possibly tracked and managed more easily.

> Renaming binaries is a big pain, it is confusing for the user, making
> the life of the maintainer harder, the documentations won't reflect
> the Debian-reality.

With a shared namespace like PATH, and a global uncoordinated amount
of upstreams assigning names autonomously, user confusion is guaranteed
outside of the realms of Debian, where we are the designated guardians
of this namespace. Let's not make it worse for ourselves, just because
that mess is uncontrollable outside our boundaries.

> The wording should be changed from "must" to "should":
> ---
> Two different packages should not install programs with different
> functionality but with the same filenames.
> ---
> and give more flexibility to maintainers.

That would, IMO, be catastrophic.

> Or am I missing a key reason for this?

Yes. The PATH namespace provides a (time-bound) contract with a set of
interfaces. Those interfaces are exposed by name. When we use something
like update-alternatives, dpkg-divert or Conflicts we do that only for
compatible interfaces, even though the underlying implementations might
support more functionality (such as dash vs bash for /bin/sh).

Using any of the above methods to provide different interfaces on the
same name would cause untold breakage and confusion in user minds,
systems, programs and subvert the dependency system.

Say for example a user has local program relying on such interface, and
one admin replaces it with a conflicting interface; one thing is the
interface going missing the other is it starting to do something
completely different. Or a package Recommends/Suggests one of these
alternative interfaces, now you'd need to track any such recommends
and add Conflicts to any of these packages, otherwise they might
optionally try to use them and stop working, or cause damage, etc. This
then would leak this information all over the dependency graph. Not to
mention making different subgraphs completely unavailable due to do
those Conflicts.

Also, above I say time-bound, because it's actually fine (if handled
correctly) to reuse a specific name for different interfaces in different
Debian releases, because the contracts are different and non-changing
within those time-boundaries.

Thanks,
Guillem

Reply via email to