DNF: The New Package Manager Of Fedora 18
As mentioned earlier this week, Fedora 18 will feature a new package manager. Here's a redux with some additional information on DNF.
As covered in the original article, the Fedora Engineering & Steering Committee approved "DNF" for Fedora 18. DNF is the new package manager for Fedora 18 that's forked from Yum 3.4. Yum will continue to be the default package management solution for Fedora 18, but DNF will live alongside the "Yellowdog Updater, Modified" as a new experimental solution.
DNF is built atop Hawkey, which is a new package management library that in turn is built on libsolv for its back-end. The new API is said to be better unified, provides fewer restrictions on the client implementation language, and should yield long-term performance improvements. The API, however, isn't yet stable and is more proof-of-concept. DNF development goals include using a SAT solver for dependency resolution, support to eventually use the same SAT solver as DNF within the RPM command, strict API definitions for plug-ins, strict API definitions for extending projects, a leander code-base than Yum, easier maintenance, and better performance while on a smaller memory footprint.
With Fedora 18 the new package manager will be exposed by the dnf command, but it's widely speculated that once stable DNF will eventually be merged into Yum (or replaced) and then succeeds the yum command. Until then they can live independently together should the new DNF solution go awry.
This new route with DNF was chosen over using ZIF or SUSE's zypp because the new solution can provide a sane API with some Yum backwards compatibility, DNF/Hawkey are working towards using the same resolver across the entire stack (with RPM), and the libsolv back-end is well-tested and proven code-base.
Earlier this week there were concerns about DNF since it was to drop Yum's history sub-command support, but since then it's been said the feature will be restored since it's still widely sought after by developers using Yum.
For some additional background on DNF, Ales Kozumplik of Red Hat wrote on the mailing list:
Be assured I am in contact with Yum developers and the new features happening for F18 there are planned to be integrated to DNF.Another concern that's been raised is that the Yum developers that DNF developers have been communicating with have primarily been the developers internal to Red Hat rather than the community contributors.
The decision to fork yum into using libsolv instead of trying to evolve it slowly was a difficult one yet it was the right one. Unified depsolving is only a part of the project, the other primary goal is arriving at concrete, cleaned up API for external applications and plugins. This is very hard to get done without having free hands to refactor, remove, cleanup and change for better testability because in Yum one always has to look behind his back for tricky backward compatibility issues.
I think the best way to describe the "DNF" project really is as "the next-gen yum". Departing from the old APIs is a part of it. There are little alternatives also: the gradual deprecation of some of the Yum's legacy interfaces hasn't been very successful in the past. Or I could keep DNF under the lid for another one or two Fedora releases, but I find it a better alternative to package this early version: both for those Fedora users who will bravely try it (and hopefully report feedback) and the community members who might join the effort.
On the Fedora Wiki is a bulk of the DNF package manager information as it pertains to Fedora's implementation in the near-term.
Over at GitHub is more information like a glance at their initial plug-in API, Yum features being considered for dropping, etc.