Modularity introduces a new optional repository to Fedora called Modular (often referred to as the "Application Stream" or AppStream for short) that ships additional versions of software on independent lifecycles. This way users can 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.

modularity appstream overview

What Problems does Modularity Solve?

Too fast vs. too slow

Different users have different needs. Developers want the latest versions possible, system administrators want stability for longer period of time. There are many Linux distributions out there, each targetting a different audience, for example Fedora vs CentOS.

Fedora generally ships the latest stable versions of its component packages when it is released twice per year. That is convenient for desktop users and developers. Even though many people use Fedora on a server, it is sometimes necessary to have a stable version of certain packages for a longer time, mostly because of third-party applications.

At the same time, some people consider Fedora to be moving too slowly for them and want even newer runtimes on their system. Some upstreams release their software faster than twice a year.

On the other hand, CentOS targets long-term stability and releases a new version once every few years. This is convenient for server admins as there are fewer changes over longer periods of time. But some of the software gets old for modern applications and newer versions of runtimes might be needed.

In other words, it would be convenient to be able to choose some parts of the system to be moving slowly, and other parts to be moving faster. Can we do that?

Outdated containers

There are many containers out there. The majority of them are built manually, not actively maintained, not patched with security fixes, and still used by many people. This is especially true for the ones using software of a different version than the distribution their are based on provides.

If Fedora had multiple versions of software that is actively maintained and built, could we use it to produce containers? Could these containers get automatically rebuilt every time the packages get updated?

Complex packager workflows

Fedora contributors maintain their packages in multiple branches — one for each release. Even when the packages are the same. Leading to a series of manual steps associated with the build process.

Could we enable packagers to maintain packages in branches that would follow the package version instead of an arbitrary distribution release version? Having a single branch that builds across multiple releases would save some work for packagers.