New transaction matcher

Benoit Grégoire bock@step.polymtl.ca
Tue, 26 Nov 2002 01:56:49 -0500


> > -There must be visual feedback that the match was inconclusive.
>
> I disagree. Right now, there are two possibilities: Either a good enough
> match was found -- then it's displayed there. Or no good enough match was
> found -- then the "New" column is marked. If the user thinks that there
> should have been a matching transaction, he should click on the "New"
> column and happily find his (fuzzy-matching) transaction in the
> matcher-dialog. IMHO this is just enough. Remember, in "The Usual Scenario"
> only 10% of the transactions are not new. Therefore I'm pretty sure that
> the duplicate-matching will, in some way or the other, be able to present
> enough potential duplicates to the user. Also remember that in HBCI, the
> amount of duplicate transactions match exactly in 99% of the cases.
> Therefore in HBCI, I really don't need much fuzzy matching here -- the
> exact matching account is already a good enough criterion.

Your are going against your own reasoning.  In your current matcher, if the 
match was not originally "good enough", you will add the transaction by 
default (with no clue that the transaction might have been  a duplicate).  So 
if your 90% new/10% duplicate ratio is typical (and I believe it is), it 
means that your users are going to to have to double check 90% of the 
transactions to see if they were indeed not a duplicate, since they have no 
info on which ones are a "close call".  So if you want to KISS and fast for 
90% of the time, using your current interface you should default to 
reconcile, so your users only have to double check ~10% of the transactions.

I still think it would be best to show the score of the best match, so the 
users only have to check the ~5% transactions for which it's hard to tell.

> > -The actions must go back to the main window.
>
> No :-)
>
> Seriously. I have written the message with "The Usual HBCI Scenario" to
> point out that I have a bunch of assumptions that I consider to hold when
> users are importing through HBCI. From that scenario, I derived the use
> cases which really boil down to the fact that the [HBCI] user does not need
> any further choices than the two shown in the main importer window.
> Therefore, if you propose GUI changes in that respect, then I can only
> agree if the HBCI code can specify configuration arguments so that the
> [HBCI] user won't get more choices than he does now.

Well, I'm sorry but with that attitude we can't get anywhere.   It seems to me 
now as tough you were never really ready to have a generic matcher.  Your 
point of view seems to be that if it's of no use for german users 90%
of the time, you don't want to see it, no matter how many hoops the user has 
to jump thru for the other 10%.  I'm sorry, but we can't build something 
GENERIC in these conditions, it a contradiction.  By definition there are 
compromises to be made and a cost in both coding complexity and interface 
complexity for building something truly generic.  We wanted to go this way 
(considering that interface complexity can be minimized by configuration) 
because we hope that having a single matcher for OFX HBCI and QIF will lead 
to more stability and better features on the long run.

Now there are two assumptions you seem to make that really annoy me and are 
poisoning this discussion (causing us to argue about things that are not 
really relevant)

1)  ------------
You assume the users have different needs because they are using HBCI vs OFX, 
and HBCI allows more assumptions.  This is simply not true.  If your users 
have simpler needs, it is because of the way you claim they do their 
transactions in real life in germany  (No commercial ATMs, very short credit 
card processing delay).  Even then, I sometimes think you are 
over-generalizing your scenario, but as long as the user can customize 
behavior, it's not too important.  

As far as the import process is concerned, HBCI vs OFX only have the following 
technical differences:
-1-  OFX can guarantee uniqueness of transactions, HBCI can't (currently).
-2-  A new account will never come up during the import process for HBCI, 
while that is currently always the way to add a new account for OFX.
-3- Splits in HBCI are never balanced, while they sometimes are in OFX (most 
investment transactions, and interaccount transfers (not implemented yet)).  
But from glancing at the HBCI spec, it seems to support all information 
needed for investment transactions, so this difference is temporary at best.

1 and 3 have some relevance to the transaction matcher, but haven't been the 
source of much of our disagreements, have they?  And since 3 can't be relied 
upon to hold in the future, only 1 is left, and it's satisfactory for now.

2)  ------------
Right now, you let the computer make a yes/no decision on wether the 
transaction has to be added as new no mater how unsure it is.

You claim that the user will just double check that the transactions are 
indeed new, but you've removed from the main window ALL the information that 
would allow the user to make that choice once the computer has decided that 
it should add as new.  I think you don't really expect the users to double 
check this into the transaction matcher on a regular basis, otherwise you 
wouldn't be arguing on hiding the match confidence or the "INCONCLUSIVE" 
action.

If the computer doesn't know, it MUST tell the user.

> Again I disagree. I want this GUI to be f**ing simple and stupid (I think
> that's known under the acronym KISS). I already argued about which choices
> I think are relevant for 90% of the transactions. Any further GUI elements
> that are relevant only to a minority of the transactions should absolutely
> be kept *out* of the big list.
>
> Again, if you want to implement it in a way so that for the usage from HBCI
> it can be switched off / made invisible, then I'm fine with anything. Also
> note that if my GUI concept just doesn't give you enough freedom to add
> more features, you are absolutely free to return to your initial
> Transaction-matcher GUI. Really, and that's not even too much of an effort
> duplication (since the gnc-gen-transaction code already uses 90% of the
> Transaction-matcher code). It would just acknowledge the fact that in HBCI,
> I can use yet more assumptions to get the simplest GUI possible, whereas in
> OFX, you see reasons that judge building a much more complicated and
> feature-rich GUI.

Considering the above and the fact that we are way too close to a release,  I 
think we no longer have a choice, we must fork.  I suggest that you swallow a 
copy of gnc-gen-transaction.c back into the HBCI module.  Considering I will 
keep your basic interface design, Transaction-matcher.c can hopefully stay 
common (the action menu will be moved out of that file).  I now compile with 
HBCI support, and I'll try to maintain compatibility as much as possible.  I 
still have the (perhaps arrogant) hope that you will come back to the generic 
matcher once it is completed.

This is unfortunate, but we no longer have time to argue this before release 
if we can't set true common objectives.  Email is just too time consuming (I 
already spend almost three hours on this one).  I've worked very hard to 
accommodate you until now, and I would be quite willing to continue to do so, 
especially since I've now seen what is to be gained by working together.  
Even with our different coding style I found your code cleanup amazing.

However, you just seem to be unwilling to compromise much.  I feel I already 
compromised a LOT (Building and debugging the new action handling and GUI 
took DAYS, and was mostly done to make you happy) and until now I mostly 
defended my arguments instead of attacking yours, but we are weeks away from 
final release, and I don't think I can afford to maintain this attitude.  But 
taking a confrontational approach towards you by email is unlikely to help us 
get ready in time for 1.8.

I am afraid a temporary fork might be the only viable solution.  We 
shouldn't have attempted this into a release cycle.  Neither of us have time 
time right now to finish a discussion on a generic interface by email.  

Even if we do fork, I'd be willing to make an oversea call if you send me your 
phone number by email.  That way we can save as much common code as we can, 
and perhaps understand each other better.

Good night,