Lisp HUG Maillist Archive

ASDF configuration and cache

Dear Lisp-HUGgers,

I'm desperating looking for Lisp users using Windows who may or may
not care where ASDF puts its configuration files and cache — because
I'm considering moving where that may be. So far, I haven't found
anyone who really cares, which encourages me to think I can do as I
please.

Right now, ASDF tries to do things kind-of-the-windows-way, where
"common-lisp/" replaces the vendor/app/ path component. Thus, it puts
its configuration in %LOCALAPPDATA%/common-lisp/config/ its cache in
%LOCALAPPDATA%/common-lisp/cache/ and for source code in
%LOCALAPPDATA%/common-lisp/source/

I'm considering dropping the Windows special-casing, and offering the
XDG model on all platforms, including Windows. That would mean the
configuration would instead go in
%LOCALAPPDATA%/Configuration/common-lisp/ and the cache in
%LOCALAPPDATA%/Cache/common-lisp/ while source code remains in
%LOCALAPPDATA%/common-lisp/source/ with these the conceptual mapping
XDG_CONFIG_HOME=%LOCALAPPDATA%/Configuration instead of ~/.config/ and
XDG_DATA_HOME=%LOCALAPPDATA%/ instead of ~/.local/share/ and
XDG_CACHE_HOME=%LOCALAPPDATA%/Cache/ instead of ~/.cache/

The advantage of the change would be that ASDF would offer to Lisp
programs a uniform XDG view on all platforms, which has some costs in
terms of being slightly unfamiliar to Windows users and a transition
issue for some of them, but going forward allows for:
* the same directory concepts on all platforms.
* the ability to handle backup of configuration and skipping of backup
of cache in a simpler way than with the usual Windows semi-convention.
* a more uniform API for the Lisp programmer
* slightly simpler code for the ASDF maintainers.

What do you think? Does anyone care at all? Does anyone actually have
a common-lisp/config/source-registry.conf file and be confused if the
location changes?

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
The problem with being a citizen of the world is
that you don't get to travelling abroad much.

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: ASDF configuration and cache

So basically you get 3 directory entries in %LOCALAPPDATA% instead of 1 ?

I don't know if I care that much : I rarely visit this %LOCALAPPDATA% directory,
but I have never understood this need to spread the files from a single vendor/app 
into several different directories.

FWIW:

T:\>dir %LOCALAPPDATA%\common-lisp\
 Le volume dans le lecteur C n’a pas de nom.
 Le numéro de série du volume est 70D1-7749

 Répertoire de C:\Users\Fabrice\AppData\Local\common-lisp

27/10/2014  23:59    <DIR>          .
27/10/2014  23:59    <DIR>          ...
24/04/2015  15:36    <DIR>          cache

And an excerpt of this directory :

T:\>dir %LOCALAPPDATA%
 Le volume dans le lecteur C n’a pas de nom..
 Le numéro de série du volume est 70D1-7749

 Répertoire de C:\Users\Fabrice\AppData\Local

27/04/2015  13:05    <DIR>          .
27/04/2015  13:05    <DIR>          ..
02/11/2014  11:34    <DIR>          Adobe
24/10/2014  19:01    <DIR>          assembly
26/10/2014  01:43    <DIR>          calibre-cache
27/10/2014  23:59    <DIR>          common-lisp
28/12/2014  17:56    <DIR>          ContinuumIO
23/03/2015  10:07    <DIR>          ExpressVPN
23/10/2014  22:18    <DIR>          fontconfig
11/11/2014  13:16    <DIR>          Google
28/01/2015  11:55    <DIR>          Greenshot
11/03/2015  09:42    <DIR>          IsolatedStorage
12/03/2015  14:45    <DIR>          Microsoft
15/03/2015  22:46    <DIR>          Microsoft Help
25/10/2014  09:47    <DIR>          Microsoft_Corporation
30/11/2014  17:34    <DIR>          MusicBrainz
11/03/2015  09:16    <DIR>          NuGet
23/10/2014  15:55    <DIR>          NVIDIA
28/12/2014  17:48    <DIR>          pycuda
05/11/2014  15:38    <DIR>          Quantisle
27/11/2014  14:15    <DIR>          Skype
28/04/2015  12:00    <DIR>          Temp
27/01/2015  22:32    <DIR>          Theano
06/02/2015  11:47    <DIR>          VirtualStore

Fabrice

2015-04-28 11:13 GMT+02:00 Faré <fahree@gmail.com>:
Dear Lisp-HUGgers,

I'm desperating looking for Lisp users using Windows who may or may
not care where ASDF puts its configuration files and cache — because
I'm considering moving where that may be. So far, I haven't found
anyone who really cares, which encourages me to think I can do as I
please.

Right now, ASDF tries to do things kind-of-the-windows-way, where
"common-lisp/" replaces the vendor/app/ path component. Thus, it puts
its configuration in %LOCALAPPDATA%/common-lisp/config/ its cache in
%LOCALAPPDATA%/common-lisp/cache/ and for source code in
%LOCALAPPDATA%/common-lisp/source/

I'm considering dropping the Windows special-casing, and offering the
XDG model on all platforms, including Windows. That would mean the
configuration would instead go in
%LOCALAPPDATA%/Configuration/common-lisp/ and the cache in
%LOCALAPPDATA%/Cache/common-lisp/ while source code remains in
%LOCALAPPDATA%/common-lisp/source/ with these the conceptual mapping
XDG_CONFIG_HOME=%LOCALAPPDATA%/Configuration instead of ~/.config/ and
XDG_DATA_HOME=%LOCALAPPDATA%/ instead of ~/.local/share/ and
XDG_CACHE_HOME=%LOCALAPPDATA%/Cache/ instead of ~/.cache/

The advantage of the change would be that ASDF would offer to Lisp
programs a uniform XDG view on all platforms, which has some costs in
terms of being slightly unfamiliar to Windows users and a transition
issue for some of them, but going forward allows for:
* the same directory concepts on all platforms.
* the ability to handle backup of configuration and skipping of backup
of cache in a simpler way than with the usual Windows semi-convention.
* a more uniform API for the Lisp programmer
* slightly simpler code for the ASDF maintainers.

What do you think? Does anyone care at all? Does anyone actually have
a common-lisp/config/source-registry.conf file and be confused if the
location changes?

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
The problem with being a citizen of the world is
that you don't get to travelling abroad much.

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html




--
Fabrice Popineau
-----------------------------
SUPELEC
Département Informatique
3, rue Joliot Curie
91192 Gif/Yvette Cedex
Tel direct : +33 (0) 169851950
Standard : +33 (0) 169851212
------------------------------

Re: ASDF configuration and cache

2015-04-28 10:13 GMT+01:00 Faré:
>
> I'm desperating looking for Lisp users using Windows who may or may
> not care where ASDF puts its configuration files and cache — because
> I'm considering moving where that may be. So far, I haven't found
> anyone who really cares, which encourages me to think I can do as I
> please.

First of all, I don't really care, these are my 2 cents.

> I'm considering dropping the Windows special-casing, and offering the
> XDG model on all platforms, including Windows.

Why?  Seriously, XDG/freedesktop.org is a BSD/Linux/Unix thing, where
and how does that fit in the Windows world?  And if it does, it should
be freedesktop.org defining where and how the user directories work in
Windows (if they care at all).

> The advantage of the change would be that ASDF would offer to Lisp
> programs a uniform XDG view on all platforms, which has some costs in
> terms of being slightly unfamiliar to Windows users and a transition
> issue for some of them, but going forward allows for:
> * the same directory concepts on all platforms.

Who cares?  The only thing you can really take untouched between
platforms is the source anyway.

You'll most likely have platform-specific configuration files even if
you kind-of follow XDG in Windows.

> * the ability to handle backup of configuration and skipping of backup
> of cache in a simpler way than with the usual Windows semi-convention.

Well, here are my 2 cents.

In Windows, you should store the configuration file in a roaming
directory, e.g. %APPDATA%.  I don't know what led to the current state
of ASDF, but it's strange that you have to copy configuration over if
you log on to a different machine.

The cache is perfectly fine in %LOCALAPPDATA%.  This is a compilation
optimization, it would actually hurt if it were included in the
roaming profile, potentially delaying all logs off and the first log
on in a given machine.

The source is mostly an internet resource, much like a browser's
cache, so I guess it's OK in %LOCALAPPDATA%.  The same space and
performance reasoning that I applied to the cache, I apply to the
source.

So, from my point of view, following the XDG or leaving things as they
are is equally bad for the Windows convention (it's actually
documented, so no semi- prefix).

If you're changing things, I'd prefer to have the configuration file
in a roaming directory using Windows conventions, and leave all else
as-is.

> * a more uniform API for the Lisp programmer

When is this ever visible to the programmer?  If there is an API, why
is it that the paths make it less uniform?  Shouldn't the API abstract
these details from the programmer no matter the differences or
complexity?

> * slightly simpler code for the ASDF maintainers.

Ok, "slighty simpler" doesn't cut it for me.  I consider this a change
just because so.

> What do you think? Does anyone care at all? Does anyone actually have
> a common-lisp/config/source-registry.conf file and be confused if the
> location changes?

Again, I don't care, as I tend to ignore where ASDF stores things, or
I manually fetch (mostly with version control tools) the required
projects into a sub-directory of a Lisp project, or a common directory
for a set of projects, to guarantee stability (but unfortunately, I do
it each time less, and I haven't done it for quite a while...).

This is my way of quickly packaging a project from one
platform/machine to another.  It usually works.

Actually, this is what I'd like the most: that ASDF would use local
directories for source and cache by default, like e.g. .NET's nuget.
And possibly merge a local config file with the user config file,
where the local settings override the user settings.  And possibly
have a machine-wide config file.

PS: Ok, I don't know how much of this ASDF has or not, and it's kind
of unreasonable to keep discussing new features in this thread, so you
may just ignore the previous paragraph.

Best regards,

Paulo Madeira

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: ASDF configuration and cache

Dear Paulo,

thanks a lot for your feedback.

I suppose the most significant bit is:
DOES ANY WINDOWS USER HERE HAVE A source-registry.conf ?

If not, then there will be no negative impact to the proposed change.
If yes, then I'd like to interact with you.


> Why?  Seriously, XDG/freedesktop.org is a BSD/Linux/Unix thing, where
> and how does that fit in the Windows world?  And if it does, it should
> be freedesktop.org defining where and how the user directories work in
> Windows (if they care at all).
>
That's a great suggestion. I'll ask on the freedesktop list, if they care.

>> The advantage of the change would be that ASDF would offer to Lisp
>> programs a uniform XDG view on all platforms, which has some costs in
>> terms of being slightly unfamiliar to Windows users and a transition
>> issue for some of them, but going forward allows for:
>> * the same directory concepts on all platforms.
>
> Who cares?  The only thing you can really take untouched between
> platforms is the source anyway.
>
> You'll most likely have platform-specific configuration files even if
> you kind-of follow XDG in Windows.
>
The people who care are those who are going to have a non-standard
configuration. And those people who could have had a standard
configuration if we do things right who won't.

But really, I don't expect a big impact from moving the cache, but I
do expect an annoyance for moving the configuration files. If anyone
is using them, they may have a bad surprise when they stop working.
Note that I'm not moving the source code itself.


>> * the ability to handle backup of configuration and skipping of backup
>> of cache in a simpler way than with the usual Windows semi-convention.
>
> Well, here are my 2 cents.
>
> In Windows, you should store the configuration file in a roaming
> directory, e.g. %APPDATA%.  I don't know what led to the current state
> of ASDF, but it's strange that you have to copy configuration over if
> you log on to a different machine.
>
> The cache is perfectly fine in %LOCALAPPDATA%.  This is a compilation
> optimization, it would actually hurt if it were included in the
> roaming profile, potentially delaying all logs off and the first log
> on in a given machine.
>
> The source is mostly an internet resource, much like a browser's
> cache, so I guess it's OK in %LOCALAPPDATA%.  The same space and
> performance reasoning that I applied to the cache, I apply to the
> source.
>
Here's the thing: the only thing that the configuration configures, so
far, is those things that you agree with me fit in %LOCALAPPDATA%.
Then moving it to a roaming %APPDATA% will only possibly result but on
discrepancies, when one machine goes looking for source code that is
only present on the other. That is why I decided to have the
configuration files in %LOCALAPPDATA% rather than %APPDATA%.


> So, from my point of view, following the XDG or leaving things as they
> are is equally bad for the Windows convention (it's actually
> documented, so no semi- prefix).
>
I'll also mention that when I started using the ~/.cache/ convention,
the XDG spec was nowhere popular on Unix. Ten years later, it's
omnipresent and has been adopted by the big and small players alike. I
don't despair that if Windows still exists in ten years, its
convention will have evolved the right way.

> If you're changing things, I'd prefer to have the configuration file
> in a roaming directory using Windows conventions, and leave all else
> as-is.
>
Even if what it configures is the stuff that remains local?

>> * a more uniform API for the Lisp programmer
>
> When is this ever visible to the programmer?  If there is an API, why
> is it that the paths make it less uniform?  Shouldn't the API abstract
> these details from the programmer no matter the differences or
> complexity?
>
That's a good point. By making the API slightly more complex, and
adding a level of indirection (naming the app and the file under the
app's config separately), we can abstract over those details. But the
lack of uniformity is hard to manage by tools not privy to the
internals of each and every application, even less so since the number
of levels of subdirectories is not uniform. For many apps it's 2
(vendor/appname), for some it's only 1 ("common-lisp", and many older
apps), for some it might be three or more (what with sub-applications
and profiles). So you can never trust where the Cache/ is, or that it
will be named Cache/, or that what's in the Cache/ can indeed be
skipped from backups. The XDG spec makes these things more reliable in
the long run if people follow them. Windows is in the disarray that
Unix was 12 years ago pre-XDG; Unix graduated out of it (somewhat); so
could Windows. Since we are going to be somewhat incompatible with
Windows conventions anyway, we might as well make that the opportunity
for being incompatible in a GOOD way.

>> * slightly simpler code for the ASDF maintainers.
>
> Ok, "slighty simpler" doesn't cut it for me.  I consider this a change
> just because so.
>
It means that application programmers can request for a place to store
a configuration file on the machine, and be handed a sensible
pathname, whichever system the user is using.


>> What do you think? Does anyone care at all? Does anyone actually have
>> a common-lisp/config/source-registry.conf file and be confused if the
>> location changes?
>
> Again, I don't care, as I tend to ignore where ASDF stores things, or
> I manually fetch (mostly with version control tools) the required
> projects into a sub-directory of a Lisp project, or a common directory
> for a set of projects, to guarantee stability (but unfortunately, I do
> it each time less, and I haven't done it for quite a while...).
>
How/where do you configure ASDF?

> This is my way of quickly packaging a project from one
> platform/machine to another.  It usually works.
>
> Actually, this is what I'd like the most: that ASDF would use local
> directories for source and cache by default, like e.g. .NET's nuget.
> And possibly merge a local config file with the user config file,
> where the local settings override the user settings.  And possibly
> have a machine-wide config file.
>
That's what I'm aiming for, too. I'm consulting LOCALAPPDATA before
APPDATA, and I am considering adding PROGRAMDATA to the mix. LispWorks
6's get-folder-path doesn't provide access to :programdata, which
stopped me in the past, but since I use getenv on other
implementations anyway, I might use it on LispWorks, too.

> PS: Ok, I don't know how much of this ASDF has or not, and it's kind
> of unreasonable to keep discussing new features in this thread, so you
> may just ignore the previous paragraph.
>
That's all very reasonable things to discuss. Thanks a whole lot!

PS: can an administrator please unsubscribe tayloj@cs.rpi.edu ? Every
mail sent to the list results in the sender getting notification about
this address being not valid anymore.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Procrastination is great. It gives me a lot more time
to do things that I'm never going to do.

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


RE: ASDF configuration and cache

Hi Fare'

I would only suggest that I be allowed to put any files anywhere that I want to. It is MY machine, so I should be able to control what goes where. Logging the positioning of them should be picked up by the install process.  I will admit that I am enough of a paranoid type guy that there are some applications/programs that I do not have on my desktop because they force the positioning of files. Granted, windows is the worst of the bunch, but I have worked around my major issue with them - making everything go onto the "C" drive. Since programs may be used by others on the machine, besides me, I do not use the $user files at all, but place them out on the D, or E, or?? Drive. I put the user differences into the appropriate user file located within the specific program's directory structure.

Peace,
Mike G. 


>  


_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: ASDF configuration and cache

On Tue, Apr 28, 2015 at 2:29 PM, Mike <azmikeg@gmail.com> wrote:
> Hi Fare'
>
> I would only suggest that I be allowed to put any files anywhere that I want to. It is MY machine, so I should be able to control what goes where. Logging the positioning of them should be picked up by the install process.  I will admit that I am enough of a paranoid type guy that there are some applications/programs that I do not have on my desktop because they force the positioning of files. Granted, windows is the worst of the bunch, but I have worked around my major issue with them - making everything go onto the "C" drive. Since programs may be used by others on the machine, besides me, I do not use the $user files at all, but place them out on the D, or E, or?? Drive. I put the user differences into the appropriate user file located within the specific program's directory structure.
>
That's actually one of the features of XDG: by exporting e.g.
XDG_CONFIG_HOME, you can specify where the configuration files go,
that may decide where other files go, or use XDG_DATA_HOME to
determine it, etc.

Currently, without XDG, and since ASDF has no portable way of querying
the Windows registry, configuration files have to be in your
%LOCALAPPDATA% (which I suppose is somewhat configurable for power
users).

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Your conscience never stops you from doing anything.  It just stops you
from enjoying it.

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Re: ASDF configuration and cache

On Tue, Apr 28, 2015 at 4:36 PM, Mike <azmikeg@gmail.com> wrote:
>
>>
>> On Tue, Apr 28, 2015 at 2:29 PM, Mike <azmikeg@gmail.com> wrote:
>> > Hi Fare'
>> >
>> > I would only suggest that I be allowed to put any files anywhere that I want to. It
>> is MY machine, so I should be able to control what goes where. Logging the
>> positioning of them should be picked up by the install process.  I will admit that I
>> am enough of a paranoid type guy that there are some applications/programs that I
>> do not have on my desktop because they force the positioning of files. Granted,
>> windows is the worst of the bunch, but I have worked around my major issue with
>> them - making everything go onto the "C" drive. Since programs may be used by
>> others on the machine, besides me, I do not use the $user files at all, but place
>> them out on the D, or E, or?? Drive. I put the user differences into the appropriate
>> user file located within the specific program's directory structure.
>> >
>> That's actually one of the features of XDG: by exporting e.g.
>> XDG_CONFIG_HOME, you can specify where the configuration files go, that may
>> decide where other files go, or use XDG_DATA_HOME to determine it, etc.
>>
>> Currently, without XDG, and since ASDF has no portable way of querying the
>> Windows registry, configuration files have to be in your %LOCALAPPDATA%
>> (which I suppose is somewhat configurable for power users).
>
> ++++This is where the installation script / program could ask the user where they want to put things and where things are.
>
It's ASDF. A basic library. There is no such thing as an "installation
script / program".

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Whatever says the law, it is only ever forbidden but to get caught. — Faré

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html


Updated at: 2020-12-10 08:33 UTC