The MODULES_IMPLICIT_DEFAULT environment variable is introduced to choose whether an implicit default version should be defined for modules with no default version explicitly defined. When enabled, which is the default behavior, a module version is automatically selected (latest one) when the generic name of the module is passed. When implicit default is disabled and no default version is explicitly defined for a module, the name of this module to evaluate should be fully qualified elsewhere an error is returned.

Configure option --enable-implicit-default defines this setting which can be superseded by the environment variable. This environment variable can be set with the config module sub-command via the implicit_default. The superseding mechanism can also be disabled with configure option --with-locked-configs=implicit_default, in case you do not want users to play with this setting.

$ module config implicit_default 0
$ module load foo
ERROR: No default version defined for 'foo'
$ module config implicit_default 1
$ module load -v foo
Loading foo/2

This new feature is available in git repository and will be included into the upcoming v4.3 release.