Lmod: A New Environment Module System
=====================================

Monthly Zoom Meeting
====================

      **NOTE**
      Lmod is holding Monthly Zoom meeting to discuss various topics.
      Typically it is the first Tuesday of the Month at 9:30 U.S. Central (which
      is 14:30 UTC or 15:30 UTC in the winter months). Beginners are
      welcome.  There is always a Q/A session at the beginning. Topic
      announcements are sent to the Lmod mailing list.

      See: https://github.com/TACC/Lmod/wiki for details.


PURPOSE
^^^^^^^

Lmod is a Lua based module system that easily handles the MODULEPATH
Hierarchical problem. Environment Modules provide a convenient way to
dynamically change the users' environment through modulefiles. This
includes easily adding or removing directories to the PATH environment
variable. Modulefiles for Library packages provide environment
variables that specify where the library and header files can be
found.

OVERVIEW
^^^^^^^^

This guide is written to explain what Environment Modules are and why
they are very useful for both users and system administrators. Lmod is
an implementation of Environment Modules, much of what is said here is
true for any environment modules system but there are many features
which are unique to Lmod.

Environment Modules provide a convenient way to dynamically change the
users' environment through modulefiles. This includes easily adding or
removing directories to the PATH environment variable.

A modulefile contains the necessary information to allow a user to run
a particular application or provide access to a particular
library. All of this can be done dynamically without logging out and
back in. Modulefiles for applications modify the user's path to make
access easy. Modulefiles for Library packages provide environment
variables that specify where the library and header files can be
found.

Packages can be loaded and unloaded cleanly through the module
system. All the popular shells are supported: bash, ksh, rc, csh, tcsh,
fish, zsh.  Also available for perl, python, lisp, cmake, and R.

It is also very easy to switch between different versions of a package
or remove it.

Lmod Web Sites
^^^^^^^^^^^^^^

    * Documentation:          https://lmod.readthedocs.io/en/latest/
    * GitHub:                 https://github.com/TACC/Lmod
    * SourceForge:            https://lmod.sf.net
    * TACC Homepage:          https://www.tacc.utexas.edu/research-development/tacc-projects/lmod
    * Lmod Test Suite:        https://github.com/rtmclay/Lmod_test_suite
    * Join Lmod Mailing list: https://sourceforge.net/projects/lmod/lists/lmod-users

The most up-to-date source is at github. There is a secondary git repo
found at SourceForge. Both repos are the same. Stable releases in the
form of tar files can be found at sourceforge. All label versions found
at the git repos have passed Lmod's regression test suite.


Introduction to Lmod
^^^^^^^^^^^^^^^^^^^^

If you are new to Lmod then please read the User Guide and possibly
the Frequently Asked Questions Guide.   Users who wish to read about
how to have their own personal modules should read the Advanced User Guide.

.. toctree::
   :maxdepth: 1

   010_user
   015_writing_modules
   040_FAQ
   020_advanced
   025_new

Installing Lmod
^^^^^^^^^^^^^^^

Anyone wishing to install Lmod on a personal computer or for a system
should read the Installation Guide as well as the Transitioning to
Lmod Guide.  The rest of the guides can be read as needed.

.. toctree::
   :maxdepth: 1

   030_installing
   045_transition
   050_lua_modulefiles
   051_tcl_modulefiles
   052_Environment_Variables
   055_module_names
   060_locating
   070_standard_modules
   073_tmod_to_lmod

Advanced Topics
^^^^^^^^^^^^^^^

.. toctree::
   :maxdepth: 1
   
   075_bug_reporting
   077_ref_counting
   079_hidden_modules
   080_hierarchy
   090_configuring_lmod
   093_modulerc
   095_tcl2lua
   098_dependent_modules
   100_modulefile_examples
   105_terse_output
   110_lmod_mpi_parallel_filesystem
   120_shared_home_directories
   125_personal_spider_cache
   130_spider_cache
   135_module_spider
   136_spider
   140_deprecating_modules
   145_properties
   160_debugging_modulefiles
   165_debugging_lmod
   170_hooks
   185_localization
   190_Integration_of_EasyBuild_and_Lmod
   200_avail_custom
   210_load_storms
   220_tracing
   240_sticky_modules
   250_site_package
   260_sh_to_modulefile
   300_tracking_module_usage
   301_converting_to_gen2
   310_settarg
   320_improving_perf
   330_extensions
   340_inherit
   350_community
   360_check_syntax
   370_irreversible

Overview and Internal Structure of Lmod
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. toctree::
   :maxdepth: 1

   440_lmod_overview
   441_lmod_glossary
   444_code_conventions
   442_testing
   443_structure
   450_mname_resolution_deepdive
   451_mcp_deepdive
   452_sandbox_deepdive
   453_github_actions
   454_framestack_deepdive
   455_mt_deepdive
   456_vart_deepdive
   


Topics yet to be written
^^^^^^^^^^^^^^^^^^^^^^^^

#. Optional Software layout, two digit rule
#. Advanced Topics: priority path,



Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
