Can I set CL_SOURCE_REGISTRY to a value that deactivates all "default" paths? Then I don't care what the default is...
Pascal
Sent from my iPad
On 12 Mar 2014, at 22:14, Faré fahree@gmail.com wrote:
: 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 3.0.2.9), 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?