Module extensions in EasyBuild

We have recently provided EESSI in our clusters. EESSI is using module extensions. As far as I understand, module extensions are a feature of EasyBuild and are just modules that cannot be loaded on their own, but only as part of other modules.

I couldn’t find many references for this feature in the documentation. Do we know why this design choice was made?

For instance, searching for scipy:

$ module spider scipy

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  scipy:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     Versions:
        scipy/1.10.1 (E)
        scipy/1.11.1 (E)
        scipy/1.11.4 (E)
     Other possible modules matches:
        SciPy-bundle  lang/SciPy-bundle

Names marked by a trailing (E) are extensions provided by another module.


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  To find other possible module matches execute:

      $ module -r spider '.*scipy.*'

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  For detailed information about a specific "scipy" package (including how to load the modules) use the module's full name.
  Note that names that have a trailing (E) are extensions provided by other modules.
  For example:

     $ module spider scipy/1.11.4
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


$ module spider scipy/1.11.4

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  scipy: scipy/1.11.4 (E)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    This extension is provided by the following modules. To access the extension you must load one of the following modules. Note that any module names in parentheses show the module location in the software hierarchy.


       SciPy-bundle/2023.11-gfbf-2023b


Names marked by a trailing (E) are extensions provided by another module.