conduit-packages provides some enhancements to Common Lisp's package system. It allows the creation of extended packages that may dynamically share symbols with other packages, thus extending them. The extended packages are called "conduits", since they serve as conduits for other packages.

An example would be:

(defpackage :implementation-package-1 (:export ...)) (defpackage :implementation-package-2 (:export ...)) (defpackage :package-to-use (:use) (:extends :implementation-package-1 :implementation-package-2))

User code can now simply use the package-to-use package and it will get all the exports of all the implementation packages.

You can also create packages which extend other packages excepting a few symbols, so you can create, for instance, custom CL-like packages, such as subsets, or CL-with-a-few-things-done-differently. You can also `clone' packages—create another package which shares all (external and internal) symbols with an existing package.

This language extension was developed by Tim Bradshaw. It works with Allegro CL, LispWorks, CLISP, CMUCL and Symbolics Genera.