* Vincent Lefevre <vinc...@vinc17.net> [220517 06:36]: > On 2022-05-16 16:14:02 +0000, Bill Allombert wrote: > > On Mon, May 16, 2022 at 12:56:03AM +0200, Sebastian Ramacher wrote: > > > And for the record: you get pipewire installed because libpipewire-0.3-0 > > > recommends it. > > > > For a similar situation, I advocated to add a apt option so that apt > > only install Recommends of the packages on the command line, but not > > Recommends of dependencies (and not Recommends of Recommends). > > This would make recommends more usable but less deterministic. > > So, if I understand correctly, this implies that if a package A needs > package B and package B recommends package C, and if it happens that > A needs C, then package A should also depend on or recommend C. > > And what about upgrades? Should Recommends be checked only for > manually installed packages?
I disagree with making Recommends non-transitive. The problem is incorrect use of Depends and Recommends. This used to be a much bigger problem; at least one large packaging group in the past had intentionally abused Depends in metapackages because they felt too many users had turned off automatic Recommends, and they were getting too many bug reports about features not being available. Turning off automatic Recommends was (and still is, I think) common because too many packages inflate the dependencies. Inflating dependencies creates a positive feedback loop, which will only end with the entire archive using _Depends_ for everything. The situation seems to be much better now, but it is still not as good as it could be. Let's analyze the Recommends in libpipewire-0.3.0. First, the definition of Recommends: This declares a strong, but not absolute, dependency. The Recommends field should list packages that would be found together with this one in all but unusual installations. Because pipewire, pulseaudio, and ALSA each provide sound middleware, and the user may have a preference for one of them, a number of applications (e.g. mpd, obs-studio, and webcamoid-plugins) link the libraries for all three sound servers. Somehow they each choose which library to use at runtime. It is clear from this that libpipewire is commonly installed in situations where pipewire is not only not used, but actually not _wanted_. Using Recommends is clearly wrong in this case, both from a practical point of view and by any reasonable interpretation of Policy. This same analysis, when applied to other situations, is why making Recommends non-transitive is the wrong solution to the problem; fixing the level of dependency is the right solution. There is, unfortunately, a catch here. In order for any of the applications that require a sound server to work, one of them must be installed. For example, mpd links with libasound, libpipewire, and libpulse. If each of these libs simply provides the glue to another package that provides the middleware and drivers, and for the reasons stated above they each only Suggest their middleware package, then it is possible for _none_ of the sound servers to be installed. I do not fully understand the relationships between the different sound servers, for example I think pulseaudio can use ALSA as one of its backends, but do I think that they all need to be co-installable without interfering with the operation of each other, because some applications appear to only use pulseaudio and others only pipewire. Clearly from the original message in this thread, installing pipewire breaks at least some setups when using VLC and ogg123. This is definitely a bug, either of severity "serious" (violates Debian Policy definition of "Recommends") or "critical" (breaks other software). But I think to sort this out will require the sound server maintainers to come up with a way for the user specify which sound server to use, and then have a metapackage that forces at least one of them to be installed. I think you (Vincent) are fully justified in filing a bug against libpipewire of severity at least "serious", however it may take more than just downgrading the Recommends to Suggests in order to straighten this out correctly. ...Marvin