Tcl has tm commands for managing access to tcl modules
A list of directories (the "module path") is managed by the commands ::tcl::tm::path and ::tcl::tm::roots. For example, the current value of the module path is returned by the command [::tcl::tm::path list].
To load a module into the interpreter, you use package require as usual for a Tcl package (this is not properly documented in the manual pages of package and tm). The command package require searches the "module path" directories for modules, which are files named "*.tm". The name of the module file determines the name and version that are entered into the package database when module directories are scanned. If the mechanism finds a corresponding module file, it will be sourced.
See https://www.tcl-lang.org/man/tcl8.5/TclCmd/tm.htm for a full discussion of module filename requirements, resolution of '::' in module names, and translation of '::' to directory separator characters.
See Tcl modules for more on modules.
See Distribution Mechanisms for a discussion of extension mechanisms in general.
(1) TM frequently is used as an abbreviation of the word Trademark.
See http://uspto.gov/ [add other references] for more info on the legal ramifications of a trademark.