On Mon, 22 Jun 2020 at 08:14, Zbigniew Jędrzejewski-Szmek <zbyszek@xxxxxxxxx> wrote: > > On Mon, Jun 22, 2020 at 04:55:10AM +0200, clime wrote: > > >> > > Hello Josh, > > >> > > > > >> > > you can change the artifact type while keeping interface the same and > > >> > > it would be a _HUGE_ win because it would make modularity finally > > >> > > understandable for mere humans and better maintainable. > > >> > > > > >> > > Namely, modules should become rpms and therefore obey standard rpm rules. > > >> > > > >> > I'm not sure I entirely understand what you mean, but it sounds like > > >> > you have some interesting ideas. > > >> > > > >> > I'm looking forward to seeing what you and the community can build > > >> > from them, and how they could be brought into RHEL 10+! That kind of > > >> > collaboration is what makes Fedora great. > > >> > > >> I know this probably won't change anything because this was mentioned > > >> many times (by me at least) and nothing has changed but still... > > >> > > >> Currently, modules are essentially yum sub-repos, they are not really > > >> "modules", instead they are collections of rpms that reinvent rpm-like > > >> relations (obsoletes, requires, build-requires, etc.). > > >> > > >> There is no reason for this wheel-reintervention. Modules (the > > >> collections) can be simply squashed into an rpm by automation and this > > >> resulting rpm can go to the modular repo together with other modules. > > I agree with this general idea, even if not with the exact implementation > (comments below). In the past this was stated as "divorcing the build ordering > mechanism from the rpm delivery mechanism". The fact that we have two layers > of dependencies make Modularity conceptually hard and destroy the interaction > with the dependency solver. Also, if we disconnect the build and delivery > mechanisms, we can iterate and improve both separately. Indeed, I agree build and delivery mechanisms should be treated independently. Things would finally get a clear shape. > > > >> That way we don't have two types of objects we complex inter-relations > > >> but only one we well-known behavior. > > >> > > >> I wonder if this is clear to everyone but nobody really cares or > > >> doesn't really want to say it or I don't know. > > >> > > >> Is this clear to everyone? I mean either I am stating an obvious stuff > > >> that nobody really considers worth typing or idk. > > > > > > > > > How would this work when there are optional rpms in the module? > > > > > > You do not need to install every rpm in eg the php module (different graphics/database backends) for that module to be useful, but every version of the module will have the rpm as an option which wont work outside a module of multiple rpms. > > > > Glad you ask, I wasn't precise... > > > > Well, I didn't mean everything always needs to be squashed, instead, > > it would be an optional step in modulemd processing. > > So... if it's only optional, that means that the general case where > squashing is not done needs to be solved anyway. And once you have > solved the general case, what would the point of squashing be? > Thus, I don't find squashing useful. > > > For some > > use-cases (like delicately compiled postgresql server), you can create > > a single rpm that contains all - postgresql-server, postgresql, > > postgresql-libs compiled in a specific way, optionally with some > > postgresql modules pre-included, so it would be let's say time-series > > optimized postgresql. Here it makes sense to make a single rpm from it > > - you install that and you are all set up for your use-case. > > > > Then there are language stacks where you might want to build things in > > a specific order - there nothing really needs to be squashed (or > > certain subset can if it makes sense) but you can still use modularity > > to easily batch-build certain rpms. If there are runtime optional > > deps, they can be described by Recommends/Suggests. > > > > Basically, once a "module" (things that comes from modulemd) is built, > > it should be put into normal repos and the "module" boundary should be > > forgotten (unless it is a single rpm), i.e. "module" is a built-time > > thing, at install-time we just have standard packages with standard > > deps. > > Yep. > > The unanswered question is what mechanism would be used make sure that > the rpms from the "module" are all installed. One option would be to > somehow mangle rpm names, another option would be to add some kind of > Provides/Requires, etc. But *some* mechanism is needed, because without > that dnf would often pick other rpms. > > In Modularity the solution is that the rpms from the module shadow > rpms with the same name from outside. That's probably the single > feature of Modularity that causes the most problems. > > > dnf interface could be kept given that we "Stream" rpm property is > > added. This is still a bit rough what I am saying but hopefully it > > makes at least a bit of sense... > > Zbyszek > _______________________________________________ > devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx > Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx