QOF generator site, maybe

Neil Williams linux at codehelp.co.uk
Fri Mar 18 03:17:02 EST 2005

I'm off to a meeting today to see if the UK government can be persuaded 
against software patents across Europe, but before I left I just thought I'd 
raise an idea I've been trialling. I plan to add a little scripting to the 
static documentation site:

All the code will be downloadable so that users can run it locally.

1. Through a series of HTML forms, create the C code for a new QOF object.
 Complete with parameter handlers, makefiles and a simple query console 
 application (which will only need to be modified between runs to input the
 names of the new objects.) The object will contain enough data to populate
 it's own entities when the application is compiled and linked against QOF.
2. Provide a simple command-line interface for the mini-application to query
 the objects and write out the results as QSF.  (A simple application like 
 this already exists - it's waiting for the release of pilot-link-0.12 before
 being committed to pilot-link CVS.)
3. Write out an empty QSF file as a template and a MySQL CREATE
 statement for a suitable table for the object. (That will provide a way for 
 QSF to create MySQL tables suitable for specific objects - these
 tables will not be directly equivalent to the GnuCash Sqllite tables
 because those will contain objects that are not compatible with QOF.
 However, using QSF, the objects and data can be converted and
 then merged using qof_book_merge. (Isn't it amazing how much has
 come from the book merge code!)
4. Cache objects for any one user so that objects can refer to each other. 
5. Populate those tables / objects using PHP and the local MySQL tables 
 created during generation, maybe using a MySQL call to a different 
 table(s) and write out to QSF. (Best done locally.)
6. Upload a QSF file and create the C code (and databases) that are needed.
 Each QSF file is a complete description of each object within, omitting only
 those parameters that are get() only.
7. A simple method of creating a QSF Map by possibly comparing two QSF files.
8. All the code to be provided in a generated tarball at the end of the 
 scripting process, complete with ./configure, GNU GPL, makefiles and
 ready to link against libqof >= 0.5.2. I may even be able to do a test build
 on the server before the tarball is created.
9. Reverse-engineer any existing QOF object by uploading a QSF file and 
 re-creating the fundamental C code. This code will not do anything specific
 with the data, just store it in the object, provide QOF access and therefore
10. All generated C code will automatically include the usual copyright notice 
 as well as the GNU GPL notice. Note that as generation of the code using a
 remote site is, in essence, publication and distribution, the GNU GPL 
 becomes effective immediately when code is generated that way. :-)
11. Although users will "login" to provide their name and email address for 
 the copyright stuff, that data will be erased when the code is generated.
 However, the generated code itself will remain available as a tarball on
 the site. Visitors are, naturally, free to download the generator code itself
 and implement it locally if this is preferable. The QSF schema will remain
 under the GNU GPL.

This will be a separate project as it can't really be part of the main QOF 
codebase. It will be allied to it and will serve the main purposes of QOF and 
GnuCash. I'll probably put it on SourceForge and if anyone is interested in 
helping out, please contact me.

You'll need MySQL, PHP, XML and HTML experience only. 

C or Scheme experience is NOT required.

I do not expect this to be fully operational before the Gnome2 port is 
released, but shortly afterwards.

Linas? Do you think we'll be OK to release QOF 0.5.2 before or with the Gnome2 
port of GnuCash? I need to also synchronise it with the release of 


Neil Williams

-------------- 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/20050318/968f8000/attachment.bin

More information about the gnucash-devel mailing list