Documentation for a newer release is available. View Latest

Fedora Add-On Modularity

Fedora Modularity introduces an optional Modular repository that provides additional versions of software on independent lifecycles.

Users can now keep their operating system up-to-date while having the right version of an application for their use case, even when the default version in the distribution changes.


This change introduces three new optional repositories for additional versions of software delivered as module streams.

Modules are collection of packages representing an application, a language stack, or a collection of package that make sense to be delivered together. An example could be a nodejs module.

Streams are series of versions that are backwards compatible. An example could be two streams of nodejs — version 6.x and version 8.x compatible.

Client tooling (DNF) has been improved to be able to manage multiple streams of software. Users can choose the right stream for their use case and DNF makes sure that:

  • The right versions of packages get installed.

  • Updating the system also updates the packages within the module streams to their latest versions.

  • Updating the system will never cause a module to skip to another stream, even when there are newer versions available. Changing streams is always a conscious decision the user explicitly makes.

Should users choose not to bother with modules and streams, they always get the distribution default. This means that modularity can be used without any changes to the existing workflows.

Also, upgrading an existing Fedora installation won’t require any special steps as there are no changes to the main Fedora repository. The new content is in a separate repository that is completely optional.

What are the benefits?

Different users have different needs. Developers want the latest versions possible, system administrators want stability for longer period of time.

Modularity makes some parts of the system to move slowly, and other parts to move faster — so users can choose the right speed of different parts according to their use case.

Next steps

Modules can have independent lifecycles from the base Fedora release. Starting next release, it will be possible to build modules against multiple Fedora releases thanks to the Stream Expansion functionality.

That means users will be able to upgrade to the new Fedora version while keeping the streams of software they need for their applications. This will be particularly useful for Fedora Server.