Other module
implementations
Since the inception of the Environment Modules project in 1991, the module
command has become a de facto standard interface for dynamically modifying a
user's environment via modulefiles. Over time, several alternative
implementations of the module
command have been developed.
This document provides an overview of known module
command
implementations, with a particular focus on Lmod, the most widely adopted
alternative. The goal is to inform users and developers of the current
landscape of module
system tools.
Lmod
Lmod is an implementation of Environment Modules written in Lua. Its
development started in 2008 and along a years Lmod has introduced many new
features into the module
world: software hierarchy, cache mechanism, Lua
modulefile support, ml
command, etc.
Lmod gained popularity in the mid-2010s, during a period when the Modules project was largely inactive. It is now widely adopted, particularly in the HPC community.
Today, Lmod and Modules offer broadly similar feature sets. The following table highlights features that are unique to each implementation.
Lmod 8.8 |
Modules 5.6 |
---|---|
|
|
The following table highlights module
sub-commands that are exclusive to
either Lmod or Modules. In some cases, similar functionality exists under
different sub-command names or mechanisms. A correspondence table is provided
at the end of this section to map these equivalents.
Lmod 8.8 |
Modules 5.6 |
---|---|
|
|
The following table highlights Tcl modulefile commands that are exclusive to either Lmod or Modules. In some cases, similar functionality exists under different command names or mechanisms. A correspondence table is provided at the end of this section to map these equivalents.
Lmod 8.8 |
Modules 5.6 |
---|---|
|
|
See the Compatibility with Lmod Tcl modulefile section for details on how the implementation of the Tcl modulefile commands differ between Lmod and Modules.
The following table provides a correspondence between features in Lmod and Modules that offer similar functionality, even if they differ in name or implementation.
Lmod 8.8 |
Modules 5.6 |
---|---|
|
|
|
|
|
|
Lmod + XALT |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Other alternatives
This section intends to reference all other existing alternative module
implementations.
Modulecmd.py: Environment Modules implementation in Python
Pmodules: Environment Modules implementation in Bash
RSModules: Environment Modules implementation in Rust
If you know of a module
implementation project that's not listed here,
please let us know so we can include it.