plugins (was: r20616-20630 (GncOwner)
christian at cstimming.de
Sun May 15 15:04:42 EDT 2011
Am Sonntag, 15. Mai 2011 schrieb John Ralls:
> The steps I have in mind are:
> 1. Get complete test coverage for QOF, Engine, Business Core, and Backend
> 2. Rewrite those libraries into a single, coherent class system (we'll
> discuss which one when the test-writing gets close to being done) 3.
> Refactor as necessary to get a good class hierarchy that reflects our
> acccounting model. This is the hard part, because we very likely keep
> different models in our heads, and we're going to have to work out how to
> express those models to each other and work out a common model that we all
> agree on, then document it so that we can refer to it as we refactor the
Sounds very good. I'm all in :-)
> I'm not at all sure that the plugin architecture gets us anything in return
> for the added complexity, though. AFAIK there aren't any plugins. The
> various libraries in Gnucash proper that are dloaded instead of being
> dynamically linked sure doesn't get us anything except longer load times
> and missed optimization opportunities.
Are you asking whether gnucash should contain any of its functions as plugin
vs. no plugins at all? I agree (and I have stated before) that most of the
loadable modules of gnucash shouldn't be modules, but should instead belong
into one big binary and that's it. I have stated a similar goal for the
However, after thinking about this again, one particular use case for plugins
is still around: Unusual dependencies from code parts that are interesting
only to a subset of the users. Specifically, the aqbanking code part is
interesting only to a small subset of users, and it requires a whole lot of
other dependencies (aqbanking, gwenhywfar and various sub-libraries of those).
Having gnucash's aqbanking module still around as a loadable module means the
packaging can more this into a separate package, so that users who don't want
the online banking features also don't need its dependencies.
Again, I'm all in for throwing out most of the current loadable modules. But
in some use cases they are still useful.
More information about the gnucash-devel