bond build object network databases. design once, deploy everywhere.

BOND is a powerful rapid application development tool for creating database applications. It aiming to minimize the need for coding at the same time been plateform independent, this tool can dramitically reduce software development life cycles.

Bond is not an IDE, or yet another 4th generation RAD clone for linux, but a powerful collection of libraries you link to which lets you create user interfaces. How it works Bond is a library you link your application to. When you initilise bond it will display the relivant windows, and take control of your application. Bond will gather information from your backend database. It will also parse a glade XML file to work out how the application should come together. Ideally you shouldn't need to do any coding other than call bond_init() and bond_main(), though the option of writing your own callbacks is there if you want it. If your backend database is designed well, with constraints, default values etc, and you designed a user interface well suited to that database with appropriate labeling and widget names then bond shouldn't have any problems bringing your application to life. Widgets will become data aware and point to fields or tables in the database. bond ui gtk This library uses GTK and libglade to make widgets data-aware. It principly a wrapper around these libraries. A wx windows version is planned in the short term future so bond can applications can be run under windows. bond ui html The more interesting, html web application version of bond. Using this library you can turn your applications into web server applications without the need to change any of your existing code. It will translate all the user interface calls from bond and your application into appropriate html pages to serve out. This needs to be used in conjuction with the bond web server to manage user interface sessions and callbacks, though you can use bond web server with your apache web server. bond web bond web server, a simple web server that can run applications written in bond. The applications, which may normally run as a gtk application will instead appear as a dynmic web site using standard HTML forms. Demo This is a little demo of what bond can do, this demo was written in half an hour and has both a gtk and an html version.

Traditional rapid application development is done where you drag and drop the data aware widgets you require onto a form and then define a data source for each widget. BOND differs vastly from this approach as you do not normally define data sources for widgets, though you could if you really wanted to. Instead you merely label your widgets with sensible names. (ie a name that somehow resembles a field name in the database). In your code your dealing not with individual widgets but instead with the form in its entirety. So you make calls to libbond such as '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 relate 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 implement such things as searching, drop down boxes, loading of forms etc.

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

The Backend Database

Because traditional relationship databases do not hold information that is critical for BOND to work, like how objects relate to each other, BOND requires an application object orientated server.

At the moment BOND talks directly to postgresql. In the future support for GnomeDB will probably be added. Within postgresql you can create views to your tables that describe the fields you want on a window form. This is then picked up by BOND and translated into information to work out which widgets are data-aware and what their data source is. Vies also need to be created in postgresql to define the relationships between objects. BOND will only work with postgresql version 7.0 and higher and in the future if other databases are to be supported then they will have to have a way to store relationship information between objects in order to be of use.

Current Project State, and where we want to go. (2001/10/20)

BOND is still under heavy development. New things planned in near future is the reporting module, some fancy plugin support, more bug fixes, better object orinated support, gnome-db intergration and looking at getting other databases and widget sets supported. I consider BOND to be early beta. She sure is getting fancy.

source forge - source forge page for mailing lists, bug tracking and discussion.

Email me at andru@treshna.com for any questions, comments, problems.