> On Aug 24, 2017, at 8:57 AM, Geert Janssens <geert.gnuc...@kobaltwit.be> 
> wrote:
> 
> On woensdag 23 augustus 2017 23:21:23 CEST John Ralls wrote:
>> A new default should apply only to new installations and should be
>> overridden by $GNC_DOT_DIR and $AQBANKING_HOME; we should continue to
>> include ~/.gnucash and ~/.aqbanking in the default search and use the first
>> instance of the config file we find.
>> 
> While that is conservative and safe, it would also require us to support the 
> outdated directories forever and by extension make our code more complicated 
> for that same period. So I'm not in favor of this strategy.
> 
> And I'm not the only one. I have come across several applications in my long 
> use of linux that have chosen not to do that either. Two come to mind 
> immediately: libreoffice has changed user data directories with every major 
> release for as long as I have used it. It has always copied the old one and 
> didn't even bother telling the user about this. KMail did a similar migration 
> twice, and informed the me about it on each occasion.
> 
> So I think to point of view to take here is gnucash 2.8 is a new application 
> that knows how to import settings from an older application (which happens to 
> be gnucash 2.6 or older). At some point in the future nobody will still be 
> using the old application at which point the user can decide to drop the 
> configuration that old app used (I think nobody does that in real life 
> though).
> 
> I agree an override option should exist indeed. Not in the least because 
> you're using it on OS X :)
> 
> On the other hand I think GNC_DOT_DIR is tied way too much to the old 
> directory format and I prefer to change it to GNC_DATA_HOME (as GNC_HOME is 
> already in use to point at the base installation directory).
> 
>> The XDG environment variables are appropriate in the Gnome and KDE desktop
>> environments on Linux and pretty much nowhere else. Perhaps the best
>> approach would be to set reasonable defaults per OS and allow them to be
>> overridden with a CMake variable and configure argument.
>> 
> The per OS defaults are a good suggestion. On linux and compatible that is 
> XDG_DATA_HOME/Gnucash, on Windows CSIDL_APPDATA\Gnucash. I'm only missing 
> this 
> on OS X. Is there a function in the Quarz framework that would return ~/
> Library/Application Support/ so a similar default path can be created ? I'd 
> want the defaults to be such that no environment variable should be set to 
> get 
> them.
> 
> About the override in Cmake or configure, I doubt that makes much sense. 
> These 
> directories have no use during build, only at runtime*. And at runtime they 
> can be overridden by GNC_DATA_HOME and AQBANKING_HOME.
> 
> Geert
> 
> * Strictly speaking I should say "should have no use during build". 
> Unfortunately compiling the guile sources will cause the user_data_dir 
> functions to be run. It's guile's way of evaluating whether dynamically 
> loaded 
> modules won't call other guile sources that need to be compiled :(
> I'm still evaluating whether this is bad for my new code or not.

Re backwards compat, OK, I guess. Moving the default for GnuCash isn't really 
the issue, it's AQBanking. Unless we convince Martin to go along we're either 
going to have a hack like linking or to support ~/.aqbanking forever. 

Re GNC_DOT_DIR on Mac: But if GnuCash sets the default data directory to 
~/Library/Application Support then I won't need the environment variable 
override.

The reason for providing a CMake/configure override is because people build 
GnuCash on platforms besides the 3 we overtly support including the various 
BSDs, True64, and Solaris. There was even somebody running it on OpenVMS a few 
years ago, but we haven't heard from him in a long time. I think some of the 
BSDs distribute GnuCash  binaries, and it would be courteous to provide those 
packagers with a convenient way to set up GnuCash for whatever their defaults 
are. 

We'll also need a fallback on Linux if XDG_DATA_HOME isn't defined or GnuCash 
will barf because it can't create /gnucash.

The Cocoa key for ~/Library/Application Support is 
NSFileManager::NSApplicationSupportDirectory. There's example code at 
https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/ManagingFIlesandDirectories/ManagingFIlesandDirectories.html
 
<https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/ManagingFIlesandDirectories/ManagingFIlesandDirectories.html>.

Regards,
John Ralls


_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to