Gnucash 1.8 schedule, ofx and generic import infrastructure

Benoit Grégoire bock@step.polymtl.ca
Wed, 20 Nov 2002 13:45:30 -0500


On November 20, 2002 05:35 am, Christian Stimming wrote:
>
> Which parts are missing that are essential for 1.8 but will break String
> freeze and/or be a new feature? I know of:
>
> * Currency exchange transaction Dialog; responsible: Derek
>
> * Generic transaction import - Account matcher; responsible: ? (Benoit,
> cstim, Derek); but I would consider this as non-essential for 1.8, so if
> we cannot get it done until the next beta, I would propose to delay that
> until final 1.8 is out.

I agree this should wait until 1.8, otherwise we would only have 10 days to 
discuss and implement this feature, which is not realistic.  Since all the 
import functionality is now implemented in modules,  I think this feature can 
be implemented during a stable release cycle (1.8.1 or 1.8.2) without risking 
destabilizing GnuCash as a whole.

This would leave us a month to discuss a GUI for auto-split creation and 
revisit the rest of the GUI without release pressure.  I am even willing to 
revisit the API if it will lead to more code sharing.  I need to implement 
reconciliation using the balance (especially now that I agreed that 
transactions will be cleared by default until there is a preference page).

Speaking of which if I have time in the next ten days I would like to 
implement the preference page for the transaction matcher before release.

---------------------------

So, let's start the discussion:

Here are the GUI services currently offered by the generic import module (Not 
all of which will be used by every module, obviously):
-Source account matching and creation.
-Commodity matching and creation.
-Transaction matching and adding.
It would also need to add:
-Destination account autoselection (auto-split creation) as part of the 
transaction matching (There is no choice but to put it on the same page, 
there are plenty of examples where two successive transactions will need a 
different match) .
-Reconcile window invocation (I see it as a list of accounts for which a 
balance was downloaded.  You check those for which you want to invoque a 
reconcile).  Since HBCI supports it, is suppose Christian wrote some code for 
this.

Now, I've taken a lot of heat in the past for the event based, "pop in your 
face" design of the current generic importer.  Derek and Christian want it to 
be druid based.  I've spent much energy defending it, but to this day I still 
don't have a clear understanding of what kind of Druid would replace it that 
could do OFX, HBCI, QIF and others.

However, assuming the technical challenges can be resolved I would be willing 
to go thru the programming effort to convert it to a Druid, if a coherent and 
generic whole can be integrated into such an interface (skiping unneeded 
pages automatically).

However one thing is ESSENTIAL for me:  It must be very simple to understand 
how to write a simple import module (CSV import for example) that uses the 
generic import services (altough wether or not it is currently the case might 
be debatable).   I wrote the Transaction matcher as a public service because 
if I hadn't, there would now be three different GUI for transaction import.  
Considering how few GnuCash developers there are, that would have been 
ridiculous.  Furthermore, I didn't want the learning curve for the next 
developers to be as steep.

The way I currently do my accounting, I don't really have a need for a 
transaction matcher.  But I hoped the extra effort to write truly generic 
import infrastructure would be offset by coding help, since it would be used 
by HBCI and the new qif code.  Unfortunately so far I've been mostly hacking 
at this alone.

To be honest, my motivation for GnuCash isn't at an all time high, and I no 
longer have 20 hours a week to spend on ofx and GnuCash as I had in the last 
6 months.  Not that I don't like peer review, (on the contrary, I crave 
feedback, good of bad).  However I have a feeling a that the code I've 
written generates much insatisfaction, not all of which is openly expressed.  
Insatisfaction for me, because I took time to write extensive design docs 
BEFORE I wrote a single line of code, yet feel that now that it is 
implemented, it is not fully embraced.  Insatisfaction for longtime GnuCash 
developers, because the API is not in the usual GnuCash "style"  (And altough 
this wasn't said to me openly, neither is my programming style).

Note that most of the criticism I received (even those with which I did not 
agree) have been very usefull and lead to changes in the code or a better 
understanding by everyone involved of WHY some things were implemented the 
way they were.  Everyone have been fairly open to discussion.  (Which is why 
most of the issues were resolved).  

But now that we are in feature freeze, I would like everyone to make a list of 
what they don't like in the generic import GUI and API, why, and what they 
would replace it with.  Much of the conflict over this code was due to people 
having different understanding and expectations about what this code should 
do. It is important that we do this now if we are to work together to improve 
this code.

Also, PLEASE, I need testers to give me feedback on ofx before 1.7.4 even if 
everything is fine, especially with investment support which is brand new 
code.  OFX was broken in 1.7.2 tarball so I got no feedback from that 
release.  LibOFX, the transaction matcher and the ofx module all had major 
changes in the last month.

I hope I didn't offend anyone, but I had to vent this off,

Have a nice day,
-- 
Benoit Grégoire
http://step.polymtl.ca/~bock/