BOND
building object network databases


Notes to avis:



Change first paragraph to dump GEAS. modify to say
it builds on glade and gtk to allow you to create dataaware widgets to back
endd databases without having to write the code to handle it.

In the header you need to add meta tags. Which heklp or search engines
ie.
gtk dataaware data aware glade linux gpl rad rapid application development widgets postgresql data-aware

change title to bond, building boject net... making gtk data aware widgets
(or there abouts)

There is a \ in screen shots at top, there shouldn't be.


change backend parachgrah
completely.
like utterly.

infact all references to geas canbe changed to back end database.

At the moment bond only talks to GEAS (GNU Enteprises ...).  We working
had to give support direct access into postgersql without need for a middleware
server.  Within progresql you will create views to your tables to 
describe what fields you want on a window form.  This will then be
picked up by bond and translated into information to work out which 
appropriate widgets are data-aware and what is there data source.
Vies are also needs to be created in postgresql to define the relationships
between objects.  Bond will only work with postgrsql version 7.0 and higher
and in the future if other db's are to be supoprted then they will have to
have a way to store relationship information between objects in order
to be of use.


at top of page, add a news snipte, like latest enws

Version 0.0.6 has just been released.  This will be the last
version that directly supports GEAS in the backend, version 0.0.7
will talk directly to postgresql without the need for a middleware server.
There are many reasons for this change in direction, the princple one
being the increased speed at the client end, easier to set up and isntall bond
and more control over how information is put together for the client forms.  
The API for bond should remain the same. 


update current state

on main page have a register interest box, news list. um
i need a word here to describe this avis.
where you type into a box your email address.
and i sent out little newsletters on progrence.
annocment mailing list




Under main page you could have a link to a survey, of what you would
like to see in bond.  This should have a link on both main and downloads
section.  














Overview

Bond is a rapid application development tool for creating database applications.
It builds on glade and geas to allow you to create data aware applications
quickly and effeciently.  

Tradional rapid application development is done where you drap and drop
data aware widgets you want onto a form and then define a data source for each widget.  
BOND differs from this approach a lot as you do not normally define data sources for widgets,
though you can if you really want to.  Instead you meerly label your widgets with sensibly
names.  (ie name that somehow resembles a field name in the database).  In your code
your dealing not with individual widgets but with the form in its entirety.  So you make calls
to libbond like show form abc, close form abc etc.

Approach

When I design database applications I do it in two parts.  I design the database
backend of how the objects related to each other and what is contained in each
of those class objects. I then design the user interface of how the forms
interact and the user processes flow, using tools like glade or borland builder.

Now traditionally after this is done I normally do all the coding to make the
forms I have developed work with the database backend and impliment
such things as searching, drop down boxes, loading of forms etc.  

The central idea behind BOND is that we can just skip that development phase and
just design the front and back end and let BOND do its majic stuff.
Let it work out the those nasty relationships, handle that data retrival, 
and build those drop down boxes etc.  With bond your source code files should
be retivially small.  

The Backend - GNU Enterprises Application Server

Because tradional relationship databases don't hold information that is critical
for BOND to work like how objects relate to each other BOND requires a application 
object orinated server.  

GEAS, or GNU enterprise application server, is the middle aspect of the 3 thier 
archeture.  It does all the talking to the backend database (either postgresql
or mysql) and contains backend information like class definations.  

GEAS use gcd files to store class definations which are simple text based files
similar in format to C++ which describe what fields you want in the database
as well as the relationships between your objects.  This information is used
by GEAS to dynmically create the nessary fields and tables in your preferred
relationship database.  Writing a gcd file is a very useful first step in 
designing your application and is quicker than writing SQL scripts to do it for you.

GEAS and BOND use the orbit implimentation of CORBA to communicate.  GEAS
supports methods in classes which can be written in any langauge that 
supports CORBA, like python, C, java and so on.  

Current Project State. (2001/05/28)

BOND is becoming quite useable but we still have a long way to go.  The complete
GTK widget set is not supported yet, and their are plenty of missing features
to be added.  You can build working applications at the moment though
a bit of tweaking maybe in order.  I consider bond to be currently at an alpha
release stage.





Sample Database

First of all, everyones coding style is different.  So it is very possible
at this stage for me to have huge gaps in bond where it does not regonise
a specific style of building applications.  

This is a basic client contact management database i wrote for linux.  It
took an hour and a half while watching Al'G on TV.  It is just ment to give you
a very basic idea of bond and what it can do.



Licening

Bond is released under dual licenses, of both GPL and a commerical
licence.  The version avalible from this website is licenced under GPL.  If
you use bond then you MUST release your code under GPL.  Even if you are just
linking you still are required to release your code under the GPL licence.

The commerical version of BOND is avalible if you wish to use BOND with a
non-GPL application, email sales@treshna.com for purchasing information.

Installation







Code Notes

This project sort of happened by accident where my code evolved from one
thing completely different to another.  That is not as bad as it sounds,
it just ment I kept coming up with new ideas to improve way, and always
re-anylising their is maxium code reuse and minimal bloated code.

All the coding is done in C, autoconf or packages have not been set up as 
yet as i've been to focused on building the application.

The naming of my source code files is bizare to say the least. Sorry,
bad habbits die hard.  Please see codelayout.txt to get more detailed
information on the project.




Developers

Project Leader:  Andru Hill

Programmers:
Andre Renuard		www.ignvuas.net
Andrew Murie		andrewm@treshna.com
Andrew 
Andrew Hortan
Sascha Bonmont

(Yes their are a lot of andrews)



Other projects associated:

GEAS
GNUE
Glade  www...
LibGlade
Ignvaus



Screen shots

Customer Database

This is a simple example database


