Budgets and inconsistent handling of account sign reversal.
gnucash at allycomm.com
Mon Feb 22 17:00:25 EST 2010
On 2/22/2010 1:16 PM, Derek Atkins wrote:
> Geert Janssens<janssens-geert at telenet.be> writes:
> Note that schema updates don't depend on string freeze. HOWEVER you
> need to consider forwards and backwards compatibility issues. For
> example, we want files written by 2.4.x to be readable by e.g. 2.2.9.
I agree with that, and that the reports and UI should still function in
a "reasonable" way if you do downgrade. I've been thinking through some
ways of accomplishing this.
The addition of a way of denoting the "default budget" should be
Changing the internal storage of budgets seems like it might be best
left alone (save for copious documentation of the data-model
inconsistency), but the accessors (and associated UI and reports) be
modified for consistency with the rest of the app. 3rd-party reports and
extensions written for pre-2.4.x versions would work fine in pre-2.4.x
environments, but would likely need to be modified to respect the user's
UI-level sign-reversal preferences.
(As a side note, it becomes "rather challenging" to maintain backwards
compatibility when the backend is a database, especially if any columns
change or are deleted.)
How far back should I be confirming compatibility? 2.2.9? 2.2.0? Before?
Is there supposed to be guaranteed backward compatibility for anything
but the XML backend?
Does the XML backend "gracefully ignore" tags that it doesn't
understand? For example, if a "default budget" field is added to the
book, is it "skipped over" on read if there isn't a corresponding data
field for its contents to populate?
Can I assume that "backwards compatibility" allows for data that was
created in a later version, that did not exist in an earlier version,
not to "magically" be preserved if the user then moves forward in
version? For example, if 2.4.x adds "default budget" then the saves as
XML, opens in 2.2.9 (where the field does not exist), saves from 2.2.9,
then opens in 2.4.x, then the value of "default budget" would likely be
More information about the gnucash-devel