User and system config files

Derek Atkins warlord at MIT.EDU
Fri Jan 20 11:41:27 EST 2006


Chris Shoemaker <c.shoemaker at cox.net> writes:

> I had been ignoring that warning for quite a long time now, but after
> seeing the backtrace in the logs, it's quite obvious what's causing
> them.  gnc:config-file-format-version doesn't exist anymore.  That
> raises an interesting point...

Hmm, I wonder when that went away?

> These days, I'm especially mindful of forward and backward
> compatibility concerns.  I think we need to think carefully about what
> expectations our users might have about the compatibility of their
> config files.  By allowing the user to supply a guile file to be
> loaded at startup, we're giving them enormous flexibility to change
> the behavior of gnucash.  But, we're also exposing an _enormous_
> public interface -- essentially every guile function and gwrapped
> function or datatype -- an interface that I don't think is so ready to
> be cast in concrete.

I think it's okay -- other applications that expose such a large
interface (e.g. emacs) change that interface over time.  In our case,
the g-wrap functions HAVE been relatively stable.  Also, gnucash never
makes any guarantees about the stability of APIs across "major"
releases (where "major" really means "minor" in the sense that 1.6 ->
1.8 was considered a "major" release).

> I think we have several options.  The simplest is to simple warn users
> that custom guile scripts they write could be broken by even minor
> releases.  Another option is to be more rigid about what data we load
>>From guile config files.  We don't _have_ to execute the user's
> program -- we could just pull out certain config values.  I'm sure
> there are more options.

I think your first option is fine..  We already break configuration
across releases.  For example, changing the name of a report (which
happened with a LOT of reports in SVN vs. 1.8) breaks existing
configurations...  This happened from 1.6 -> 1.8 too.  So, I think
there's precedent for "ignoring" certainly configuration state across
an update.

User-defined scripts IMHO fall under that umbrella.

> What I want to avoid is the sense that we can't change any g-wrapped
> function or guile function just because we're potentially executing
> user scripts that may use any of those.  It's something to think
> about.

*shrugs* I don't think there's ever been any sense that those APIs are
set in stone.  I think we're safe.  If it makes you feel better we can
better document that there are no guarantees on the stability of APIs.

> -chris

-derek

-- 
       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available


More information about the gnucash-devel mailing list