An alternative approach to module packaging. In Fedora, modulemd is an input document - packagers create and maintain modulemd, which is used by MBS to build modules. MBI uses a reverse approach - modulemd is generated out of individual packages built and maintained by contributors.
In MBI modulemds exist merely as machine-generated objects that are required for DNF and MBS to work. MBI contributors don't need to work with modulemd at all.
Summary:
MBI contributors develop modules using familiar tools (fedpkg, koji, mock, koschei) known from maintenance of non-modular packages
major changes can be implemented quickly and freely, without possibly affecting users
package downgrades and regressions are allowed and harmless
rpm changelog entries don't have to be added with each tiny change
spec release bumps are not required - every build has unique, increasing %{dist} tag
modules developed in MBI are meant to be eventually released to Fedora (and/or other distros), but not directly to end users
Packaging workflow:
MBI contributor pushes rpms chanes to MBI dist-git
MBI contributor builds rpms in MBI Koji
MBI contributor watches for feedback from MBI Koschei and fixes any possible breakage
MBI contributor watches for automated test results and fixes any possible problems
Compose process:
modulemds are generated out of packages built in MBI Koji
modules are composed out of generated modulemds and packages built in MBI Koji
automated module tests are ran against all supported platforms
modules that pass automated testing are marked as possible candidates for releasing to Fedora
Release process:
Fedora packager makes sure that MBI Koschei reports no problems and that MBI module tests are passing
Fedora pacakger takes source code from MBI and follows standard Fedora procedures to have modules built and released in Fedora:
completes package reviews as needed (for new or unretired components)
requests creation of arbitrary branches
merges changes to dist-git (which may require adding changelog and bumping release),
submits MBS builds, creates Bodhi updates
and so on
accounts: Fedora FAS - all MBI contributors must have Fedora accounts and sign FPCA
dist-git - forks in Fedora dist-git: https://src.fedoraproject.org/user/mbi/forks
MBI lookaside cache - overlay over Fedora lookaside cache (anything pushed to Fedora lookaside cache becomes immediately available in MBI, but it is also possible to push things directly to MBI lookaside cache, eg. before new package passes review in Fedora)
MBI Koji - https://koji.kjnet.xyz/
MBI Koschei - https://koschei.kjnet.xyz/
MBI composer (no web interface)