The AppStream repository manages software in terms of packages, modules, streams and profiles. AppStream packages are, once again, RPM packages as outlined in the previous section describing BaseOS. AppStream modules, on the other hand, are groups of packages that belong together or for which dependencies exist (for example the group of packages that would need to be installed together when building a web server). Each module can have multiple streams, where each module stream represents a different version of the software module.
Consider, for example, a RHEL 8 system hosting a web site which depends on version 7.1 of the PHP scripting language. The server still needs to receive any updates to PHP 7.1 to benefit from patches and bug fixes, but is not compatible with the latest version of PHP (version 7.2). Before the introduction of AppStream, it would have been difficult to continue receiving version 7.1 updates when newer versions have been released...