From Fedora Project Wiki
m (then -> than)
 
(44 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{admon/important | Comments and Explanations | The page source contains comments providing guidance to fill out each section. They are invisible when viewing this page. To read it, choose the "view source" link.<br/> '''Copy the source to a ''new page'' before making changes!  DO NOT EDIT THIS TEMPLATE FOR YOUR CHANGE PROPOSAL.'''}}
= Major upgrade of Microdnf =
 
{{admon/tip | Guidance | For details on how to fill out this form, see the [https://docs.fedoraproject.org/en-US/program_management/changes_guide/ documentation].}}
 
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
 
= Major update Of Microdnf =


== Summary ==
== Summary ==
Major upgrade of Microdnf is the first step in evolution of package management in Fedora. The new microdnf has ambitions to provide all major features of DNF without loosing its minimal footprint.
A major upgrade of Microdnf is the first step in the evolution of package management in Fedora. The new package manager (provided by dnf5 package) has ambitions to provide all major features of DNF without losing its minimal footprint.
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. Note that motivation for the change should be in the Benefit to Fedora section below, and this part should answer the question "What?" rather than "Why?". -->
<!-- A sentence or two summarizing what this change is and what it will do. This information is used for the overall changeset summary page for each release. Note that motivation for the change should be in the Benefit to Fedora section below, and this part should answer the question "What?" rather than "Why?". -->


Line 24: Line 18:


== Current status ==
== Current status ==
[[Category:ChangePageIncomplete]]
[[Category:ChangeAcceptedF38]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
Line 42: Line 36:
ON_QA -> change is fully code complete
ON_QA -> change is fully code complete
-->
-->
* FESCo issue: <will be assigned by the Wrangler>
* [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/JIRMSN6FKBAQQMHXYCWJZM4RG4T7N4K2/ devel thread]
* Tracker bug: <will be assigned by the Wrangler>
* FESCo issue: [https://pagure.io/fesco/issue/2784 #2784]
* Release notes tracker: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=2080358 #2080358]
* Release notes tracker: [https://pagure.io/fedora-docs/release-notes/issue/828 #828]


== Detailed Description ==
== Detailed Description ==
The new major microdnf will provide huge improvements and even in some cases better behavior then DNF. In future the new microdnf will replace DNF. The new microdnf will be accompanied with a new library (`libdnf5`) and new DNF Daemon.
The new package manager (DNF5) will provide huge improvements and in some cases better behavior than DNF. In the future, the new Microdnf will replace DNF. The new Microdnf will be accompanied by a new library (`libdnf5`) and a new DNF Daemon. The DNF5 development was announced on [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/NWSURJRGZAIIMNZJT244DHDPOG2PBQXZ/ Fedora-Devel] list in 2020.
 
=== DNF5 features ===
* Improved 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 than DNF has)


=== LIBDNF5 features ===
=== LIBDNF5 features ===


* Fully integrated Modularity in LIBDNF workflows
* Fully integrated Modularity in LIBDNF workflows
  * Modularity is supported in DNF and LIBDNF but it is not fully integrated. Integration was not possible due to
** Modularity is currently supported in DNF and LIBDNF, but it is not fully integrated due to limitations in compatibility with other tools (PackageKit)
    limitation of compatibility with other tools (PackageKit)
** Fully integrated Modularity requires changes in library workflow
    * Fully integrated modularity requires changes in library workflow
* Unified user interface
* Unified user interface
** DNF/YUM was developed for decades with the impact of multiple styles and naming conventions (options, configuration options, commands)
  * DNF/YUM was developed for decades with impact of multiple styles and naming conventions (options, configuration
* Plugins
    options, commands)
** DNF plugins are not applicable for PackageKit and Microdnf (e.g. versionlock, subscription-manager), therefore PackageKit behaves differently to DNF
* Plugins
* New plugins (C++, Python) will be available for all users
  * DNF plugins are not applicable for PackageKit and Microdnf (e.g. versionlock, subscription-manager), therefore
** Unified behavior
    PackageKit behaves differently to DNF
** Removal of functional duplicates
  * New plugins (C++, Python) will be available for all users
*** Decrease maintenance cost
    * unified behaviour
* Shared configurations
    * Removal of functional duplicities (subscription-manager functionality)
** In DNF4 the configuration is only partially honored by PackageKit and Microdnf
      * Decrease maintenance cost
* New Daemon
* Shared configurations
** The new daemon can provide an alternative to PackageKit for RPMs (only one backend of PackageKit) if it will be integrated into the Desktop
  * In DNF4 the configuration is only partially honored by PackageKit and Microdnf
* Additional improvements
* New Daemon
** Reports in structure (API)
  * The new daemon can provide an alternative to PackageKit for RPMs (only one backend of PackageKit) if it will be
*** DNF reports a lot of important information only in logs
    integrated into Desktop
* Shared cache and improved cache handling (optional, not available in Fedora 38)
* Additional improvements
** Microdnf, DNF4, and PackageKit use cached repositories on a different location with different cache structure
  * Reports in structure (API)
* Performance improvement
    * DNF reports a lot of important information only in logs
** Loading of repositories
* Shared cache and improved cache handling (Optional, not for RHEL10 GA)
** Advisory operation
  * Microdnf, DNF4, and PackageKit use cached repositories on a different location with different cache structure.
** RPM query
* Performance improvement
*** Name filters with a case-insensitive search
  * Loading of repositories
** Smart sharing of metadata between dnf, microdnf, daemon (optional, not available in Fedora 38)
  * Advisory operation
*** Reduce disk and downloads requirements
  * RPM query
* Relocation of internal databases into `/usr`
    * Name filters with a case-insensitive search
** Make rollback more easy
  * Smart sharing of metadata between dnf, microdnf, daemon
 
    * Reduce disk and downloads requirements
=== Downsides ===
* Relocation of internal databases and different structure of internal databases
** The transaction performed by the new DNF5 will be not visible by DNF
** The transaction performed by DNF or PackageKit will be not visible by the new DNF5
** Packages installed by another packager will be handled as userinstalled
*** Consequence => The removal of a package will not trigger removal of unused dependencies
* Compatibility
** To improve user experience and to unify dnf/microdnf behavior we were unable to keep 100% compatibility with former Microdnf in command-line and in behavior
 
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->
<!-- Expand on the summary, if appropriate.  A couple sentences suffices to explain the goal, but the more details you can provide the better. -->


Line 88: Line 99:


== Benefit to Fedora ==
== Benefit to Fedora ==
The new DNF5 significantly improves the user experience and in the future it will provide all important features of DNF. It will also keep all advantages of the original MICRODNF, like minimal size required by containers.
The presence of DNF5, LIBDNF5, and DNFDAEMON in the distribution will also allow for a smooth transition of components using `dnf`, `python3-dnf`, `python3-hawkey`, `libdnf`, `dnfdragora`, and `python3-dnfdaemon` to a new library.
* 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)
* `builddep` command without Python on the system
<!-- What is the benefit to the distribution?  Will the software we generate be improved? How will the process of creating Fedora releases be improved?
<!-- What is the benefit to the distribution?  Will the software we generate be improved? How will the process of creating Fedora releases be improved?
    
    
Line 118: Line 140:
== Scope ==
== Scope ==
* Proposal owners:
* Proposal owners:
* Add new package to Fedora [Done]
** Bug 2120661 - Review Request: dnf5 - package management library
* Add Obsoletes of microdnf to spec [Available PR]
** Original microdnf package will be available in Fedora repositories, but microdnf and dnf5 cannot be installed on the same system
** https://github.com/rpm-software-management/dnf5/pull/121
* DNF5 documentation [Done]
** https://dnf5.readthedocs.io/en/latest/dnf5.8.html
* DNF5 API documentation [Done, but improving]
** https://dnf5.readthedocs.io/en/latest/api/index.html
* DNF5 API tutorials [DONE]
** https://dnf5.readthedocs.io/en/latest/tutorial/index.html
* Testing repository [DONE]
** https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/
* Implement modular filtering [Done, but improving]
The project's github repository is here - https://github.com/rpm-software-management/dnf5/
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->
<!-- What work do the feature owners have to accomplish to complete the feature in time for release?  Is it a large change affecting many parts of the distribution or is it a very isolated change? What are those changes?-->


Line 137: Line 179:


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
The Microdnf package from previous Fedoras will be obsoleted by DNF5 therefore there will be clean upgrade path between Fedoras. DNF will stay on the system unchanged. DNF5 will provide symlink to origininal microdnf therefore there will be CLI compaticility between old Microdnf and new DNF5.
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? -->
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? -->


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->


== How To Test ==
Install `dnf5` package from https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/:
<pre>dnf copr enable rpmsoftwaremanagement/dnf5-unstable ; dnf install dnf5 dnf5-plugins</pre>
or from Fedora rawhide:
<pre>dnf install dnf5 dnf5-plugins</pre>


== How To Test ==
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.  
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.  


Line 158: Line 211:


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->


== User Experience ==
== User Experience ==
Line 171: Line 223:
  - Green has been scientifically proven to be the most relaxing color. The move to a default background color of green with green text will result in Fedora users being the most relaxed users of any operating system.
  - Green has been scientifically proven to be the most relaxing color. The move to a default background color of green with green text will result in Fedora users being the most relaxed users of any operating system.
-->
-->
* 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 ==
== Dependencies ==
Line 192: Line 250:


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)  
N/A (not a System Wide Change)
 
DNF5 documentation - https://dnf5.readthedocs.io/en/latest/


== Release Notes ==
== Release Notes ==
Line 200: Line 260:
Release Notes are not required for initial draft of the Change Proposal but has to be completed by the Change Freeze.  
Release Notes are not required for initial draft of the Change Proposal but has to be completed by the Change Freeze.  
-->
-->
In Fedora 38, DNF5 replaces Microdnf. Main features of DNF5:
- faster
- more features then original Microdnf (builddep, advisory commands, ...)
- keeps the minimal dependency tree and install size like Microdnf
- backward compatible with microdnf
  - microdnf symlink (`microdnf install nodejs` works with DNF5)
  - commands
  - features
  - options
Not yet ready features:
DNF5 does not provide `module` command with `enable`, `disable`, and `reset` sub-commands. They are coming soon.

Latest revision as of 19:27, 21 February 2024

Major upgrade of Microdnf

Summary

A major upgrade of Microdnf is the first step in the evolution of package management in Fedora. The new package manager (provided by dnf5 package) has ambitions to provide all major features of DNF without losing its minimal footprint.

Owner

Current status

Detailed Description

The new package manager (DNF5) will provide huge improvements and in some cases better behavior than DNF. In the future, the new Microdnf will replace DNF. The new Microdnf will be accompanied by a new library (libdnf5) and a new DNF Daemon. The DNF5 development was announced on Fedora-Devel list in 2020.

DNF5 features

  • Improved 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 than DNF has)

LIBDNF5 features

  • Fully integrated Modularity in LIBDNF workflows
    • Modularity is currently supported in DNF and LIBDNF, but it is not fully integrated due to limitations in compatibility with other tools (PackageKit)
    • Fully integrated Modularity requires changes in library workflow
  • Unified user interface
    • DNF/YUM was developed for decades with the impact of multiple styles and naming conventions (options, configuration options, commands)
  • Plugins
    • DNF plugins are not applicable for PackageKit and Microdnf (e.g. versionlock, subscription-manager), therefore PackageKit behaves differently to DNF
  • New plugins (C++, Python) will be available for all users
    • Unified behavior
    • Removal of functional duplicates
      • Decrease maintenance cost
  • Shared configurations
    • In DNF4 the configuration is only partially honored by PackageKit and Microdnf
  • New Daemon
    • The new daemon can provide an alternative to PackageKit for RPMs (only one backend of PackageKit) if it will be integrated into the Desktop
  • Additional improvements
    • Reports in structure (API)
      • DNF reports a lot of important information only in logs
  • Shared cache and improved cache handling (optional, not available in Fedora 38)
    • Microdnf, DNF4, and PackageKit use cached repositories on a different location with different cache structure
  • Performance improvement
    • Loading of repositories
    • Advisory operation
    • RPM query
      • Name filters with a case-insensitive search
    • Smart sharing of metadata between dnf, microdnf, daemon (optional, not available in Fedora 38)
      • Reduce disk and downloads requirements
  • Relocation of internal databases into /usr
    • Make rollback more easy

Downsides

  • Relocation of internal databases and different structure of internal databases
    • The transaction performed by the new DNF5 will be not visible by DNF
    • The transaction performed by DNF or PackageKit will be not visible by the new DNF5
    • Packages installed by another packager will be handled as userinstalled
      • Consequence => The removal of a package will not trigger removal of unused dependencies
  • Compatibility
    • To improve user experience and to unify dnf/microdnf behavior we were unable to keep 100% compatibility with former Microdnf in command-line and in behavior


Feedback

Benefit to Fedora

The new DNF5 significantly improves the user experience and in the future it will provide all important features of DNF. It will also keep all advantages of the original MICRODNF, like minimal size required by containers. The presence of DNF5, LIBDNF5, and DNFDAEMON in the distribution will also allow for a smooth transition of components using dnf, python3-dnf, python3-hawkey, libdnf, dnfdragora, and python3-dnfdaemon to a new library.


  • 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)
  • builddep command without Python on the system


Scope

  • Proposal owners:


The project's github repository is here - https://github.com/rpm-software-management/dnf5/


  • Other developers:
  • 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 Microdnf package from previous Fedoras will be obsoleted by DNF5 therefore there will be clean upgrade path between Fedoras. DNF will stay on the system unchanged. DNF5 will provide symlink to origininal microdnf therefore there will be CLI compaticility between old Microdnf and new DNF5.


How To Test

Install dnf5 package from https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/:

dnf copr enable rpmsoftwaremanagement/dnf5-unstable ; dnf install dnf5 dnf5-plugins

or from Fedora rawhide:

dnf install dnf5 dnf5-plugins


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

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No


Documentation

N/A (not a System Wide Change)

DNF5 documentation - https://dnf5.readthedocs.io/en/latest/

Release Notes

In Fedora 38, DNF5 replaces Microdnf. Main features of DNF5:

- faster
- more features then original Microdnf (builddep, advisory commands, ...)
- keeps the minimal dependency tree and install size like Microdnf
- backward compatible with microdnf
  - microdnf symlink (microdnf install nodejs works with DNF5)
  - commands
  - features
  - options

Not yet ready features:

DNF5 does not provide module command with enable, disable, and reset sub-commands. They are coming soon.