This mini-project was started to add extra functionality to GnuCash to make it easier to import data from various sources into GnuCash to allow users to manage personal or business finances using Free Software.
Various import filters exist in GnuCash but it became clear that a capability to merge two accounting books (specifically two QofBook objects) was desirable. QofBook comes from the Query Object Framework - an offshoot from the GnuCash Project. QOF is basically the GnuCash "engine" with all of the financial objects removed. As such, QOF is "tried and true", and has proven its worth.
The idea behind QOF is to provide a generic framework so that any query can be executed, including queries designed by the end-user. Normally, this is possible only if you use a database that supports SQL, and then only if you deeply embed the database into your application. QOF provides simpler, more natural way to work with objects.
Pilot-QOF converts Palm databases to queriable objects. A Palm database record is an instance of the object, called an Entity. Objects are collated to form one data source, called books, that can contain any number of different objects - depending on the application running QOF. Pilot-QOF writes selected palm data to QSF XML offline storage and running SQL-type queries on the live data or XML file.
Pilot-QOF currently supports the four main applications (Expenses, Contacts, Calendar and ToDo) and work is now progressing to support other free software Palm databases like PCash and FreeCoins.
Generating new objects for the Query Object Framework is repetitive, tedious and time consuming. qof-generator automates this process in PHP or perl to build a working test program, linked against QOF.
Data-freedom encourages the development of implementation architectures and conceptual foundations to synchronise arbitrary tree-structured data.
The goal is to encourage generic data handling using extensible mechanisms that are inter-related to allow free exchange of data between disparate applications, systems, architectures and platforms.
Each implementation is free to choose the most suitable method of providing data and receiving data. All that is required is that the method chosen is as open, extensible and generic as possible. Naturally, the eXtensible Markup Language - XML - features strongly.
A QOF Book is a dataset within a QOF framework. It provides a single handle through which all the various collections of entities can be found. In particular, given only the type of the entity, the collection can be found. Books also provide the 'natural' place to working with a storage backend, as a book can encapsulate everything held in storage. It is therefore the obvious start point for any data merge in QOF.
An XML serialization format for QOF - i.e. it lays out a QOF object in a series of XML tags.
QSF object files will contain user data and are to be exported from QOF applications under user control or they can be hand-edited and can be used as an export or offline storage format for QOF applications (although long term storage may be best performed using separate (non-XML) methods, depending on the application).
Anyone is free to create their own QSF objects, subject to the GNU GPL. It is intended that QSF can be used as the flexible, open and free format for QOF data - providing all that is lacking from a typical CSV export with all the validation benefits of XML and the complex data handling of QOF. The QSF object and map formats remain under the GNU GPL licence and QSF is free software.