Packages can use other packages and export their own symbols for others to use. But this is for when packages are already loaded into a Lisp image. An ASDF system is a body of related code, possibly broken up into N packages. It specifies which other systems it depends on. ASDF always loads those into Lisp before loading the system itself. The system's code will then find its dependencies present in the Lisp image. To work, ASDF needs a central registry of directories containing system defs. What about when systems live on the Internet, not in local directories? Quicklisp knows the URLs. It downloads them so ASDF can find them locally. A quicklisp project may contain a number of ASDF systems. When you depend on a system, quicklisp downloads the project containing it.