(Please keep the conversation on the devel list; I'm CCing it the rel -eng list to make sure all the relevant people see the initial message)
This past week, the Fedora Packaging Committee approved the use of "weak dependencies" in Fedora. What this means is that RPM packages can now have three levels of dependency-resolution: Requires, Recommends and Suggests. * Requires: the requested package cannot function without this additional package installed * Recommends: the requested package can function in some minimal capacity without this additional package installed, but the majority of installations will want it for full productivity. These are usually core plugins for the primary package. DNF defaults to installing Recommends: dependencies automatically. * Suggests: the requested package can easily function without this additional package. This module may provide some less-common functionality that a user might want. DNF defaults to *not* installing Suggests: packages automatically.
Traditionally, we have only supported "Requires" dependencies and thus the creation of install media (Live and otherwise) has been relatively straightforward: we create a kickstart file that is fed into the compose process containing a list of packages and groups that we want installed onto the target system and the compose process automatically pulls in all of the dependencies. However, with the advent of weak dependencies, we have new questions that need answering about how this compose process should work. (We also need to investigate what exactly happens with the tools we have today - some of which still use yum, not DNF - when weak dependencies are added to the mix).
From my perspective, there are three ways that we could choose to go:
1) Follow the default DNF behavior: Requires: and Recommends: packages are included on the install media (and therefore also installed together onto the target system)
2) Include *all* dependencies - Requires, Recommends and Suggests - on the install media. The installer would still follow DNF defaults, so the target system would get only the Requires and Recommends packages unless the Suggests: packages are explicitly selected (which will also require the creation of additional comps.xml changes to include the Suggests packages)
3) Include only Requires: dependencies by default and require spin -kickstarts owners to explicitly add any Recommends or Suggests packages that they also want to include. Packages added explicitly will be installed as described in 2) (requiring additional comps.xml changes to include Suggests stuff)
Note that at the moment, DNF itself does not have a configuration option to tweak the default install behavior, so 'dnf install' effectively treats Recommends the same way as Requires (but 'dnf remove' will treat them differently, of course). I discussed this with the DNF developers this morning and they hope to have a configuration option and/or command-line argument available to change this behavior before Beta Freeze, so we should still be able to ship F23 with any of the above options.
I think the best time to make these decisions is now, well in advance of the Alpha Freeze so we have time to make adjustments as needed. Thank you for reading to the end, I know the above has been a wall-o' -text.
On Fri, Jul 10, 2015 at 8:05 AM, Stephen Gallagher sgallagh@redhat.com wrote:
(Please keep the conversation on the devel list; I'm CCing it the rel -eng list to make sure all the relevant people see the initial message)
This past week, the Fedora Packaging Committee approved the use of "weak dependencies" in Fedora. What this means is that RPM packages can now have three levels of dependency-resolution: Requires, Recommends and Suggests.
- Requires: the requested package cannot function without this
additional package installed
- Recommends: the requested package can function in some minimal
capacity without this additional package installed, but the majority of installations will want it for full productivity. These are usually core plugins for the primary package. DNF defaults to installing Recommends: dependencies automatically.
- Suggests: the requested package can easily function without this
additional package. This module may provide some less-common functionality that a user might want. DNF defaults to *not* installing Suggests: packages automatically.
Traditionally, we have only supported "Requires" dependencies and thus the creation of install media (Live and otherwise) has been relatively straightforward: we create a kickstart file that is fed into the compose process containing a list of packages and groups that we want installed onto the target system and the compose process automatically pulls in all of the dependencies. However, with the advent of weak dependencies, we have new questions that need answering about how this compose process should work. (We also need to investigate what exactly happens with the tools we have today - some of which still use yum, not DNF - when weak dependencies are added to the mix).
From my perspective, there are three ways that we could choose to go:
- Follow the default DNF behavior: Requires: and Recommends: packages
are included on the install media (and therefore also installed together onto the target system)
- Include *all* dependencies - Requires, Recommends and Suggests - on
the install media. The installer would still follow DNF defaults, so the target system would get only the Requires and Recommends packages unless the Suggests: packages are explicitly selected (which will also require the creation of additional comps.xml changes to include the Suggests packages)
- Include only Requires: dependencies by default and require spin
-kickstarts owners to explicitly add any Recommends or Suggests packages that they also want to include. Packages added explicitly will be installed as described in 2) (requiring additional comps.xml changes to include Suggests stuff)
You didn't offer your opinion on which of the three options you think we should go with. I would offer option 1 is the one we'd pick. It honors the intentions of the package maintainer the best. Which would you choose?
josh
On Fri, Jul 10, 2015 at 08:05:24AM -0400, Stephen Gallagher wrote:
- Follow the default DNF behavior: Requires: and Recommends: packages
are included on the install media (and therefore also installed together onto the target system)
Can this have the inverse of the case in #3 (where Recommends are followed by default, but could be explicitly removed by choice)?
- Include only Requires: dependencies by default and require spin
-kickstarts owners to explicitly add any Recommends or Suggests packages that they also want to include. Packages added explicitly will be installed as described in 2) (requiring additional comps.xml changes to include Suggests stuff)
I think I'm in favor of this one. I think a lot of the Recommends are likely to be there because the recommended package is large or has a large dep chain, and that might not be ideal for the install media.
On Fri, Jul 10, 2015 at 5:03 PM, Matthew Miller mattdm@fedoraproject.org wrote:
On Fri, Jul 10, 2015 at 08:05:24AM -0400, Stephen Gallagher wrote:
- Follow the default DNF behavior: Requires: and Recommends: packages
are included on the install media (and therefore also installed together onto the target system)
Can this have the inverse of the case in #3 (where Recommends are followed by default, but could be explicitly removed by choice)?
- Include only Requires: dependencies by default and require spin
-kickstarts owners to explicitly add any Recommends or Suggests packages that they also want to include. Packages added explicitly will be installed as described in 2) (requiring additional comps.xml changes to include Suggests stuff)
I think I'm in favor of this one. I think a lot of the Recommends are likely to be there because the recommended package is large or has a large dep chain, and that might not be ideal for the install media.
Then maybe packagers should be using Suggests for those additional packages. Recommends to me means "the packager thinks the best experience includes this functionality." That is certainly still a tradeoff, but it is a much stronger implication on the packagers part. It also matches the later installation experience.
josh
rel-eng@lists.fedoraproject.org