Introduction | ||
The main purpose of GNU6 is to provide environment for rapid development, testing and deployment of multithreaded applications configured via XML. GNU6 is distributed under the GNU General Public License. GNU6 can be downloaded from http://sourceforge.net/projects/gnu6.
In order to explain how GNU6 environment works we first describe a concept of a finite-state automata. One can think about a finite state automata as a system (and/or machine) that has input, output and internal state.
A finite state automata | ||
Depending on its state an automata may give us different outputs for the same input. For example, if you look at a vending machine, then input means to put coins into its slot and output is what you get from the vending machine. Clearly what you get for your coins depends on the internal state of the vending machine. Moreover, the vending machine moves into a different state each time you insert a coin into its slot. Thus a finite-state automata is defined by inputs, outputs, internal states and a number of moves that change its internal state.
The main goal of any software development is to create a finite-state automata with certain properties. GNU6 gives us a framework for designing, testing and deploying such automata. In GNU6 terminology a finite state automata is called a project.
GNU6 project is defined by a number of moves implemented in some computer language and XML files (called "mlists") that glue together all those moves. At the time of writing this manual GNU6 is implemented only in Java and XML interface is provided by Xerces. In the section "Building a project with GNU6" we will explain how to write mlists and create moves.
Each mlist in GNU6 can be equipped with its own time schedule. This schedule can define time intervals during which mlist is active, time intervals my depend on particular date. Some dates can be declared as holidays and mlist will refuse to work on those dates.
Mlists define a structure of a project in GNU6. Thus, one can send mlists over the Internet to a different machine which can execute them as long as it has all the necessary moves in its GNU6 environment.
One can efficiently change project structure and behavior on the fly by editing XML content of the corresponding mlists. Moreover, the application itself may easily auto generate new mlists if necessary. That gives us possibility to create very flexible custom applications.
The more GNU6 moves you have at your disposal the better and faster you can develop your applications. We hope that developers can contribute new moves that are of interest for general public. That is one of the main reasons for distributing GNU6 under GPL.