GnuCash design - the role of QOF and QSF

Neil Williams linux at codehelp.co.uk
Mon Oct 31 14:44:54 EST 2005


On Monday 31 October 2005 2:59 pm, Brian Rose wrote:
> Right now there is the wiki, gnucash.org,
> and then independent developers' sites all with
> different info. I want to sound rude, just that
> I was confused at where Gnucash is going after G2,
> so I thought if I am confused maybe
> others are as well--hence the website suggestions.
> For example, I read the QSF part on
> Neil's site and now I wonder what QOF/QSF has to
> do with G2, SQL backend, multi-user
> support, ....

QOF is a separate library now with it's own development path that will retain 
gnucash as a client - incorporating feature requests from gnucash alongside 
requests from other client programs and architectures. Other applications 
using QOF include GnoTime, Pilot-QOF and cashutil.

QOF and QSF have important benefits for GnuCash and, yes, it is all linked to 
data freedom.

QOF is to include full SQL backend support via libgda and the gnome-db 
plugins. This will mean that gnucash will inherit generic backend support via 
QOF for nearly all the databases you can name - SQLite, MySQL, Postgres, 
Oracle, Sybase, ODBC,  FireBird/Interbase, IBM DB2, mSQL and MS
SQL server, as well as MS Access and xBase files. Data in any of these sources 
can be shared with any other backend and with any QOF client. (QOF is likely 
to move to beta once this is done).

QOF is also going to be built for embedded systems and already has a client 
application to work with Palm OS devices. On larger embedded systems, QOF can 
run on the mobile device and provide query support on the move - many PDA 
utilities lack the ability to use data from other programs on the same device 
and native QOF can solve this problem.

The idea is that the user data should be as free as the source code that 
creates it. Beating vendor/application lock-in not by reverse engineering but 
by making lock-in itself increasingly redundant. Revealing the true colours 
of lock-in - the selfish obsession of proprietary developers.

This means that GnuCash G2 gains access to data from a rapidly increasing 
range of sources making it far easier to work with your GnuCash data in other 
applications and to create GnuCash data from other tools - like a PDA - 
without losing the ability to bring the data back into gnucash later on.

Lots of people enter business data like expenses onto a mobile device of some 
kind. QOF - as a fundamental component of gnucash - can provide low-level 
generic access to all these pieces of data making data entry automation more 
available.

QOF will be able to go onto platforms that could never support gnucash and yet 
provide gnucash with access to the available data on that platform. Indeed, 
each and every QOF client will inherit the same levels of access to each 
other QOF client and each QOF backend, on whichever platform QOF is 
available.

Pilot-QOF wraps QOF around code from pilot-link to provide a QOF interface for 
all devices supported by pilot-link using QSF XML. The same can be done for 
other applications - wrapping QOF around existing code to create a new QOF 
client that can share data with any other QOF client using any available QOF 
backend.

> I am sorry and maybe I am a bit 
> green on developing such an app, but I just
> don't get any of the stuff with QOF/QSF. Is it
> part of the "Free the data" concept or to
> support multiple backends/platforms or what?

Both and all.

1. QOF provides simple methods to only export the gnucash data relevant to a 
specific query.

2. QOF retains the integrity of that data so that it can be reimported into 
gnucash and updated from gnucash.

3. QOF stores this data in whichever backend is chosen - QSF is the default 
backend and will be the only backend guaranteed to be available for ALL QOF 
clients.

4. QSF is a generic and validated XML that can support detailed and recursive 
SQL-type queries for data mining and data extraction / reporting. Any gnucash 
data can be made available to a Perl/PHP/Python/whatever script and passed to 
any number of customised scripts to provide an infinite number of reports and 
analyses.

5. QOF provides the data interchange that allows disparate data sources to 
exchange data without loss of data integrity.

This is mostly in the future - but I believe it all to be attainable.

-- 

Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.gnucash.org/pipermail/gnucash-devel/attachments/20051031/112c46a2/attachment.bin


More information about the gnucash-devel mailing list