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 We rarely have bug reports about this, so I'm not really sure what you are referring to here. Especially updates to librpm are messy if you link against it directly. That's one of the reasons
- 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) AFAIK we do not use private libcurl APIs do you have a example about
- lack of parallel downloading of packages and repository metadata (even libalpm has this now) We are currently working on exactly that. First step is parallel
On 7/7/20 5:45 AM, Carson Black wrote: libzypp uses rpm as a external binary. that? If that is the case I'd look into changing it. metadata download, next one is parallel downloads of rpms. Since the libzypp APIs is not at all fit for concurrency we need to jump through some hoops to make it work.
- PackageKit backend is extremely subpar (it's the only backend out of ten or so that doesn't support cancelling transactions) Can't say much about that since the packagekit backend is not maintained by the zypp team though. But I have to admit I have it disabled because it interferes with me using zypper directly. - nonexistence of a useful and well-documented plugin interface for zypper There is a plugin interface https://doc.opensuse.org/projects/libzypp/HEAD/zypp-plugins.html though. - difficult to use from a variety of programming languages as most bindings are broken and unsupported True, currently only C++ would be supported. - the C++ API itself is a mess, exposing a ton of implementation details such as the XML parser in public API
Unfortunately, the lack of a developer ecosystem around and using libzypp gives me extremely little hope that any of these architectural issues will be fixed. We are actively working on fixing many of those issues, but since we are only a few ppl working on it full time we need to balance it with bug fixing etc. Of course contributors would be welcome :)
--
Benjamin Zeller