Historically, all packages in Fedora have followed the same branching structure in dist-git: each package had a separate branch for every numbered Fedora release, and if you wanted to update a package across all supported releases, you needed to submit the same change for each release branch.
The module definition mechanism introduced in Fedora 27 allows this to be separated such that:
On the Fedora usage side, the advantage to end users of the module system, is that while the system profile specifies a default stream, it typically doesn’t keep end users from changing that stream (modules with streams that specifically track particular Fedora releases may be an exception).
For example, Fedora 27 will select
8 as the default stream for the Node.js
module. If you run
dnf install nodejs in F27 Modular Server, it will
implicitly give you a
nodejs-8 RPM. However, unlike a traditional
Fedora release, you’re also able to explicitly opt-in to downgrading to the
Node.js 6 LTS release by running the command
dnf install nodejs:6.
Module Development Guidelines