[asdf-devel] Alternate default lisp system location

Faré fahree at gmail.com
Wed Mar 12 21:14:40 UTC 2014

>>>: Faré
>>: p-cos
>: rpgoldman

>> asdf is not a tool for beginners. Beginners will either deal with a bare Common Lisp implementation, or they want to experiment with third-party libraries, in which case they want to use quicklisp these days. Once you need to define your own systems, you're not a beginner anymore, and a good tutorial helps a lot more than any supporting wheels can. It's already hard enough to ensure that asdf doesn't accidentally find systems you don't want it to find, you shouldn't make it even harder.
>> On top of that, with the proposed scheme, you will create a situation where there are not only two "default" locations for user-defined systems, but three when quicklisp is active. I find it hard to imagine that beginners will find this easy to grasp.
ASDF is a tool for everyone, beginners and experts alike, at least
since ASDF2. The ability to just work out of the box yet be
configurable by program > user > system, was a strong requirement for
ASDF2, and I believe we have been by and large successful at it,
despite the complexity (only to be seen by experts).

Yes, you can define your own systems without having to learn all the
details of ASDF — or you should be able to. A better default location
for code than ~/.local/share/common-lisp/ makes total sense, and I am
100% behind Robert on that. I only apologize for not making it happen
as early as ASDF2.

>>> I believe that ~/common-lisp/ is the Right Thing™ at this point.
>> Are you saying that I just got lucky because I happen to be subscribed to this mailing list, but it's ok if other people have to suffer?
> No, I am saying that you correctly pointed out that we should avoid a
> pathname that people are likely already to be using.
On the other hand, anyone who already has his system configured in any
way will have ASDF find his systems where he already configured it,
and the defaults only apply for systems not already configured.

The only time a new default will cause a system you don't want to
shadow a system you want is if you rely on earlier, lower priority
defaults: if Pascal expects some system loaded from
/usr/share/common-lisp/source/ but has an outdated copy in ~/lisp/old/
then he's in trouble. Otherwise, not.

Note that some of the XDG default paths were broken from 2.27 to 3.0.2
included (see commit 285a61e before, so effective changes in
the defaults have happened in the past, and not anyone noticed except
a few unhappy Debian users (my apologies to them).

I still believe that ~/common-lisp/ is a much better choice than
~/asdf-local-projects/ or anything.

>> For the records, I don't like any of the suggested "default" paths.
You don't have to like them. You're a big boy, you can easily override
them. You can even use :ignore-inherited-configuration.

>> Just make this a configuration option. For example, an environment variable, or so, then everybody can choose their own preferred name.
>> export ASDF_DEFAULT_PATH=~/common-lisp
You can already do that:
export CL_SOURCE_REGISTRY=~/common-lisp//

The question is about what defaults should be, for beginners.

>> ...and please make this empty by default, so it doesn't mess up anything unless I ask it to do so...
> I'm sorry, but that is not on the table.
> We are looking for a solution that will work without any active
> configuration by the user, beyond "put your system definition here, and
> you don't have to do anything."
I totally agree with Robert.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Ever wonder why the SAME PEOPLE make up ALL the conspiracy theories?

More information about the asdf-devel mailing list