Should GnuCash use an external QOF library?

Chris Shoemaker c.shoemaker at cox.net
Wed Jan 11 15:02:04 EST 2006


On Wed, Jan 11, 2006 at 06:43:36PM +0000, Neil Williams wrote:
> On Wednesday 11 January 2006 4:23 pm, you wrote:
> >         Should GnuCash use an external QOF library?
> 
> At a packaging level:
> Wherever QOF is available, yes.
> Wherever QOF can be made available, also yes.
> 
> At development level, I'm reasonably happy with a copy of QOF copied into 
> gnucash prior to a QOF release.

I'm not too happy with large chunks of unrelated QOF development being
committed at one shot.  I suppose more frequent syncs would diminish
this problem.  OTOH, I could try to follow the SF CVS commits, but
they don't seem to be very incremental either.

[snip]
> Using QOF externally in development isn't the issue, anyway. Just coordinate 
> with me when you work in lib/libqof.

What _exactly_ does this mean?  I'm reading this as "email me your
patch and wait for an acknowledgement before committing."  Am I close?

> What I ask is:
> 1. Coordinate with me before committing changes to lib/libqof - unless the 
> 	changes are a CRITICAL bug. Even then, let me know *urgently*.
> 2. Always keep in mind that there is as much of QOF outside gnucash as there
> 	ever could be inside and don't make changes that are gnucash-specific.
> 	(i.e. do not use gnucash defined macros or build structures.) This is
> 	imperative in an embedded environment.
> 3. Listen in on QOF-devel just to get notice of latest developments and 
> 	releases.
> 4. Do nothing to increase or modify the existing dependencies of QOF.
> 
> >         I think the disadvantages of Gnucash using external libqof are
> 
> inconsequential at a packaging level.
> 
> > overwhelming, but let's at least ask what are the advantages?  Well, a
> > user who used external libqof for both gnucash and gnotime would save
> > a few kb disk-space.
> 
> QOF is going to be updated far more regularly than gnucash, that's beneficial.

Can you release a libqof _every_ time an API change is made and
increment the corresponding Gnucash "requires qof > x.y.z"?

> > In *theory*, an external libqof would be 
> > maintained by non-gnucash developers, gaining labor efficiency.  But,
> > in practice, allowing external libqof means gnucash-developers have to
> > become libqof developers, with additional overhead labor and _reduced_
> > efficiency.
> 
> ? Nobody from here has to join me in QOF development, I don't see the problem 
> or any additional overhead.

See above.  Your "coordinate with me" sounds pretty much like
additional overhead.

> No gnucash developer needs to be diverted or become a libqof developer. I'll 
> do all that - as long as the gnucash developers respect the division.
> 
> >         1) Continue libqof development in gnucash svn, build and
> > release external stand-alone libraries from this source, even though
> > GnuCash won't use them externally.
> 
> Impossible. libqof cannot be developed in gnucash svn. It has outgrown gnucash 
> and is going into places that gnucash simply cannot follow. Completely 
> inappropriate.

This is hard to believe.  If external QOF builds and it can be synced
to lib/libqof and built for internal purposes, how can libqof not be
built and developed from lib/libqof?

> It's hardly suprising that I've still got some cashutil code outside gnucash 
> svn. I may yet take cashutil to a separate repository - especially as nobody 
> here appears to have even looked at the branch.
> 
> >         2) Fork the code from the gnucash qof, develop and release it
> > independently from Gnucash.
> 
> It is already developed and released independently from gnucash. I don't see 
> the need or benefit for a clean fork, it's just wasting even more effort.

Ok, so you've already forked then.  Please don't complain that people
aren't keeping the code you forked from compatible with your fork.

> Is it really that hard for a free software community to actually SHARE?
> 
> I'm willing to keep gnucash updated with the latest QOF code but I will not 
> make duplicate commits for every single change. Neither can I use gnucash svn 
> for QOF development, it flies in the face of everything I want to do in QOF. 

Huh?  What does it matter where the code is stored?  What can you do
in SF CVS that you can't do in Gnucash SVN?

> The best I can do is update lib/libqof prior to each QOF release.
> 
> > One implication of this is that merges 
> > into gnucash svn's qof should STILL be incremental and reviewable NOT
> > huge "sync with external QOF version blah".  That really bothers me.
> 
> I'm not going to start committing the same change to two trees every time! 
> That's a complete non-starter. No matter how much it may bother you, it ain't 
> going to happen!
> 
> >         In any case, just to make things clear: I'm advocating
> > disabling the option to build Gnucash with external QOF. 
> 
> Absolutely bonkers.

No.  It's not.  Look.  Today's Gnucash from svn WILL NOT WORK with the
most recently released libqof.  What are the options?

  1) Disable --with-qof so no one tries and fails.

  2) Leave it broken.

  3) Release a new QOF ASAP.  Tell people not to use --with-qof until
the new version comes out.

  4) Just tell people to never use --with-qof.

  5) Revert /lib/libqof back to the state after your 0.6.1 release,
along with GnuCash changed that depend on those qof changes.  Stop
development in /lib/libqof and any avoid any improvements to gnucash
that would require changes to /lib/libqof.

You tell me which of those is most bonkers.

> Do you want me to provide a patch that re-enables it for sensible packaging?
> 
> I only ever build gnucash with internal QOF prior to a QOF release.
> 
> > The only 
> > reasonable alternative is to stop development in /lib/libqof when
> > external QOF does a release.  I'm strongly against that alternative.
> 
> There IS NO development in lib/libqof (that's why it's no longer under src/).

Do you realize how that assertion is ...

> 
> QOF development happens at SF, it is discussed via QOF-devel and released 
> early and often. 
> 
> What happens in gnucash svn merely supports the SF development.

... completely incompatible with this one?


-chris


More information about the gnucash-devel mailing list