On Fri, Sep 30, 2022 at 03:57:15PM +0200, Laszlo Ersek wrote:
This is the same terrible "push" (or
"registration") model (rather than
the "pull") model that plagues systemd: if a kernel module is missing
from the initrd that's needed for driving a device or a filesystem, the
boot gets stuck without any indication of what *should* happen (i.e.
what dependency is not being satisfied). There is no technical
dependency whatsoever, it's just that an event does not occur that
"might" otherwise "cause progress" from a global perspective.
The exact same silly pattern exists in UEFI, with PPI and protocol GUID
dependencies. Very powerful as long as you are developing a particular
module. Once you forget about it, *and* a particular protocol GUID is
provided outside of your current repository (so you can't simply grep
for it), heaven help you resolve the stuck boot (as, of course, it is
not easy to all to get the set of those protocol GUIDs that *might* get
the DXE dispatcher unstuck via their registration in the protocol database).
How is it better that the librsvg2 package, which is a *low level
package*, includes a *semantic dependency* (basically: *knowledge*) of
one of its high-profile comsumers (namely, gdk-pixbuf) -- a high level
package --, and not the other way around? Since when is it a good idea
to encode reverse dependencies in packages? The mind boggles.
All of this registration stuff is for the 5% more comfort of
programmers, at the 90% more discomfort of sysadmins / users.
I think a lot of it comes from the endless quest to make smaller and
smaller container images, which IMHO is little to do with any real
technical problem and more to do with a kind of peacock's tail of
evolutionary battles.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html