On Wed, 06 Nov 2024 14:21:30 -0700
Soren Stoutner <so...@debian.org> wrote:

> On Wednesday, November 6, 2024 12:08:07 PM MST Aaron Rainbolt wrote:
> >For instance, gwenview currently
> > recommends kamera. gwenview is an image viewer, kamera is a tool for
> > working with digital cameras. Now it is true that kamera enhances
> > gwenview's functionality by allowing it to see pictures on a digital
> > camera that is plugged into the system, but by no means is gwenview
> > useless or even substantially degraded from a functionality
> > standpoint when kamera is missing.  
> 
> In my opinion, gwenview recomminding kamara is the correct behavior
> and inline with policy.
> 
> If I install an app, Recommends should pull in everything that would
> make all the buttons in the GUI work correctly.  I shouldn’t have to
> manually install anything else for them to work.  Kamera should
> definitely be in Recommends for gwenview (although not in depends).
> 
> If you don’t want that, set your system to not automatically install 
> recommended packages, and then you can manually install whatever you
> want to get all the features of the app to work correctly.  But
> please don’t mess up Recommends working correctly for the rest of us.

And this brings us back to the original idea of creating a Weak-Depends
field. From my viewpoint, policy states that Recommends is for
declaring a strong (heavy emphasis on "strong" here), but not absolute,
dependency. If the lack of kamera made it so that portions of
gwenview's user interface were visibly grayed out, or error messages
were displayed, then I would see it as a strong dependency since the
lack of it results in a substantial degredation of functionality. But
when kamera is missing, gwenview still works. Things that try to access
the `camera:` KIO slave won't work, but that's the extent of the issues
caused. KIO slaves are essentially plugins of sorts, so I see this as
an additional "nice-to-have" that isn't a dependency at all. This
isn't the only example either - I've had live image builds pull in
things that seemed (to me) to be completely "out of left field", like
random terminal emulators that I have neither interest in nor
willingness to keep in my image builds. (I don't know exactly which
package was the culprit there.)

The solution you mention is to not automatically install recommended
packages. But then you run into "fun" edge cases like system boot
failures[1], sudo or user-setup not being installed[2], and things like
that. When a packager needs to say "technically package A can function
without package B, but only if the user knows exactly what they're
doing", Recommends is the only way to express that, and if Recommends
is also being used to ship unnecessary terminal emulators, plugins for
little-used image viewer functionality, and the like, there's no good
solution except for manual fiddling. This is causing real problems in
at least one downstream derivative of Debian (Kicksecure, which I am
working with), which is why I'm hoping to find a good solution that I
can start implementing and sending patches for.

This isn't to disagree with you at all - I agree that gwenview shipping
kamera as a Recommends is a good thing. Like you say, "I shouldn't have
to manually install anything else for [the buttons in the GUI] to
work". That's a perfectly logical thing to use a field called
Recommends for. But if it's going to be used for that, it would be very
beneficial to identify packages that are recommended and important vs.
packages that are recommended but not that important. That's what I was
thinking Weak-Depends, or a solution similar to it, could do. In the
absence of that, demoting kamera to a Suggests would seem more
policy-compliant in my opinion, but then again that's just my opinion.

(Side note, I wonder if there's a way to implement Weak-Depends that
*doesn't* require modifying all of the tons of packages Johannes
mentioned. Maybe some way of annotating packages in Recommends as
"important" would permit a distinction to be made here in such a way
that most tools wouldn't need changes? Those that were updated would be
able to understand the distinction, those that weren't would continue
to treat Recommends the same way they do today. No idea if that's
feasible, just something that went through my head.)

[1]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1078792
     If systemd-cryptsetup is missing on an encrypted system and one
     installs dracut with --no-install-recommends, the system will be
     rendered unbootable.
[2]: 
https://live-team.pages.debian.net/live-manual/html/live-manual/customizing-package-installation.en.html
     Section 8.4.3

Attachment: pgpyd4I9j4qPq.pgp
Description: OpenPGP digital signature

Reply via email to