I am currently trying to wrap my head around packages, systems & co.

I now have read [Packages, systems, modules, libraries - WTF?](http://weitz.de/packages.html) a few times, and I think I'm still having difficulties to get it right.

If I simply want to split a Lisp source file into two files, where one shall "use" the other - how do I do that? Do I need to build a system for this? Should I use a module? …? I'm coming from a Node.js background, and there you can simply say

```
var foo = require('./foo');

```

to get a reference to what's exported in file `foo.js`. What is the closest equivalent to this in Lisp?

I understand that [ASDF](http://www.cliki.net/asdf) is for systems, and that it is bundled as part of [Quicklisp](https://www.quicklisp.org/beta/), at least according to its documentation:

> 
> ASDF comes bundled with all recent releases of active Common Lisp implementations as well as with quicklisp […]
> 
> 
> 

Okay, Quicklisp is for libraries, but what is their relationship? Is Quicklisp something such as a "package manager" in other languages? And if so, then what exactly does ASDF provide?

Sorry for these many questions, but I think it just shows the trouble I have to understand how to structure Lisp applications. Any help would be greatly appreciated :-)