D&C GLug - Home Page

[ Date Index ] [ Thread Index ] [ <= Previous by date / thread ] [ Next by date / thread => ]

[LUG] Project Help Wanted

 

I just thought I'd raise an idea I've been trialling and ask if anyone is able 
to help out. 

QOF Generator is now active at SourceForge:

http://sourceforge.net/projects/qof-gen/
http://qof-gen.sourceforge.net/

It's about generating code to use with a *specific* C library. The library is 
QOF - Query Object Framework and I've been working with it for some time, 
extending it's capabilities. I've added an XML backend that is known as QSF.
http://sourceforge.net/projects/qof
http://code.neil.williamsleesmill.me.uk/

A QOF definition is basically a repetitive, standardised layout of C code. 
Every QOF object C file *could* look basically the same as every other. The 
customised code that actually does something useful with the data in RAM is 
separate, all I'm providing here is the simple link to the QOF framework 
expressed in C.

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

It has it's first CVS commits and first file release. Most of the intended 
functionality is to follow, this is very much pre-alpha. However, the C file 
produced DOES compile. What I'm working on today is the mini-application and 
general functionality / documentation. Currently, it's setup in testing mode 
so it tends to rename everything invoice and it doesn't take your name or 
email, it uses mine as default! ;-)

Project Outline:
------------------

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. 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.
4. Cache objects for any one user so that objects can refer to each other. 
(MySQL). 
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
QSF.
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.
12. The code is packaged into a tarball; the code requires QOF to build. 
Currently, this must also be the CVS QOF code - the binary and main package 
release are too old.

This is 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've 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.

OK, that's it for this list, all discussions on the generator via private 
email please. I'll use a dedicated SourceForge mailing list if there is a 
need.

-- 

Neil Williams
=============
http://www.dcglug.org.uk/
http://www.nosoftwarepatents.com/
http://sourceforge.net/projects/isbnsearch/
http://www.neil.williamsleesmill.me.uk/
http://www.biglumber.com/x/web?qs=0x8801094A28BCB3E3

Attachment: pgp00018.pgp
Description: PGP signature