GC, QOF and queries

Derek Atkins warlord at MIT.EDU
Fri Nov 3 13:58:03 EST 2006


Quoting Daniel Espinosa <esodan at gmail.com>:

> I'm trying to question in the best way, with out injury to any, the GC
> architecture and try to HELP to have a better one.

The steps towards a better architecture are:

1) Convert QOF to use GObject natively instead of being GObject-like
2) Using the same QOF APIs, try to use GDA natively inside QOF
3) Consider moving more information into QOF.

However, in the short term, major architectural changes aren't on the table.

>> > Using a GdaDataModel or a GdaQuery, you can directly modify the data
>> > in the DataBase using a begin/commit transaction (usefull in a
>> > multiuser enviroment), of course this could fix the *autosave* future
>> > request becouse you can edit a transaction and when saved it wil be
>> > automaticaly commit to the server/database.
>>
>> You're missing a fundamental architectural design of QOF and GnuCash.
>> Please go study QOF and then come back here.
>
> I don't missing that, I have studied the QOF enough to know that is a
> GObject like implementation with a kind of GInterface, where you have
> to implement the methods in order to do the work like (init, dispouse,
> begin transaction, commit, roll back, and so).

This is true, QOF is gobject-like....

> If QOF have a GObject like architecture, may you can create objects
> where you can have methods for the GC to make his work, and allow any
> to derive from them to implement a new characteristics, even if the
> Backend have a GInterface (it has) you can implement the it in order
> to create a new back end a a clear way (I know this way in on the
> QOF's documentation); GDA has this kind of architecture in order to
> allow new Providers (any) implement the API and allow to be used
> inside a GDA app.

Yes, but it's still just the backend.. The front end isn't changing.
GnuCash is still buffering the data (through QOF).   QOF is just a
framework; the objects themselves are still cached in RAM, and implemented
by GnuCash.  QOF just provides the framework to hold it all together
and Query over those objects.

> I see you don't want to help any one that doesn't have a previous
> knowlege about QOF, even if he/she have some knowlege about GObject
> architecture; I know that may you haven't time enough but I haven't
> time to learn QOF, I prefer to learn more about GObject.

It's not that I don't want to help, but I want to help make forward
progress in small steps.  Your questions read to me the same as someone
asking:

  * Why can't I rewrite GnuCash in C++?
  * Why can't change GnuCash to use WxWindows?
  * Why can't we write reports in python?
  * Why isn't GnuCash a client/server Web Application?

Hundreds of man-years of effort have gone into the current GnuCash code.
It's irresponsible to just throw that all away.   Making fundamental
changes to the way to application works is detremental to the process.

This thread started as a SQL BACKEND.  That's a very limited scope,
and I'm happy helping someone (you, Phil, Matthew, or anyone else)
to make progress on a SQL Backend.  That backend can use GDA.  Fine.
No problem.  But discussions of fundamental architectural shifts of
the gnucash application?   Sorry, not interested.

>> Incremental changes are good.
>
> Is good to hear you "incremental changes are good", but I can see you
> can't support to hear any discution about that.

But you're not talking about that..  You're talking about fundamental
changes.  Let's take small steps here!

> Sorry but I don't know who you are, are you the mantainer and have you
> the last word about GnuCash?

Pretty much, yes.  I'm the longest-standing core developer.  I'm a major
feature contributor.  I'm an active maintainer.  I'm "customer support".
And I'm the hosting/service provider.  So, yes, what I say tends to carry
a LOT of weight.

But as you can see from other email, I'm open to listen.  Chris convinced me
that we should look forward to GDA-2 (through 1.99) instead of keeping 
with 1.9

> Is QOF the realy unique way to solve the GC's objectives? Can't be
> moved out or GC must use it in order to work with databases?

I think you're asking, "is QOF the ONLY way to solve GC's objectives?"
Of course not.  KMyMoney doesn't use QOF; it solves the problem differently.
However, can QOF get removed from GnuCash?  No.  QOF is a fundamental
GnuCash architecture.

Now, could QOF get changed over time to be more like a GDA Wrapper?
Maybe.  But that's not something I think should be discussed in the
same conversation as a SQL Backend.

I'm trying to keep the conversation focused on the task at hand instead
of looking towards projects that are probably 5 years out.  And yes,
realistically I see what you propose as something that wouldn't happen
for five years.

> I don't think so.

-derek

-- 
       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available



More information about the gnucash-devel mailing list