Edit

Frequently Asked Questions (FAQ)

Exactly what problem are you trying to solve?
The “too fast vs. too slow” problem, outdated containers, and complex packaging workflow. See The Problem to be Solved page for more detailed information.
How is this different from containers?

This is a build step that happens before containers.

Modularity provides parallel availability of multiple versions that can be consumed by containers to enable parallel installation.

How does this differ from SCLs?

Modularity is about building multiple versions of packages, and making them available to users.

SCLs are about installing software in parallel using RPM.

These two don’t overlap, they complement each other. You can build an SCL using Modularity.

Couldn’t we solve this with having compat- packages, or putting versions into package names for different version streams?
That works technically, but the packaging workload doesn’t scale, and dependency interactions become complex. This will let packagers make more content available to users without an explosion of effort.
Can I install more versions at once
Modularity does not invent a new technology for parallel installation. Existing solution such as containers can be used to achieve this.
How is this different from RPM? Why not just different repos?

Technical: DNF performance with many repositories. We envision having tens or even hundreds of modules available to a single system.

User experience: A repository is a source of software provided by a vendor, not necessarily representing a single application, language stack, or any other logical unit of software. A repository typically contains multiple applications, stacks, etc. We do not want to change this concept.

Are you going to produce all versions? What lifecycles and versions are envisioned?

We are developing the technology such as the build pipeline and client tooling to enable contributors to build multiple versions.

We envision longer lifecycles of stacks mainly for server, and devel/rolling releases of some stacks for developers.

I can just ‘dnf downgrade’ to get an older version.. why do we need modularity?

Using an older version that is no longer maintain can be dangerous, mostly because of the lack of security updates.

Modules, on the other hand, represent a major version that is still being actively maintained by the upstream and therefore should receive updates.

Is this different from single app VMs with custom versions?
This helps with a single app VM with custom versions. Same as with containers, it helps users to get the right version for their system.