Design Decisions

BenoitGrégoire bock at step.polymtl.ca
Tue Aug 19 16:21:49 CDT 2003


On Tuesday 19 August 2003 14:54, you wrote:
> On Tue, 2003-08-19 at 16:54, Benoit Grégoire wrote:
> > Yes, but they sure as hell didn't start over.
>
> Redesigning and rewriting is not 'starting over'.  It's identifying the
> parts you want to keep, the parts you want to improve, and the parts
> that need either rewriting or scrapping altogether.
>
> Perhaps I should say 'ruthless evolution' is a more accurate term.

In that case we are in agreement, except I guess for the ruthlessness of the 
thing.  I wouldn't want us to revisit the QIF importer fiasco.  (Written once 
with a poor design, Started over with everyone's encouragement and  taken to 
95% completion, said to be much better.  Developper leaves, no one really 
understand replacement code, so code is never deployed.  Now first codebase 
still (reluctantly) maintained while third implementation in progress.

Basically before scraping code, we need to make sure that:
-The ramification of scraping it are well understood.
-We can replace it fully in a timely manner.

Otherwise, if it ain't broke, fix something that is...

> I read the "state of the gnucash project" page before I posted that
> email.  There was very little specific content on prospective
> development of the codebase other than 'we have problems', import/export
> and it's not clear how much of a priority the Gnome2 port is.
>
> None of that addresses the problem of attracting developers.
>
> > Yes, stop discuraging developers who want alternate bindings.  See the
> > link.
> >
> > Also, to my knowledge, the perl swig bindings predate scheme in gnucash,
> > were implemented by (or at least with support form) the core developers
> > and have bitroted from non-use.  But we do hope someone will revive them
> > and apparently it wouldn't be hard.  They are also mentioned in the link.
>
> The link only mentions they have bitrotted.  There is no mention of what
> should be done about it.
>
> Let me be more specific.
>
> At the moment, you have:
>
> GnuCash core <> Scheme (Guile)
>              <> SWIG
>
> I'm saying (unless my understanding of the core/scheme relationship is
> utterly incorrect) it should be:
>
> GnuCash core <> SWIG <> Scheme (Guile)
>                         Any other language
>
> That's not much more work (other than getting the SWIG bindings up to
> date).
>
> You'd only be maintaining 1 interface, only it would be GCcore <> SWIG
> rather than GCcore <> Scheme.  Scheme is still supported fully, just
> through SWIG rather than directly.  There's very little extra work
> required, yet you're satisfying your major detractors and supplying a
> Perl/Python/Ruby interface.
>
> Have I gotten this massively wrong?

Yes and no.  I think you slightly misunderstood the focus of that first 
article.  The article focused on our current problems,  and was mostly meant 
as a reflection piece to reach a common understanding of our problems.  
Specific projects to address them will be the focus of the second article, 
that is delayed because I am still drowning in emails from the first.  The 
article didn't talk about the gnome port because apart from the fact that 
it's a huge undertaking, it's still a part of the project that goes well.

As for SWIG, the thing is that the scheme "interface" is pervasive and mostly 
focussed on internal needs.  It covers areas that we would not really want to 
expose to the world, such as internal GUI data.

Now if we can use swig to generate our bindings to to the engine at runtime in 
multiple languages, it would be REALLY cool! 
-- 
Benoit Grégoire
http://step.polymtl.ca/~bock/



More information about the gnucash-devel mailing list