Those XML changes sound like the wrong direction. XML code needs to stay in 
libgnucash/backend, not get mixed in with engine/QOF, especially since the 
long-range plan is to turn XML into a backup format with SQL being the primary 
storage and data access mechanism.

I understand the reluctance to cause a regression, but no matter how you go 
about it you're going to be writing new code. Unlike a C -> C++ conversion you 
can't do a function at a time with Scheme -> C++, nor can you use the same 
tests for both the old and new code. If you wire into the existing C import 
code you'll at least avoid creating bugs in those parts of the process.

Regards,
John Ralls




> On Feb 4, 2024, at 16:50, Brian Rater <blrn...@gmail.com> wrote:
> 
> Great.  Thank you for the insights.  Before I got overwhelmed with work and 
> other commitments last year, I was experimenting with a set of base classes 
> that would replace the lower level qof infrastructure.  As part of that, I 
> was also looking at an alternative xml concept where xml provided some 
> fundamental utilities, but each class such as book and transaction would use 
> those to read and write themselves.  This keeps the data structures contained 
> in the class itself rather than xml w needing to know about engine class data 
> structures.  That effort did not progress far enough to bring up for 
> discussion here or do a development branch pr, however.
> 
> I’m comfortable with redesigning and rearchitecting, but I am planning to go 
> cautiously with import/QIF as it sounds like a lot people use that and the 
> format is not well defined.  I don’t want to introduce new bugs.
> 
> On Sun, Feb 4, 2024 at 6:50 PM John Ralls <jra...@ceridwen.us 
> <mailto:jra...@ceridwen.us>> wrote:
>> 
>> 
>> > On Feb 4, 2024, at 12:11 PM, Brian Rater <blrn...@gmail.com 
>> > <mailto:blrn...@gmail.com>> wrote:
>> > 
>> > I've been looking at the import code and documentation and I'm wondering
>> > what the overall plan and path is.  It looks like there is a "generic"
>> > implementation in the top level directory which has utilities that are
>> > being converted to C++.  I can see the importers making some calls into
>> > this.  What is the plan and where are we at?
>> > 
>> > In particular, what needs to happen with QIF, which is still written in
>> > guile?
>> > 
>> > I'm asking because I'm looking for a task to work on.  My particular
>> > passion is writing C++ classes to replace legacy code along with adding
>> > tests and documentation.  I've been reading over the source code and
>> > following the development list for several months, but I've had limited
>> > bandwidth until recently to make contributions.
>> > 
>> > I've been looking at converting Import/QIF to C++ because it is written in
>> > guile (higher priority than converting the C code in my opinion), is fairly
>> > self contained, and the only alternative guile conversion code is reports,
>> > which is way too large in scope for where I am.  Converting QIF has
>> > drawbacks such as needing extensive testing, and having limited existing
>> > tests for regression testing, however.
>> > 
>> > My current thought is to directly translate the existing algorithms and not
>> > use the generic import to minimize introducing bugs, but others have
>> > probably put more thought into how to handle this.
>> > 
>> > So I'm looking for some direction either on what the end goal is and how to
>> > achieve it, or direction to leave QIF alone for now and work on some other
>> > area of the codebase (suggestions welcome).
>> > 
>> 
>> Hi Brian,
>> 
>> Welcome to GnuCash.
>> 
>> Rewriting the QIF importer to C++ is a reasonable task if that's what 
>> motivates you. It's not on the roadmap in more than the most generic "get 
>> rid of Guile" sense, but it does seem like a good project to take on. It's 
>> as good a legacy conversion project as any at this point. The rest are kind 
>> of blocked by the XML->in-memory SQL DB so that we can lose QOFQuery and 
>> stop creating huge linked lists of every object in the book. That's 
>> design-and-implement rather than rewrite an existing design so maybe not 
>> something you'd be passionate about.
>> 
>> IMO it would be better to rewrite the QIF parser and transaction creator 
>> into C++ and then wire it in to the "generic" infrastructure so that it 
>> presents the same user experience as other imports. 
>> I'm not sure how well that fits with your passion either, but I'm also not 
>> convinced that it makes sense to reimplement functional algorithms as OO 
>> classes. I reimplemented the Scheme report options system into C++ a couple 
>> of years ago and it turned out to be a largely start-from-scratch redesign.
>> 
>> Regards,
>> John Ralls
>> 

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to