Hi all,
(the following is my personal opinion/view)
Carson Black
Lately, I've become somewhat displeased by a lot of shortcomings of the libzypp stack in regards to how it serves openSUSE.
In condensed list form, my complaints are: - zypp using external binaries for tasks (rpm, repo2solv) causes updates that change those binaries to be be particularly unstable
Especially zypper subprocessing to call rpm is downright dangerous and caused a few issues when the database format of rpmdb changes (does not happen often, but we've had a recent one from BDB to NDB).
- zypp upgrading is unstable when curl is being updated (from what I can remember this is because it uses private libcurl APIs that don't have any stability guarantees) - lack of parallel downloading of packages and repository metadata (even libalpm has this now) - PackageKit backend is extremely subpar (it's the only backend out of ten or so that doesn't support cancelling transactions) - nonexistence of a useful and well-documented plugin interface for zypper - difficult to use from a variety of programming languages as most bindings are broken and unsupported - the C++ API itself is a mess, exposing a ton of implementation details such as the XML parser in public API
I do agree with all of these. Also zypper lacks an equivalent of `dnf repoquery` which I use so frequently, that I have switched to using dnf 99% of the time (the remaining 1% is occasional kernel updates, see below).
*snip*
Any thoughts/objections regarding the possibility of replacing the libzypp stack in openSUSE with the libdnf stack?
I see currently one technical blocker: zypper has some special handling
built in when it comes to kernel updates, that dnf does not have. This
combined with the kernel's self-obsoletion [1] causes occasional issues
on upgrades with dnf (dnf will not be able to update the
kernel). However, this should be fixable by removing the self-obsoletion
from the kernel's spec file.
Well, and then there's the elephant in the room: dnf is a Fedora (and
thus a RedHat) product, while zypper is SUSE's child. Just because of
that it's going to be a rocky road and it will probably take ages or be
downright impossible to push dnf as the default to SLE (zypper has a lot
of SLE specific handling, for example packagehub integration).
While I _personally_ would love to have dnf as the default on
Tumbleweed, I'm afraid it's going to be very hard to even push it to
become an equal to zypper. That does not mean that we shouldn't try
though.
Cheers,
Dan
Footnotes:
[1] see https://bugzilla.opensuse.org/show_bug.cgi?id=1170232 and
https://bugzilla.redhat.com/show_bug.cgi?id=1824102 if you are
interested in further details.
--
Dan Čermák