[asdf-devel] Alternate default lisp system location

Robert P. Goldman rpgoldman at sift.info
Wed Mar 12 13:51:30 UTC 2014

Stelian Ionescu wrote:
> On Thu, 2014-02-27 at 22:30 -0600, Robert P. Goldman wrote:
>> How would you all feel about an alternate default location for lisp
>> systems, in addition to
>> ~/.local/share/common-lisp/source/
>> I'm sure that .local was chosen out of the (in)finite wisdom of XDG, but
>> it just seems odd to me to hide the lisp systems from the user, which we
>> are doing by putting them in a location that requires ls -a.
>> After all, these are systems, not configuration files.
>> What about ~/asdf-systems which doesn't make the poor user play peekaboo?
>> I came across this while editing the manual. I don't use this directory
>> myself; maybe everyone loves it.  Or maybe no one uses the standard
>> default, and I shouldn't care.
> I would ask you not to add any more hard-coded directories to ASDF, and
> remove the already existing ones. If what you want is making life easy
> for newcomers, make an additional tool that initializes a work
> environment with convenient values, but separate the configuration of
> ASDF from the core.
> The only reason why ~/.local/share/common-lisp/source/ hasn't caused
> complaints is because nobody was already using it. In my case, ~/lisp
> has large numbers of duplicate .asd files and other systems I don't want
> to expose so a :tree recursion there would be very annoying. And please
> don't tell me to :ignore-inherited-configuration, for what's the point
> of the default configuration if so many people either don't use it or
> have to explicitly ignore it ?

The problem with not adding hard-coded directories is that configuration
is too demanding of a new user.  I have just overhauled the manual, and
there is WAY too much to have to know in order to just get started.

IMO, no one should have to learn a complex DSL, or how to structure a
conf.d directory in order to write his or her first lisp system.
Compare with 'make' -- since make doesn't have to find its systems, it's
trivial to build a makefile for your first C program.  That is not the
case with ASDF -- you can write your first .asd file, but ASDF won't
find it!

Since ASDF *does* have to find the user's first ASDF file, we must make
that trivial to do.

I'm open to proposals that don't involve a default directory, but I'm
not happy with the current state of affairs.

The thought experiment I suggest is the following:  You meet a new Lisp
user, who wants to write his or her first lisp system.  It's so simple
it doesn't have any external dependencies.  How do you explain ASDF
configuration so that it gets the system loaded, and is absolutely trivial?

I don't want to make an additional tool, since that requires somehow
getting all the implementations to bundle said additional tool, and
because (a) we don't have a good way to make such a tool invocable from
the command line; (b) if we could do a, it would still be a problem to
get it to work on Windows as well as the Unix family tree; (c) anything
to do with modifying the file system is a bear because of the
inadequacies of the CL spec in this area.

But I could be wrong about this! Do you see a way such a tool could
simplify the novice's life and be implementable w/o too much effort?


More information about the asdf-devel mailing list