From Fedora Project Wiki
mNo edit summary
Line 5: Line 5:
<!-- 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 -->
<!-- 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 =
= Major upgrade 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 microdnf 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 47: Line 47:


== Detailed Description ==
== Detailed Description ==
The new major microdnf will provide huge improvements and even in some cases better behavior then DNF. In the future the new microdnf will replace DNF. The new microdnf will be accompanied with a new library (`libdnf5`) and a new DNF Daemon.
The new major Microdnf will provide huge improvements and in some cases better behavior then 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.


=== MICRODNF features ===
=== MICRODNF features ===
Line 60: Line 60:


* 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 limitation of compatibility with other tools (PackageKit)
** 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
** Fully integrated Modularity requires changes in library workflow
* Unified user interface
* Unified user interface
** DNF/YUM was developed for decades with impact of multiple styles and naming conventions (options, configuration options, commands)
** DNF/YUM was developed for decades with the impact of multiple styles and naming conventions (options, configuration options, commands)
* Plugins
* Plugins
** DNF plugins are not applicable for PackageKit and Microdnf (e.g. versionlock, subscription-manager), therefore PackageKit behaves differently to DNF
** 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
* New plugins (C++, Python) will be available for all users
** unified behaviour
** Unified behavior
** Removal of functional duplicates
** Removal of functional duplicates
*** Decrease maintenance cost
*** Decrease maintenance cost
Line 73: Line 73:
** In DNF4 the configuration is only partially honored by PackageKit and Microdnf
** In DNF4 the configuration is only partially honored by PackageKit and Microdnf
* New Daemon
* 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
** 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
* Additional improvements
** Reports in structure (API)
** Reports in structure (API)
*** DNF reports a lot of important information only in logs
*** DNF reports a lot of important information only in logs
* Shared cache and improved cache handling (Optional, not available in Fedora 38)
* 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.
** Microdnf, DNF4, and PackageKit use cached repositories on a different location with different cache structure
* Performance improvement
* Performance improvement
** Loading of repositories
** Loading of repositories
Line 84: Line 84:
** RPM query
** RPM query
*** Name filters with a case-insensitive search
*** Name filters with a case-insensitive search
** Smart sharing of metadata between dnf, microdnf, daemon (Optional, not available in Fedora 38)
** Smart sharing of metadata between dnf, microdnf, daemon (optional, not available in Fedora 38)
*** Reduce disk and downloads requirements
*** Reduce disk and downloads requirements
* Relocation of internal databases into `/usr`
* Relocation of internal databases into `/usr`
Line 90: Line 90:


=== Downsides ===
=== Downsides ===
* Relocation of internal databases and changed structure of internal databases
* Relocation of internal databases and different structure of internal databases
** The transaction performed by the new MICRODNF will be not visible by DNF
** The transaction performed by the new MICRODNF will be not visible by DNF
** The transaction performed by DNF or PackageKit will be not visible by the new MICRODNF
** The transaction performed by DNF or PackageKit will be not visible by the new MICRODNF
** Packages installed by another packager will be handled as userninstalled
** Packages installed by another packager will be handled as userinstalled
*** Consequence => The removal of a package will not trigger removal of unused dependencies
*** Consequence => The removal of a package will not trigger removal of unused dependencies
* Compatibility
* Compatibility
** To improve user experience and to unify dnf/microdnf behavior we were unable to keep 100% compatibility with formal microdnf in command-line and in behavior
** To improve user experience and to unify dnf/microdnf behavior we were unable to keep 100% compatibility with formal 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 104: Line 104:


== Benefit to Fedora ==
== Benefit to Fedora ==
The new MICRODNF significantly improves user experience and in future it will provide all important features of DNF. It will also keep all advantages of original MICRODNF like minimal size required by containers.
The new MICRODNF 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 MICRODNF, LIBDNF5, and DNFDAEMON in distribution will also allow smooth transition of components using `dnf`, `python3-dnf`, `python3-hawkey`, `libdnf`, `dnfdragora`, and `python3-dnfdaemon` to a new library.
The presence of MICRODNF, 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.


<!-- 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?

Revision as of 00:06, 8 April 2022

Important.png
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.
Copy the source to a new page before making changes! DO NOT EDIT THIS TEMPLATE FOR YOUR CHANGE PROPOSAL.
Idea.png
Guidance
For details on how to fill out this form, see the documentation.


Major upgrade of Microdnf

Summary

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

Owner

Current status

  • Targeted release: Fedora Linux 38
  • Last updated: 2022-04-08
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

The new major Microdnf will provide huge improvements and in some cases better behavior then 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.

MICRODNF 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 then 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 MICRODNF will be not visible by DNF
    • The transaction performed by DNF or PackageKit will be not visible by the new MICRODNF
    • 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 formal Microdnf in command-line and in behavior


Feedback

Benefit to Fedora

The new MICRODNF 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 MICRODNF, 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.


Scope

  • Proposal owners:
  • 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

How To Test

User Experience

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)

Release Notes