Components
A Component is a capture of four ingredients that can be packaged together and moved from server to server.
- Initial design configuration and data.
- User augmentation of configuration and data.
- Archival captures of subsets of database tables.
- Code
A component can define a new standalone application, new web server application, augmentations to existing applications, and practically any standard application feature can be captured in a component. In particular, a standard server is made up from the components it currently has active.
A component has three states.
- Disabled - Nothing in the component is loaded. If no application deployed into a server has the component enabled (in either the inactive or active state), then the component can be safely deleted.
- Inactive - Boot time code and configuration is loaded, but generally only component management and base definition of variables should be loaded at this time. The component may have requirements that need to be fulfilled before it can become active. Likewise proper disabling of a component may also require some administrative activity.
- Active - The component is active and will augment server functionality fully.
The intent is that a fully featured application will have hundreds of components with many of the components being small overlays of functionality or configuration changes to other components. Just as a source code tree can have hundreds of branches over a lifetime of tens of independent projects, components can capture that life cycle at runtime using the Runtime Differencing Engine. Because of this there is a strong need for component bundling, grouping, tagging, and classifying.