hY,

I would like to propose a kind of an enhancement to the ASDF functionalities.

So there is a problem with package nicknames that they have to be unique. So using the :nicknames option in a package definition can cause "uncorrectable" collisions. On the other hand, by not doing so, one has to use fully qualified package names (eg. :com.gigamonkeys.macro-utilities) during library development which makes the code completely unreadable (in my opinion at least).

So there would be a possibility in asdf to at least partially handle this problem. It would be nice to define temporary nicknames for the compilation time. At the moment, it is possible by the :perform asdf option. So one can place and remove the nicknames by :perform (compile-op :before ...) and :perform (compile-op :after) options. Often it would be desirable, to do so for every asdf compilation unit, but there is no easy way to do so yet.

Note: one has to define the nickname operators for every compilation unit in which it is used, otherwise the exclusive recompilation of this unit will produce an error (which would make development difficult).
The other problem with this approach is when a compilation fails, the nicknames won't be cleared. However it is not a big problem for a development process, and otherwise it should not happen.

Defining the :perform options for each asdf unit, is pretty ugly. So it is nice to have a script at least which walks over all compilation units and sets the perform options.
But there would be a nicer way, and this is the proposal. What about a new asdf option (eg :compile-with-nicknames), which could look like something this?

(defsystem my-system
  :depends-on ("package-1" "package-2" "package-3" ...)
  :compile-with-nicknames (("package-1" "pckg-1")
                           ("package-3" "pckg-3"))
  :components (...))

I think this approach nicely works in a "clear" environment for non-parallel compilation when there are no insane nickname requests.
The "clear" environment assumption can be relaxed to say that the user hasn't defined any nicknames which causes collisions for any necessary compilations.

Or if you know a better way to handle this problem, I would be happy to hear about that...

Thanks,
`bg`