/software
Example: Wordpress
You can find here all Software Releases, which can be considered as "end
user services". Each Software Release represents a full service (like
Wordpress, or ERP5).
In each Software Release directory, there is at least a "software.cfg"
Buildout profile.
Because it is a Buildout profile, it can reuse other Buildout profiles
from "component" or "stack" directory using the Buildout "extends"
mechanism.
/component
Example: Apache, MySQL, OpenSSL
Here are all atomic components (all libraries or binaries, like Apache,
MariaDB, CouchDB, cURL, OpenSSL, libxml, ncurses, ...) used in the
Software Releases.
Those profiles describe how to install a component: how to compile it,
how to fetch it, what are the dependencies...
/stack
Example: LAMP
If you need, you can also use what is called "stack". A stack is a group
of components working together, in a reusable way. Most stack provide an
instance.cfg file.
For example, when
creating a PHP Sofware Release, you can extend the "LAMP" stack,
containing all what is needed to run PHP applications (Apache, MySQL, etc)
so that you can define only what is specific to your software in a few
lines. Your software.cfg extending lamp stack will only contain a few
lines.
Note: a special stack is stack/slapos.cfg, defining what is usually
needed in every Software Releases, like using a special version of
Buildout or fetching the slapos.cookbook egg. It should be always used
to ease development of Software Release.
/slapos/recipe
Example: Apache deployment description
Here are all recipes used for deployment of instances, called from
instance.cfg file of a Software Release. This directory forms content of
the "slapos.cookbook" egg.