XML size (was: no subject)

Paul Lussier plussier@mindspring.com
Wed, 03 Apr 2002 15:02:25 -0500

In a message dated: Wed, 03 Apr 2002 12:43:45 CST
Rob Browning said:

>Paul Lussier <plussier@mindspring.com> writes:
>> Are you planning on writing an ASCII Import feature as well?
>Absolutely -- if we went this route...

Okay, this was never stated anywhere, and someone seemed to be 
proposing an export feature as a way to placate those of us arguing 
for an ascii file.

I'm basically happy as long as there's a way for me to export my data 
to ascii after every session "just in case" and re-import it in case 
something "bad" happens.

(please don't use qif for the export/import format ;)

>One thing you may be underestimating is how much easier certain things
>would be code-wise if we switched to just using SQL (while still
>providing a text import/export process).
>There are all kinds of things you can say trivially in SQL (say with
>one line of text) that would require a lot of hand-written C or scheme
>to do if we weren't using SQL.
>So if we could make it so that using SQL across the board wasn't too
>bad for the average user (i.e. we make it mostly transparent).  It
>seems likely to me to have non-trivial benefits on gnucash's internal
>complexity and future features.

Please don't take this the wrong way.  As a user, I'm not concerned 
with what it takes to program something.  I certainly appreciate it 
from a programming perspective that there are trade-offs one can make 
to allow the programming to be easier.  But, as a user, I'm not 
concerned about it.

Let me be the user advocate here for a minute.  There are 2 ways to 
write an application.  One is writing it from the perspective of the 
programmer; i.e. write the code in the manner it's easiest to program.
The other is from the perspective of the user.  Write the code so 
that the end application is easiest to use.

My experience has shown me that programmers of applications are 
seldom the users of the same application.  The write the code and 
design the interfaces in the manner that's easiest to code.  When 
using the application themselves, they justify any quirks or awkward 
bits by recognizing that if they had done it any other way, it would 
have taken more time and more code.  Programming this way is almost 
always the wrong way to do things if your end goal is to enamour 
other non-programmers into using your application.

Developing the application from the perspective of the user's 
experience, regardless of how much extra code or effort is almost 
always the "right thing" to do, since this almost always *enhances* 
the user experience.

Now, if the application can be written in such a way to reduce code 
and complexity not only without detracting from the user experience, 
but also by *enhancing*, then go for it.  However, by it's nature, 
the user experience almost always requires extra code and complexity.

My personal feelings here are that the only real arguments for moving 
to an SQL back end are to enhance the programmer's experience, not 
the user's experience.  Performance increases will not be noticed by 
the large majority of users, and I don't really hear anyone 
complaining about performance issues to begin with.  Nor do I hear 
anyone complaining about ridiculously large "core" sizes, or anything 
else.  The only thing I hear people complaining about is the lack of 
certain features.

That tells me that time and effort spent on re-designing the data 
storage back-end are mis-directed, since the customers aren't 
complaining about anything affected by it.  Time and effort would 
therefore be better spent on enhancing the feature set.

Once that's done, debugged, tested, and shipped, if you want to go 
back and tweak things, great.  Just don't let it take away from the 
user's experience.

>I completely agree that having a text export/import format is
>important (and again, I'd propose that we always keep one, and even
>use it for regression tests so we know it still works), and you could
>probably do your editing there, but bear in mind that the SQL you have
>to know to be able to do some of the things you're talking about is
>*really* easy (off the top of my head, and probably a bit wrong):
>  update gnc_transactions
>    set description='foo' where description='bar';
>or similar (of course it wouldn't be quite this easy, but hopefully
>you get the idea).

Though I agree with you wrt the above statement, I ask, how many "average"
users do you know that know any SQL?  They understand "search/
replace" and they know how to fire up a text editor.  They don't know 

I am not an average user, and I know enough SQL to get by.  However, 
I'd still rather use 'sed', 'perl', or emacs/vi than SQL.  It's just 
easier, and it's a lot faster, considering I'd have to search the web 
for an on-line SQL reference everytime I needed to do something 

>> Additionally, I currently have my gnucash file under RCS.  Try 
>> putting an SQL database under RCS.
>Hmm, FWIW I can't recall if we're actually sorting the output.  If
>not, RCS might not be buying you that much (at least storage size
>wise) over just keeping compressed complete copies of the file.

RCS allows me to isolate "sessions" of changes to my data.
I can, at any point in time, check out the data file for a specific 
"revision" and get a snapshot picture of what my finances were like 
at that point.  Additionally, they allow me to log comments in 
association with any given session.  This is immensely useful for 
remembering what it was I was working on last, where I left off, and 
what I have left to do.  AND, it's directly tied to my data, so I 
don't have to worry about keeping a separate log file somewhere.

To me, it buys me a HUGE amount.  But that's me.  I don't care it 
there's not another person in the world who works the way I do, this 
works for me, and GnuCash, in it's current state, allows me to do 
this.  To change to SQL back end would not allow me to do what I'm 
currently doing, and would, really, not be any better for me than 
Quicken, other than it runs on Linux.

But, that's just me.  I really don't expect the architecture designs 
for GnuCash to be made only according to what I want, I'm just 
voicing my opinions in hopes that I'll be heard.  If, ultimately,
things go against my wishes, well, c'est la vie.  But I'd be derelict 
for not at least voicing how I feel :)