[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Our needs for a defsystem

Hello everybody,

I would like to begin a discussion about what we need as a defsystem for
MCL (I don't want to discuss about common lisp in general).

The best defsystem available for MCL is the Cartier's defunit (I think).

But there is some points that could be changed:

The defunit is based on a fixed hierarchy where unit definition are located
in two single folders. If you wan't to be able to upgrade from one version
of cartier's contribs to another, you have to maintain two separate folders
(one for cartier stuff, the other for yours). You also have to link your units
with the cartier's folder (by way of aliases for example).

So, installing a new unit requires a bunch of file/alias manipulations. It
is even worse when you try to upgrade as you have to verify that the
aliases points to the correct folder.

What we would like is a "plug and play" approach. We have tested it and it
is really cool but takes more time.

The idea is the following:

We all have a working folder were we put (with the hierarchy we want) our
projects and modules.

The idea is that anywhere in this folder, one can find some unit definitions. 

When trying to load an unit, the system searches for a definitition file
named unit-name.defu anywhere in your working folder.

The working folder can be placed anywhere on your disk. It's location is
recorded in a pref file. If the system is not able to find the defined
folder a new one will be asked.

The advantages are:

When you receive a new unit you can just drop it in your working folder and
play with it (as even the unit declaration can use the
*loading-file-source-file* parameter). This is especially usefull when you
receive a lot of versions of units (when developping with other persons,
when trying new pieces of code).

The problem is:

Looking for files ending with .defu in the working folder can take a
relatively long time (especially when you have to reflect a change in the
hierarchy since the loading of lisp).

Another point: 

When defining an unit, you would like to be able to add extra files that
will specialize the behaviour of your units. So, we propose to add a new
keyword to the unit definition in order to specify an "extensions" folder.
All files in this folder will be loaded (no matter in which order) in order
to extend the behaviour of the unit.

Advantages this allows you to suppress or add extension files without
changing your unit definition. This can be very usefull during the
developement process.

If you have any reaction, please, do not hesitate...


 Il ne suffit pas d'etre heureux. Encore faut-il que
 les autres soient malheureux.          P. Desproges
-----  Gilles.Serasset@imag.fr (Gilles Serasset)  ----