Modularity enables you to choose a particular stream (major version) of content that has been natively built and tested for your system, and to receive the right updates for it.

fedora without modularity
fedora with modularity

That means you’re no longer limited to a single version of each package for a given Fedora release. And because many streams are now available in multiple Fedora releases, you can install a specific version of software regardless of what Fedora release you’re running.


Scenario 1: Some users install packages coming from a different Fedora release in order to consume a specific version of a database that is compatible with their application. But thanks to Modularity they might not need to do that anymore, because multiple versions of the database can available in each Fedora release. All they need to do is to consume the specific stream of that database right from the Fedora repositories for their system.

Scenaro 2: There were cases when users couldn’t upgrade their system to a new Fedora release because their application wouldn’t function with the new version of a language runtime coming with the upgrade. Modularity can fix this problem by providing the same language versions in both Fedora releases. With that, the user can consume a specific stream of the language and keep it even when they upgrade their system. And when the application is ready for the new language version, it can be upgraded later, independently from the OS, by switching to a different stream.


Modularity is built to be 100% compatible with existing expectations and workflows. The installation and update experience continues to work the same way — even when there are multiple versions of packages — thanks to default streams.

For example, the following two commands work the same way on systems with and without Modularity:

$ dnf install httpd
$ dnf update

On systems with multiple httpd streams available, the default stream is automatically enabled and consumed. Learn more about using modules.