Home Stack

A Home Stack is a minimal launcher of a piece of software. There are three basic levels of Home Stacks:

Commonly a project maps to a software application, a module is a component (usually an interface component), of a that software application and the Environment Home Stack launches the IDE or development environment.

# Launcher

A Home Stack has a preOpenStack handler which enables it to load relevant code (clasically libraries and modules) into its environment. This should happen once at startup.

Consequently we do not use the HomeStack as a library stack but as a launcher of library stacks. Otherwise we would have to be careful about not triggering openstack and preopenstack handlers across the environment.

# Stackfiles We rely on the stackfiles property of the homestack, to map from the short name of a stack to it's path on disk (and consequently it's online url - see LCW Hosting).

Stackfiles are easily turned into associative arrays (see stackFile_Array) which allow us to make map between a stacks short anme and its file in the code we use.

# Livecode file extension We prefer to use the .livecodescript file extension wherever possible in the environment. We make an exception for Home Stacks that use the .livecode file extnsion.

# Dependency Management The combination of these elements (home stack, Flat Naming Convention and Dynamic Dependency) enables us to use a general and powerful form of Dependency Management that works across a number of levels. This home-grown dependency mangement archtecture is experimental, and should be looked at in the context of much more robust and scaleable archetures that may suite the desired polyglot environment.