Re: F39 proposal: Replace DNF with DNF5 (System-Wide Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 6, 2022 at 2:29 PM Ben Cotton <bcotton@xxxxxxxxxx> wrote:
>
> https://fedoraproject.org/wiki/Changes/ReplaceDnfWithDnf5
>
> This document represents a proposed Change. As part of the Changes
> process, proposals are publicly announced in order to receive
> community feedback. This proposal will only be implemented if approved
> by the Fedora Engineering Steering Committee.
>
> == Summary ==
> Make DNF5 the new default packaging tool. The change will replace DNF,
> LIBDNF, and DNF-AUTOMATIC with the new DNF5 and new Libdnf5 library.
> It is a second step after
> https://fedoraproject.org/wiki/Changes/MajorUpgradeOfMicrodnf.
>
> == Owner ==
> * Name: [[User:jmracek| Jaroslav Mracek]]
> * Email: jmracek@xxxxxxxxxx
>
>
> == Detailed Description ==
> The new DNF5 will provide a significant improvement in user
> experiences and performance. The replacement is the second step in
> upgrade of Fedora Software Management stack. Without the change there
> will be multiple software management tool (DNF5, old Microdnf,
> PackageKit, and DNF) based on different libraries (libdnf, libdnf5),
> providing a different behavior, and not sharing a history. We can also
> expect that DNF will have only limited support from upstream. The DNF5
> development was announced on
> [https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx/thread/NWSURJRGZAIIMNZJT244DHDPOG2PBQXZ/
> Fedora-Devel] list in 2020.
>
> === New DNF5 Features ===
>
> * Fully featured package manager without requirement of Python
> ** Smaller system
> ** Faster
> ** Replace DNF and Microdnf
>
> * Unified behavior of in the software management stack
> ** New Libdnf5 plugins (C++, Python) will be applicable to DNF5, Dnf5Daemon
> *** DNF4 plugins were not applicable for PackageKit and Microdnf (e.g.
> versionlock, subscription-manager), therefore PackageKit behaves
> differently in comparison to DNF

Is there any analysis on how many yum3/dnf4 plugins exist outside of
the core set that the DNF team maintains?  I'm curious how much of a
porting effort is required to move from yum3/dnf4 for plugin authors.

Will there be documentation and best practices on migration for plugin
maintainers?

> ** Shared configurations
> *** In DNF4 not all configuration is honored by PackageKit and Microdnf
> ** DNF/YUM was developed for decades with impact of multiple styles
> and naming conventions (options, configuration, options, commands)
>
> * New Daemon
> ** The new daemon can provide an alternative to PackageKit for RPMs
> (only one backend of PackageKit) if it will be integrated into Desktop

Is this daemon optional depending on installation type, or will it be
running on all installations?  I am assuming it is optional and
centered mostly around whatever currently needs PackageKit.

> ** Support of Modularity and Comps group
> * Performance improvement
> ** Loading of repositories
> ** Advisory operations
> ** RPM queries
> *** Name filters with a case-insensitive search (the `repoquery` command)
> ** Smart sharing of metadata between dnf5 and daemon
> *** Reduce disk and downloads requirements
> *** Currently, DNF, Microdnf, and PackageKit use their own cache
> *** Optional, may be not available for Fedora 39
>
> * Decrease of a maintenance cost in the long term
> ** Shared plugins
> ** Removal of functional duplicates
>
> * Fully integrated Modularity in LIBDNF5 workflows
> ** The Modularity is supported in DNF and LIBDNF but it is not fully
> integrated. Integration was not possible due to limitation of
> compatibility with other tools (PackageKit)
> ** Fully integrated Modularity required changes in the library workflow
>
> === Major codebase improvements ===
>
> *Reports in structure
> ** DNF reports a lot of important information only in logs
>
> * Removal of duplicated implementation
> ** LIBDNF evolved from LIBHIF (PackageKit library) and HAWKEY (DNF
> library). The integration was never finished, therefore LIBDNF still
> contains duplicated functionality.
> ** decrease of the code maintenance cost in future

Do we have some statistics on the consolidated installation size of
DNF5 vs. dnf4?

Any performance comparisons?

josh

> * Unify Python bindings
> ** Formal Libdnf provides two types of Python bindings
> *** CPython (hawkey)
> *** SWIG (libdnf)
> ** Maintaining and communication between both bindings requires a lot
> of resources
> ** Binding unification was not possible without breaking API compatibility
>
> * SWIG bindings
> ** With SWIG we can generate additional bindings without spending huge resources
> ** Code in particular languages will be very similar to each other
>
> * Separation of system state from history DB and `/etc/dnf/module.d`
> ** In dnf-4 the list of userinstalled packages and list of installed
> groups along with the lists of packages installed from them is
> computed as an aggregation of transaction history. In dnf5 it will be
> stored separately, having multiple benefits, among them that the
> history database will serve for informational purposes only and will
> not define the state of the system (it gets corrupted occasionally
> etc.).
> ** Data stored in `/etc/dnf/module.d` were not supposed to be user
> modifiable and their format is not sufficient (missing information
> about installed packages with installed profiles)
> *** Content of `/etc/dnf/module.d` will be moved into the System State
>
> == Feedback ==
>
>
> == Benefit to Fedora ==
>
>
> == Scope ==
> * Proposal owners:
>
> DNF5 is still in the development and some of the features or options
> are not yet available. We still have to finish the implementation of
> Modularity, storing internal data related to History and System State,
> and also documentation and man pages. DNF5 can be tested from
> repository with upstream nightly builds -
> https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/.
> The project's github repository is here -
> https://github.com/rpm-software-management/dnf5/
>
> * Other developers:
> * Release engineering: [https://pagure.io/releng/issues #Releng issue number]
>
> * Policies and guidelines: N/A (not needed for this Change)
> * Trademark approval: N/A (not needed for this Change)
> * Alignment with Objectives:
>
>
> == Upgrade/compatibility impact ==
> The new DNF5 will obsolete `dnf`, `yum`, `dnf-automatic`, `yum-utils`,
> and DNF plugins (core and extras). python3-dnf and LIBDNF (`libdnf`,
> `python3-hawkey`) will be obsoleted by `fedora-obsolete-packages`.
>
>
> === Compatibility ===
> The new DNF5 will provide a symlink to `/usr/bin/dnf` therefore users
> will see the replacement as an upgrade of DNF with limited but
> documented syntax changes. The DNF5 will provide some compatible
> aliases of commands and options to improve adoption of the DNF5.
>
> == How To Test ==
>
> Install `dnf5` package from
> https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/
>
>
> == User Experience ==
>
> * Improved progress bars
> * Improved transaction table
> * Transaction progress reports including scriptlets reports
> * Support of local rpm for transaction operation
> * Great bash completion (better then DNF has)
> * New commands and options that are only available with `DNF`
>
>
> == Dependencies ==
> There is a long list of dependent packages
>
> === dnf ===
>
>  auter
>  calamares
>  copr-builder
>  cpanspec
>  dnf-plugin-diff
>  dnfdragora
>  etckeeper-dnf
>  fedora-review
>  fedora-upgrade
>  kiwi-systemdeps-core
>  libdnf-plugin-subscription-manager
>  lpf
>  mock
>  osbuild
>  perl-CPAN-Plugin-Sysdeps
>  policycoreutils-devel
>  rbm
>  subscription-manager
>  supermin
>  system-config-language
>
> === python3-dnf ===
>
>  anaconda-core
>  dnf-plugin-ovl
>  dnfdaemon
>  fedora-easy-karma
>  fedora-review
>  lorax
>  mock-core-configs
>  module-build-service
>  modulemd-tools
>  needrestart
>  pungi
>  python3-bodhi-client
>  python3-dnf-plugin-cow
>  python3-dnf-plugin-flunk_dependent_remove
>  python3-imgcreate
>  python3-libreport
>  retrace-server
>  system-config-language
>
> === libdnf ===
>
>  PackageKit
>  copr-builder
>  gnome-software-rpm-ostree
>  libdnf-plugin-subscription-manager
>  libdnf-plugin-swidtags
>  libdnf-plugin-txnupd
>
> === python3-hawkey ===
>
>  mock-core-configs
>  modulemd-tools
>  python3-rpmdeplint
>  retrace-server
>
>
> == Contingency Plan ==
> * Contingency mechanism: (What to do?  Who will do it?)
> * Contingency deadline:
> * Blocks release?
>
>
> == Documentation ==
> none
>
> == Release Notes ==
>
>
>
> --
> Ben Cotton
> He / Him / His
> Fedora Program Manager
> Red Hat
> TZ=America/Indiana/Indianapolis
> _______________________________________________
> devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
> To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
> Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
> Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux