idea
  A necessary component of a sustainable future will be a sustainable built environment. We need a revolution in how we think about, design, construct, and operate applications and framworks. Imagine applications that achieve a natural beauty through their harmony with the environment."
Based on, but largely modified : - The Sustainability Project -

concept

crmac is a learning general purpose software environment based on a dynamic rules engine coupled with a self describing dictionary.

The key factors are :
- rules can modify themselfs,
- statistics about rules activity are available to the rules,
- evolution capability,
   - rulesets can be merged,
   - fail safe (detection and removal of erroneous rules),
   - controlled destruction
- communication capability,
   - several instances of one ruleset can communicate within a machine,
   - instances can communicate long distance using asyncoronous transports,
   - an open, XML-based interface provides for systems interconnection
- plug in capability.

an introduction by examples
start a discussion of the details


philosophy

The rational behind crmac is based on a set of primary and secondary guidelines
more about crmac philosophy
how to work with crmac


architecture

Any crmac application consists only of rules and states, they are organized into rulesets (which are roughly equivalent to an application). The heart of the crmac complex is therefore the rule engine which constantly reevaluates the loaded rulesets. Selected states can be mapped to incoming and outgoing events, this is the task of the I/O module which also drives the interfaces (e.g. the native XML connector, or the SAP R/3 connector) Other states can be part of the common area which is available to all rulesets and can be shared via networks (including state name/value mapping).
The merge and repair modules are the central part of the evolution (see details on crmac evolution) implementation.


building blocks of the crmac complex

The crmac complex is hosted within a portable and scalable runtime environment. This is not visible to the rule designer and might change without having an effect on existing rulesets.


implementation

Early prototypes and the first implementation of crmac were written in visual basic. Because visual basic is not portable and in a certain way is not 'groovy', for a long time it was considered writing an own implementation language for crmac to have everything under control. But then the decision went into using java as the crmac implementation language. However there is a strong differentiation between the java language and the jdk class libraries; we consider java as remaining available for the next 30 years which should be sufficient, but do not think that the same is true for most of the class libraries. Therefore we have defined a subset of java and the jdk to be used for the implementation of crmac core functionality; Nevertheless all of java is in use for the crmac runtime environment and gui.
Similar to the philosophy, in the implementation there is a strong focus on not introducing any limits to the system. Especially in the areas of 'set'-management and usage of heavily parallel computers a lot of work has been done.
more