On Tue, 2022-05-24 at 09:22 +0200, Johannes Meixner wrote:
Second: All openSUSE package maintainers should specify RPM dependencies in the same way to get a consistent user experience.
Great goal. Can you explain how you intend to reach it. I believe it's hopeless for "Recommends:". "Recommends" means "the maintainer thinks that most users will find it useful to have package B installed together with package A". But not *all* users, otherwise the maintainer would have used "Requires". So how many is "most"? 70% ? 80%? 90%? And how do you even measure that? It comes down to an estimate, always. Very hard to do consistently if different human beings with different intuition are involved.
I believe that we have better instruments than "Recommends" these days, in particular booleans. In the example at hand, we could create a pseudo-package by the name of, say, "system-requires-wifi". Yast would install this package automatically during system setup if Wifi hardware was deteced. Then Networkmanager could have a dependency like this:
Requires: (NetworkManager-wifi = %{version} if system-requires- wifi)
RFC 1925 item 6a: "It is always possible to add another level of indirection."
RFC 1925 item 6: "It is easier to move a problem around (for example, by moving the problem to a different part of the overall [...] architecture) than it is to solve it."
RFC 1925 item 5: "It is always possible to aglutenate [sic] multiple separate problems into a single complex interdependent solution. In most cases this is a bad idea."
What exactly do these generic words of wisdom help to solve the issue?
I think what software is usually needed by the user should be better specified via patterns.
Patterns also add another level of indirection but the patterns indirection is at least only one single generic and commonly known way to do that in contrast to various kind of individual levels of indirections at each specific RPM package.
Fair enough, if it comes down the same behavior. What's important is that weak dependencies don't cut it. It's the conditional that matters. The combination of two requirements ("Networkmanager" and "wifi") maps to a *hard* requirement for "Networkmanager-wifi", whereas without "wifi", there would be *no dependency at all*. That's far better than the hand-waving "Recommends". If we can do this with patterns, fine with me. Martin