~/.gnucash and XDG default directories

Geert Janssens janssens-geert at telenet.be
Sun Jan 16 12:12:21 EST 2011


Thanks for your feedback.

On Sunday 16 January 2011, Jeff Kletsky wrote:
> In my opinion, adopting a "standard" that
> 
> * goes counter to long-established practice
> 
From what I've read is serves a different target audience. The XDG base 
specification was created to cater for a new breed of users: ordinary desktop 
users that don't know/care about config files or user specific application 
data. As such the intended target applications for this spec are desktop 
applications. I think GnuCash falls into that category. The long-established 
practice still holds as far as I'm concerned for anything more power user 
(things like mutt, lynx, vi, emacs,...).

> * isn't widely accepted
> 
This is mostly a chicken-and-egg problem. Not adopting a new standard because 
it's not widely accepted will never get it widely accepted.

> will cause more problems than it is worth.
> 
> 
> There is a significant documentation change cost for GNUCash.
> 
6 lines in the Help Manual and Concepts Guide combined
7 comment lines in the code
A number of entries in the wiki
What did I miss ?

> 
> There is a significant coding/test cost (either auto-upgrade, or
> checking two locations, and possibly having both present)
> 
There are examples that can be reused. Rhythmbox has implemented a silent 
migration, Comix does a migration after asking the user.
> 
> There is a significant support cost ("Where are the config files? They
> aren't where everything else is.")
> 
Again the chicken and egg issue. As more GUI apps start using the XDG 
standard, the config files will be in the expected location.
> 
> As far as I can tell, there is nothing that I use on FreeBSD that uses
> ~/.local/share (they are very adamant about non-base applications
> installing system-wide data into /usr/local/etc, not letting everything
> throw into crap into /etc) and on Ubuntu, only webkit's icons and
> gvfs-metadata are found there.
> 
As far as I can see, you are mixing things up here. The choice between /etc or 
/usr/local/etc has nothing to do with the user. Both are for system wide 
preferences. Moving from $HOME/.<appname> to .local/share or .config (thanks 
John for pointing that out) is for user specific data generated by the 
application.

I see more and more applications that start to adhere to this specification. 
There is a proposed GnomeGoal as well, though it's not approved yet. 
Considering Gnome is part of the Freedesktop platform (as is KDE and Qt) I 
expect them to come through with the spec at some point.

But I also see this spec stirs up a lot of discussion so probably it's best to 
let the dust settle before we make our final decision. There's no hurry. I 
didn't intend to make these changes before 2.6 anyway.

> 
> On Mac, things generally go into ~/Library/Application Support (though I
> haven't read developer docs for OS X in ages).
> 
I would expect g_get_user_config_dir or g_get_user_data_dir to return that 
path by default, but I'm afraid I don't know how glib on OS X works.

Geert

> Jeff
> 
> On 01/16/2011 07:19 AM, Geert Janssens wrote:
> > Historically, GnuCash has always stored its user specific application
> > data in ~/.gnucash based on old linux (unix ?) conventions.
> > 
> > This didn't work really well on Mac OS X/Quartz, so John has overridden
> > this path on OS X to make more sense there.
> > 
> > Now there's a bugreport that indicates this isn't the best place on
> > Windows either [1].
> > 
> > I could override the path on Windows as well and be done with it, but in
> > my investigation I found that even on linux ~/.<appname>  is no longer
> > the recommended place to store such information.
> > 
> > According to the XDG Base Directory Specification [2] the preferred
> > location is ~/.local/share/<appname>.
> > 
> > The nice thing is, glib has a convenience function g_get_user_config_dir,
> > which by default returns ~/.local/share on linux and the equivalent and
> > proper ~\Application Data (Windows XP) or ~\AppData\Roaming (Windows
> > Vista/7).
> > 
> > I don't know what this routine returns on OS X, but I would expect it to
> > return the proper location for user specific application data there as
> > well. If not that should be reported as a bug againse glib on OS X.
> > 
> > In this light I would like to update the GnuCash code to make use of the
> > g_get_user_data_dir function on all platforms and rename the directory
> > from .gnucash to gnucash. That would give a better experience on all
> > platforms IMO. This is what the directories would become:
> > - Linux: ~/.local/share/gnucash
> > - Windows XP: c:\Documents and Settings\<user>\Application Data\gnucash
> > - Windows Vista/7: c:\Documents and
> > Settings\<user>\AppData\Roaming\gnucash - OS X: ?
> > 
> > I would obviously have to provide some conversion code as well, that
> > would copy the old .gnucash contents to .local/share/gnucash to
> > guarantee continuity for the users.
> > 
> > I also think this change may be better for 2.5/2.6 than 2.4.1.
> > 
> > Does anyone have any objections to this ?
> > 
> > Geert
> > 
> > [1] see https://bugzilla.gnome.org/show_bug.cgi?id=503722
> > [2] see
> > http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
> > _______________________________________________
> > gnucash-devel mailing list
> > gnucash-devel at gnucash.org
> > https://lists.gnucash.org/mailman/listinfo/gnucash-devel



More information about the gnucash-devel mailing list