~/.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