While ASDF, defsystem, etc. are very good for conditionally loading
code as you need it, I find that the way I work with Lisp is to write
low level libraries, keep them in my working Lisp image, then as I
work my way up to higher level libraries, also add those into my
image. (I used to have a Xerox Lisp Machine, and I got used to having
all my *stuff* (and utilities written by other people) immediately
available when I start up my Lisp environment; usually LispWorks, but
sometimes OpenMLC, SBCL, or CLisp.)
Anyway, maybe I am missing something from going about configuration
too simply, but I like to have each module, with all data files (if
any) that are needed at runtime in a directory with a 'load.lisp' file
that assumes that my Common Lisp's curent directory is that directory.
I handle dependencies by having one high level "image creation" load
file that uses a pattern like:
(print "Loading XML tools, XML-RPC, etc.")
(change-directory "/work/Lisp_stuff/xml-rpc")
(load "lisp.lisp")
(print "FastTag")
(change-directory "/work/Lisp_stuff/FastTag")
(load "lisp")
...
(change-directory "/work/Lisp_stuff")
#+lispworks
;; save image in LispWorks, and exit lisp....
#+openmcl
;; save image in OpenMCL, and exit lisp....
In my simple scheme, the load.lisp file creates any required packages,
exports what is needed, etc.
--
Anyway, the reason that I am being honest about using such a lazy and
simple approach for organizing code and periodically loading the
latest versions of everything into my working Lisp image is this:
I think that it would be great if authors of useful Lisp packages
always included a simple portable "load.lisp" type file in addition to
supporting ASDF, defsystem, etc.