On Mon, Jul 31, 2017 at 10:59:58AM -0400, Matthew Miller wrote:
> The thing that jumps out immediately is that respondents _really_
> prefer the "dnf module install httpd" syntax — 73% love or like that,
> while 7% dislike or hate it. 21% love or like "dnf install httpd" for 
> installing
> modules, while 46% dislike or hate it. And a full half of that dislike
> is hate, or in other words more people completely hate it than like or
> love it _combined_. The "dnf install @httpd" syntax gets just a little
> bit less hate, but also less love.

I talked to Langdon, who is a strong advocate of the "bare" `dnf
install httpd` syntax.

His argument is that modules should be seen as if they are
metapackages¹, and that it would be an odd extra step to have to
effectively first enable the ability to install packages and _then_
install them. I'll let Langdon make his own argument, but basically
akin to shipping Fedora split in different repos, some of them
disabled. That's because with the other options, if you install Modular
Fedora and don't have an enabled module containing the package you ask
for, you get "that doesn't exist".²

This did not convince me, exactly — but it did sway me in favor of the
`dnf install @httpd` syntax. That's because I think these are really
more like Super Comps Groups (with more and better metadata and
multi-stream powers!) than they are like virtual packages, and I still
think the bare syntax is confusing because behavior will be different
based on something you might not know before you run the command. And
we already _have_ the @whatever syntax for comps groups.

So that's now my revised personal opinion. :) In fact, I think we
should support a syntax like this:

   dnf install [rpm][@module[:stream]]

so you could do

   dnf install rpm            # install an rpm from any stream
   dnf install @module        # enable default stream of a module 
                              #   and also install default profile
   dnf install rpm@module     # enable module, install rpm from it
   dnf install *@module       # install all packages from module?
   dnf install @module:latest

It'd also be lovely to have a way to pick a profile as well as a
stream. I'm not sure of a great way to encode that. Maybe 

   dnf install {minimal}@module

with literal {}s?

This could all be backed by "dnf module install" commands, just like we
have "dnf install @compsgroup" and "dnf groupinstall compsgroup".

---

1. They're not literal RPM metapackages because 1) that would require
possibly-incompatible changes to RPM metadata and 2) this gives us the
flexibility to _possibly_ in the future integrate other packaging
formats, like native packages or containers or whatever, without
redesigning everything.

2. I guess DNF could learn to say "`foo` RPM isn't in any enabled
modules, but maybe you meant 1) a module named `foo` or 2) to enable
module `bar`, which contains RPM `foo`.

-- 
Matthew Miller
<mat...@fedoraproject.org>
Fedora Project Leader
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org

Reply via email to