(I've sent this before, but it seems to have never reached the mailing list, so re-sending again; although less interesting today, when RHEL 8.7 and 9.1 Beta are already out, yet I believe the thoughts about Stream concept are worth looking at).
As you likely know, CentOS Stream is a new concept that allows the community to see what future RHEL brings. Let me touch on a few specific things that you can test in CentOS Stream 8 and 9 for some time already, and couldn't see in a released RHEL until recently.
Module streams concept is used in CentOS Stream 8 and 9 (and thus also in the future RHEL-8.x and RHEL-9.x versions) for delivering alternative versions of popular stacks for developers (except other components). You can for example try the latest Node.js version 18, Ruby 3.1, or Maven 3.8. How? Let's see an example with a CentOS Stream 9 container image:
First, pull the CentOS Stream 9 image using podman and run it: #> podman pull centos:stream9 #> podman run -ti --rm centos:stream9
Then, use dnf to list available modules [root@ad0a3f9d2aa3 /]# dnf module list
Here you see a couple of modular streams that are not enabled by default but are available in the repository in parallel to the default version (which is 3.0 in the case of Ruby and CentOS Stream 9).
Now, the most important part, enable the latest available version of Ruby and install some packages: [root@ad0a3f9d2aa3 /]# dnf -y module enable ruby:3.1 [root@ad0a3f9d2aa3 /]# dnf -y install ruby
And finally, check what version we actually have: [root@ad0a3f9d2aa3 /]# ruby --version ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
And you can follow a similar pattern for other module streams, that are on their way to the next RHEL minor release. This way, CentOS Stream and RHEL users can test the new content earlier than before and provide feedback in the BZ [2].
[1] https://www.centos.org/centos-stream/ [2] https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20L...
Enjoy! Honza
On Wed, Oct 5, 2022 at 3:44 AM Honza Horak hhorak@redhat.com wrote:
(I've sent this before, but it seems to have never reached the mailing list, so re-sending again; although less interesting today, when RHEL 8.7 and 9.1 Beta are already out, yet I believe the thoughts about Stream concept are worth looking at).
As you likely know, CentOS Stream is a new concept that allows the community to see what future RHEL brings. Let me touch on a few specific things that you can test in CentOS Stream 8 and 9 for some time already, and couldn't see in a released RHEL until recently.
Module streams concept is used in CentOS Stream 8 and 9 (and thus also in the future RHEL-8.x and RHEL-9.x versions) for delivering alternative versions of popular stacks for developers (except other components). You can for example try the latest Node.js version 18, Ruby 3.1, or Maven 3.8. How? Let's see an example with a CentOS Stream 9 container image:
Is anyone at all finding modularity to be genuinely helpful? Because EPEL has abandoned modularity, compiling or integrating local versions of packages or EPEL related packages has been a real hindrance for those of us who publish new python RPMs or backport them from EPEL. Given EPEL's abandonment, it does not seem to have been worth the resulting instability.
The older method of publishing packages with a suffix for the release versions worked noticeably better, as it did for perl, python, java, gcc, autoconf, make.and ruby.
No one likes to build modules and maintain packages that uses them xD. I could write a huge rant about it, but I believe that **You are asking the wrong people.**
Users, they experience, opinions and actual data about usage would be much more helpful. I believe that RH has this kind of data with proper analyses.
**Paragraph above might be copium ;).**
Best, Alex
On 10/5/22 23:34, Nico Kadel-Garcia wrote:
On Wed, Oct 5, 2022 at 3:44 AM Honza Horak hhorak@redhat.com wrote:
(I've sent this before, but it seems to have never reached the mailing list, so re-sending again; although less interesting today, when RHEL 8.7 and 9.1 Beta are already out, yet I believe the thoughts about Stream concept are worth looking at).
As you likely know, CentOS Stream is a new concept that allows the community to see what future RHEL brings. Let me touch on a few specific things that you can test in CentOS Stream 8 and 9 for some time already, and couldn't see in a released RHEL until recently.
Module streams concept is used in CentOS Stream 8 and 9 (and thus also in the future RHEL-8.x and RHEL-9.x versions) for delivering alternative versions of popular stacks for developers (except other components). You can for example try the latest Node.js version 18, Ruby 3.1, or Maven 3.8. How? Let's see an example with a CentOS Stream 9 container image:
Is anyone at all finding modularity to be genuinely helpful? Because EPEL has abandoned modularity, compiling or integrating local versions of packages or EPEL related packages has been a real hindrance for those of us who publish new python RPMs or backport them from EPEL. Given EPEL's abandonment, it does not seem to have been worth the resulting instability.
The older method of publishing packages with a suffix for the release versions worked noticeably better, as it did for perl, python, java, gcc, autoconf, make.and ruby. _______________________________________________ CentOS-devel mailing list CentOS-devel@centos.org https://lists.centos.org/mailman/listinfo/centos-devel
On Wed, Oct 5, 2022 at 6:19 PM aleksander.baranowski via CentOS-devel < centos-devel@centos.org> wrote:
On 10/5/22 23:34, Nico Kadel-Garcia wrote:
Is anyone at all finding modularity to be genuinely helpful? Because EPEL has abandoned modularity, compiling or integrating local versions of packages or EPEL related packages has been a real hindrance for those of us who publish new python RPMs or backport them from EPEL. Given EPEL's abandonment, it does not seem to have been worth the resulting instability.
No one likes to build modules and maintain packages that uses them xD. I
could write a huge rant about it, but I believe that **You are asking the wrong people.**
Users, they experience, opinions and actual data about usage would be much more helpful. I believe that RH has this kind of data with proper analyses.
I use Fedora as well as various EL distros in my day-to-day, and one thing I've noticed from the start is that Fedora modularity doesn't tend to get in my way, while RHEL and derivatives, modularity gets in my way every day. This may depend upon people's expectations and workflows.
Let's pick qemu-kvm as one example. In Fedora, it's part of regular base + updates. It "just works", and doesn't seem to interfere. But, in RHEL 8, somebody decided to take it further, and proactively put it in "virt" and "virt-devel". Then, they identified any libraries that they thought were "virt" related, and put them in there, splitting them up, forever to create confusion. With the RHE-V / CentOS Advanced Virtualization, the modularity system had to be disabled to allow this to work because not only did nobody understand it, but the number of dependencies that had to be embedded to do it "properly" was a huge amount of work. It wasn't good enough to just provide a better "qemu-kvm" - you had to provide the entire set of libraries that it depended upon as well. This seems to have settled with the merged of CentOS Advanced Virtualization into CentOS 8 Stream, and then release in RHEL 8.6, but that's a very long time to run with effectively a package conflict in your environment. A package conflict which modularity was designed to *solve*, not *create*.
Or, let's pick Docker as another example. Docker CE / EE didn't work on RHEL 8 without bypassing modularity, due to the same problem as above. Dependencies were not embedded with Docker CE RPM upstream, but why should they have to additional produce containerd.io and others, just to contribute? Much of this conflict also seemed to do with podman and others, that selecting the module enabled that would be in direct conflict, but if you didn't enable the module, you were missing dependency packages. This seems to have all settled - I think possible because Docker CE RPM is basically self-container written in Go, and once they got the dependency list down, and the work-arounds documented in code, it is working again. But, this is another case where modularity was designed to solve this problem, not create it.
I think modularity is highly misunderstood. Maybe because it is confusing. Modularity is not a very good way of separating your OS into logical components like "virt". We already have Yum groups to do that. The benefit of modularity (at least to me), if there is still one after the abuse has left people scarred and angry, is the ability to publish conflicting releases of a component side-by-side in the Yum repository, and allow the user to resolve the conflict by identifying which one they wish to expose.
In the case of qemu-kvm, it might work if it embedded fewer dependencies, and if they actually published different versions of Qemu side-by-side, and tested it, and resolved the overhead by feeling it for themselves. But, by proactively publishing a "virt" and putting everything "virt" into it, they created something that basically "can't" work without huge amounts of effort and confusion, with most people just bypassing modularity rather than trying to deal with it. But also - I'm not sure that anybody asked for qemu-kvm to stay old. Why is qemu-1.5.3 normal in RHEL 7? Why was qemu-2.12 normal in RHEL 8 original release?
For Docker - at least on the surface, it seems like podman and others was an attempt to distinctly depart from Docker upstream releases, and provide an entirely new thing, with a clear effort of making it easier to use podman, and hard to use Docker. I suppose it could have been a zealous accident, but I think the people involved are far too smart to be making such accidents.
I think this was all against the backdrop of the policies around package life cycle, mixed with politics around making RHEL unique value-add compared to others, and this spilled into the complex modularity system, and resulted in something which was worse, than not doing modularity at all. Bad for RHEL. Bad for people trying to create their own value-add on top of RHEL. But, that's how a lot of these things go - and this certainly isn't the biggest such move or consequence in recent times.
There are other packages such as Python, that are impractical to use the module system on, and the older model of having packages installed side-by-side with their own names, and alternatives in front, still works great for many of these.
Beyond pointing out things that might be obvious - I think my real point, is that I don't feel harmed by modularity in Fedora. I've tried to explain why I think that is. I think Fedora used it in places that it more often looks like value, and less often creates conflicts. Or, maybe my workflow is just lucky.
I think modularity being bad, is like calling a hammer bad. A hammer isn't bad at driving nails. A hammer is definitely bad at many other things. :-)