What is GEAS:
-------------

The GNU Application Server manages business objects for enterprise business
systems.

For the user of an application, the existance of GEAS is not important -
system administrators will have set it up so that their applications can
easily find an appropriate server.

For application authors, the principal advantage of GEAS will be the ability
to easily create applications with complex features. Once the full system
has been implemented, a distributed and scalable system can be built with
the same ease as a typical single user application. A transactional scalable
multi user application will only need to consider the work that needs to be
done: managing network access, all data storage, and the distribution of the
work will be handled by GEAS.


Code Documentation:
-------------------
Doxygen (http://www.stack.nl/~dimitri/doxygen/) is being used to create
HTML, RTF and LaTex documentation from source code. To create the
documentation, download and install doxygen, then run
'doxygen geas.doxygen.cfg' in the gnue/geas/ directory. It will create
appropriate directories and files in the 'doc/code' directory.


Current features:
-----------------
	Manage business objects for storing data. Objects may contain
references to other objects, sets of objects, and look up data from other
objects.

	SQL database independance: Currently MySQL and PostgreSQL can be used
for data storage.  Custom database systems will be able to be added with
reasonable effort.

	Language independance: While Python is the main language for GNUe
applications, any language can be used to write a GEAS client, and object
methods will be able to be written in any language. This also means that
adapting existing software to use GEAS will not have the additional burden
of language differences.


Planned features (short term):
------------------------------
	Business object methods: Allow business objects to contain code to
perform arbitrary operations, and code to enforce business rules.

	More advanced searching: The Object Query Language offers the power
of SQL-92, combined with a range of features specific to object based
systems. This will allow applications that need it to perform complex data
operations. OQL will be implemented a step at a time, with parts of the
system being done at different times, leading to a gradual.


Planned features (long term - not in any particular order):
-----------------------------------------------------------
	Security : All access to the system will be automatically controlled
and monitored with exact details able to be controlled by the system
administrator. The intention is to allow access to be controlled to fine
levels of detail: even particular fields in particular objects will be able
to be controlled individually.

	Transaction support : Many business operations require features
offered by standard transaction based systems. GEAS will provide a simple
and standard mechanism for managing transactional data access.

	Distributed servers  : Distribution of servers will allow a number
of significant benefits to be made available to all applications iusing the
server:

	Load balancing : When multiple servers are in use, operations can be
spread over all available servers, to maximise system efficiency. Various
resources (network access, memory, and CPU power for example) can be
managed, with operations given to the most appropriate available server.

	Fault tolerance : System failures can cause significant problems
with computer systems. Fault tolerant systems rely on multiple servers
running the same operation at one time as well as having multiple servers
ready to take over. This means that serious failures can be handled
automatically, without the user needing to be aware of the problem. Systems
may be able to be automatically restarted, and administrators can be
notified of the failure by the remaining systems.




Directory structure:
====================

lib/          Contains modules that are either generally reusable, or used in
              more than one GNUe program.

src/          Contains the main GEAS server code. Each subdirectory contains a
              single module.

idl/          All IDL files used in GEAS

doc/          All documentation
doc/dia       Diagrams for GEAS
doc/internals Internal details of GEAS: describes how GEA works
doc/notes     Misc development notes - not updated on a regular basis, if ever.
              General notes should be kept here by GEAS developers, describing
              ideas and proposed algortihms to use

tools/        Additional programs used in association with GEAS: will include
              configuration assistants, class definition tools, and other
              utilities for an active GEAS server.

examples/
examples/businessobjects  Business objects used in the examples
examples/python           Python based demo applications, using example
                          business objects.
