Every time I approach sbcl I run smack into the problem of installing dependencies. Quicklisp, clpm, roswell, ultralisp, qlot. Docker even. Each cool sounding project wants me to do something different. This one prefers ultralisp. Do CL users actually use libraries from multiple sources at the same time. Do all these tools play nicely with each other?
Ultralisp is Quicklisp but with frequently updating dists rather than monthly dist releases. Its popular is due to the fact Quicklisp, in comparison, takes lots of time for submitting and updating libraries.
CLPM is an interesting project but not used very often since projects rarely version anything in the CL ecosystem (not even branch tags anymore). Personally, I have never seen a library that suggests CLPM for installation.
Roswell is a CLI tool that manages Common Lisp installations, with Quicklisp set up automatically.
Never heard of Qlot or Docker being used.
My biggest gripe is the fact Quicklisp is widely used and no notion of version dependencies exist (not even lockfiles exist). So Common Lisp code with tons of Quicklisp dependencies tends to rot really fast. e.g. it's practically impossible today to build projects like https://github.com/akamai/cl-http2-protocol
> Never heard of Qlot
> no notion of version dependencies exist (not even lockfiles exist
I think that’s the point of Qlot
Lisp users generally treat libraries the same way C people do and vendor anything that's truly important. There's ocicl if you want something more scalable.
https://github.com/ocicl/ocicl
(Lisp users are generally very anachronistic people who don't understand dependency management nor know how to resolve diamond dependency issues, ocicl is one of the better approaches along with CLPM but they both get a lot of pushback from the community which "don't see a need".
Thanks! Actually vendoring it in sounds pretty reasonable for my purposes, which are basically “mess around with this thing somebody posted to HN.”
I think the median user starts with quicklisp and then clones random stuff into the ~/quicklisp/local-projects/ dir where they are automatically visible.
Cloning into ~/common-lisp/ also works great.
This is what I do.
Well yeah, there's pain aplenty in the CL ecosystem but that's how it is. I'm still on quicklisp, but eyeing a better solution too (qlot or maybe ocicl, though I don't like the Entreprise^tm whiff and having to download a fat Go binary not packaged anywhere to do anything).
For those of us who dreamed of a SCSH for CL