Getting money for Gnucash development [was Re: Newbie migration issues]

Neil Williams linux at codehelp.co.uk
Sat Feb 5 12:59:10 EST 2005


On Saturday 05 February 2005 2:46 pm, Derek Atkins wrote:
> I think the source code layout isn't as consise as it could be, but
> each individual source file is fairly well modularlized.

The Doxygen output is particularly helpful.

I've only recently started working within GnuCash and particularly QOF. I find 
QOF very easy to learn, very simple to use and, most important of all, easy 
to port.

I've almost completed a wrapper for pilot-link that uses QOF to provide:
1. An XML backend
2. A SQL interface
3. A query mechanism that is independent of the existing conduits.

The power of this cannot be underestimated. Existing conduits need to be 
laboriously re-coded to handle changes in the databases or query structures. 
QOF removes all that and just requires an updated description of the database 
in QofObject and QofClass. By providing command line and file access to the 
SQL-like queries supported by QOF, anyone can obtain their Palm data in any 
format whenever they like. It will transform how Palm data can be used by 
desktop applications and handhelds.

> Seriously, the more you look at the code the easier it is to
> understand. 

I second that. I spent ages getting to know the codebase and Derek can testify 
to some of my dafter ideas. QOF I understood quickly, the gnc_ stuff took a 
lot longer - and is still ongoing.

> > QOF is a reinvention of querying capability used only by gnucash and
> > gnucash authors. It's an unnecessary abstraction layer

Untrue. QOF is a useful query layer that provides self-describing objects. The 
most important part is the simplest, in theory: by having only one QofEntity, 
you can find the entire QofCollection of those entities in the current 
QofBook. Starting with one object, you can iterate over every other object of 
the same type. That alone is very powerful.

> > that makes 
> > gnucash more difficult to write code for and is a hurdle to learning.

??? QOF was the easiest part of the entire codebase for me to learn!

Personally, I don't think you understand GnuCash and if you take the time to 
work with QOF - maybe read the doxygen output and my own documentation on 
qof_book_merge - you may change your opinion. QOF is easy.

> > No 
> > matter how good it might be technically, I will never believe it to be
> > superior both to SQL and to all of the RDF and XML query capabilities

It is superior because it is smaller and more efficient. RDF and XPath are 
overkill and laborious. QOF is simple, quick and flexible.

> > developed over the last few years.

As Derek says, GnuCash began before all those.

> QOF as it stands now is just a refactoring of the query engine gnucash
> has been using for almost a decade.  Nobody else is using it yet
> because it was only recently refactored.  It takes time for people to
> see and start using a "new" package.

I've got it working as a framework around pilot-link and I'm hoping to get QOF 
onto portable devices as a data interchange and abstraction layer between 
applications on smaller devices. QOF is ideally suited to being used as the 
data interchange layer from one application to another. Application objects 
describe themselves to QOF, QOF writes generic streams that the next 
application can map and use as native. The key is that each application can 
change how they handle their own data without breaking handling in another 
application. 

Remember, these are applications (more like applets really) on small devices 
like a handheld that know nothing of MySQL, Postgres, RDF or even XML 
natively. All they have are C structs that contain their data objects. A 
simple wrapper struct and a set of get and set routines is all that is needed 
to link those into QOF. Other applications can then query the entire data set 
of a different application, retrieve objects that have been mapped to the 
native C objects in the recipient application and import the data.

This can happen in real-time with data streams. Imagine the Contacts applet on 
a handheld being able to cross-reference your customers with your calendar 
events, ToDo list and Expenses - in real-time!!

THAT is what QOF can do on a handheld that no other layer can achieve.

> > C combined with an out of date GLIB and GTK is not easy to work with.

Ahem, then why not help with the G2 port instead of criticising??
:-)

I could have just sat at home whingeing about a lack of an invoice creation 
mechanism in GnuCash, I could have read the early replies to my ideas on the 
devel list and given up or sulked. I could have wasted years of my time 
trying to invent NewGnuCash on my own. That is all pointless - development 
needs cooperation and you need to JOIN rather than compete, unless you are 
certain that a forked project would attract enough developers.

> > It 
> > requires a whole lot of typing to do anything useful. 

GUI tools are over-egged - code happens at the keyboard, not the mouse.


-- 

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

-------------- 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-user/attachments/20050205/08d0c63e/attachment.bin


More information about the gnucash-user mailing list