Qddb development began around 1989 as a summer project to build a small set of database tools for student records. We saw that many schools were either spending tens of thousands of dollars on database tools or were hacking something together that didn't do the job very well. We believed the tools should be freely available so that small educational institutions could use the software without fee. Generic tools would make the software useful to a wide population.
Student records typically do not change very much during the course of a year, so we decided to make the assumption that the data would be relatively stable. We used the bibliographic database program refer [3] as a model. After some thought, we decided that more flexibility was necessary for generally useful tools. At this point, Qddb schemas were born. They allowed us to specify attributes in an intuitive manner, group them together, and have an unlimited number of instances of each attribute or group of attributes in any tuple. Our first production schema was for graduate student records. Each student is associated with one tuple, with attributes for the student's name, identification number, addresses, phone numbers, and semesters, each of which contains courses with corresponding grades. The student-records relation is still in heavy use.
Around the same time, we built many schemas for our personal use. Music collections, family trees, coin collections, libraries, technical reports, bibliographies, antiques, and personal contacts were a few of the first Qddb databases. Our interfaces were crude but useful, and they still exist: qedit, qadd, and the like.
The original Qddb took about a month to build and was around 1,000 lines of C code. Over the next few months, Qddb grew to over 10,000 lines of code, and its usefulness grew with it. Around the end of 1991, development of Qddb stalled except for the occasional bug fix. The reason for the delay was not that our interest had waned, but that Eric (the primary implementor) had some school work to do. Qddb was placed on the back burner.
After finishing his PhD dissertation, Eric turned to improving Qddb. The most neglected part of Qddb was its user interface, and Eric wanted something graphical. We needed enough flexibility to allow users and programmers to build specialized interfaces, but powerful enough to build something general. We developed several prototypes that would build generic (that is, independent of any particular schema) screens under the X Window System (using the Xt toolkit), but we were not satisfied with the result. Motif was pretty enough, but it was too much effort to deal with, so we began to look elsewhere.
John Ousterhout's Tcl and Tk Toolkit were perfect for our needs. We introduced the Qddb extension to Tcl, including the interactive programs qtclsh and qwish. The xqddb program is a generic user interface written in this extension. Qddb was now around 40,000 lines of C and Tcl code.
The most recent development has been the distillation of xqddb ideas into Fx, a Tcl library that makes it far easier to write custom graphical Qddb applications. The proof of this idea is nxqddb, which has very similar function to xqddb but requires less than 300 lines of code.
Qddb continues to develop. New features and tools are being added at a very fast rate, mostly to the Fx layer, but to some extent at the qtclsh layer and the libQddb.a layers as well.
Qddb is being used world-wide by thousands of sites. Applications include many fairly large (20-30 megabyte) databases, both commercial and non-commercial. However, we still consider the software to be in a beta condition. Use it at your own risk.