Module Version Prefix

Modules built with Module Build Service (MBS) v2.8.1 or newer will contain a version prefix. This prefix is derived by the stream version of the Platform module that the module build buildrequires. For instance, if the Platfom module has a stream of f29, then the stream version would be 29. This makes it so that a module with a version of 20181109101859 would become 2920181109101859. This ensures that modules built with later versions of Fedora always have higher versions, and thefore, have a clear upgrade path.

The reason this is needed is that a module’s version is dynamically derived from the commit timestamp of the modulemd that was used for the module build. This becomes an issue in the following scenario. If you build a module for Fedora 28, then build a module of the same stream for Fedora 29, then when upgrading to Fedora 29 will work just fine because the module build for Fedora 29 was built later, so therefore has a higher version. If the module build for Fedora 28 needs to be rebuilt however, then the version will be higher than the Fedora 29 build since the modulemd will have a newer commit. This will mean that a user with the Fedora 28 module version installed, will encounter issues when upgrading to Fedora 29 since the user will already have a module with a higher version installed than what is provided by Fedora 29. Prefixing the module version with the buildrequired Platform stream version solves the issue.