Maybe they should be highlighted in the Quicklisp package list?
I'll mention in passing another solution I've found to the dearth of libraries in CL: run CPython via pipes. Then I can call any Python library I want. I used it for GUIs, downloading stuff from the web, and for doing plots with Scipy/matplotlib. It works great, though obviously has some "bandwidth" limitations.
Everything on that page is in Quicklisp except Maxima.
edit: It's also not a great list - I'd add a few dozen things to it. I'd like to have a nice way to rate & review projects in Quicklisp, but that's something for the future.
That's pretty accurate. I'm still a dumb noob about programming generally but I've been using and lurking in #lisp and the "community at large" for ~2 years now.
The best thing to do for new users is probably to show up on #lisp and solicit recommended libraries for X, I'm afraid. Or google and read extensively, selecting for newer information where possible.
The plan is to have a web directory for projects included in quicklisp that besides showing the metadata and project info (which projects depend on what etc.) also includes something like user feedback and reviews.
The Cliki recommended libraries list is a really good idea (I dusted it off and put it on the Cliki front page because of things I read here on HN), but you get flamed for editing it because there's no attribution, Lisp weenies don't like subjective opinions, and I'm guessing certain people get miffed that not everyone loves their library. But please don't let that stop you from using and contributing to the Cliki recommended libraries list in the meantime!
Well, the two prominent web frameworks are Weblocks and UCW but their documentation is...wanting. I'm working on a Weblocks tutorial right now but I gave a bit of a survey of the CL web landscape recently: http://redlinernotes.com/blog/?p=1232
Damn shameless self promoters. Anyway, seeing as UCW and Weblocks aren't well documented a lot of people just grab Postmodern or CL-SQL for DB stuff (there are some NoSQL solutions around if that's your fancy), then CL-Who or HTML-Template and Hunchentoot (web server) for the rest.
All the above libraries are easily installable via quicklisp. God bless Xach. And Amazon AWS. :)
I would also recommend not bothering with the frameworks. Get Hunchentoot and Postmodern and you're ready to go. I've even stopped bothering with CL-WHO, I now use CL-INTERPOL for HTML templating (cl-closure-template seems to do fancy stuff, too). If you're lazy like me use BKNR-datastore instead of Postmodern and you won't even have to bother configuring a database. Other stuff you'll probably need: cl-fad (file/directory manipulation), cl-ppcre (regular expressions), ironclad (hash digests), cl-smtp (sending the huge cash-money invoices to your eager users). Eventually you will become too lazy to write JavaScript by hand, in that case grab Parenscript. All of this is available via quicklisp, it really makes things easy.
BKNR-datastore seems really nice but I haven't gotten a chance to play with it yet. Do you know if it supports concurrent writes yet? I know it didn't circa 2008 or so...
Yeah, there's a global lock for transactions. I'm not sure it's such a big loss considering you still need a lock on the log file. Adding MVCC or per-object locks would mean rewriting most of BKNR, changing major parts of how it works, and a hugely more complicated implementation. And those things have a lot of their own overhead too. OTOH then you can just throw the objects into an mmapped file, put a REPL on a socket and bingo you have a multi-user networked ACID object database. But then you might as well just use Postgresql and Postmodern.
I don't know if you've ever installed the full Kloudshare, but Will wrote the first Hold backed by bknr.datastore, so you've probably used it.
Quicklisp does some stuff that CPAN does (like make a bunch of libraries fairly easy to install), but CPAN does a ton of things that Quicklisp doesn't do, and that might be difficult to do for Lisp libraries (e.g. because there isn't a POD equivalent in the CL world).
Well, yes, I understood that immediately - but the basic functionality of CPAN for me, the reason I stuck to Perl in the first place and stayed there, was the ability to search CPAN, find a module that does more or less what I want, and load it, no worries. That seems to do this for LISP.
Now, if you wanted to provide all the rest of CPAN for LISP, that would be really cool. Automated testing across platforms, some kind of standardized documentation of projects so you know what each one is (even without POD, surely something could be done - doesn't LISP at least have docstrings or something?), a search facility, etc.
That would be fun. If you want a volunteer who's not guaranteed to finish real soon but who has a clear vision of what could be done, feel free to email.
asdf doesn't install from the internet. asdf-install does that, but not very well, it just knows about tarballs linked to from cliki.
Quicklisp uses asdf underneath, but instead of crossing fingers and hoping things work, it's aggressively tested across Lisp implementation, OSes and platform permutations. Stuff reported to work with Quicklisp, should work flawlessly. It also knows about far more sources than just cliki, it uses code repositories too, for latest updates. It caches packages remotely (aws, which Xach pays for) in case the main site is down, etc.
Join Xach et al, in #quicklisp on Freenode.
I hope other Lisps get to appropriate it as well, just as in SLIME. QuickLisp is solar panels for Lisp, no need to include batteries.
"QuickLisp is solar panels for Lisp, no need to include batteries."
Awesome slogan. I hope Quicklisp appropriates it.
This is exactly what Common Lisp has most needed for a long time now, and may have kept me in the Common Lisp camp longer if it existed a few years ago.
It's approximately a package manager, in the non-Lisp sense of the word "package". If you carry out that analogy a little further, ASDF is like "make" and Quicklisp is like "apt-get".
Part of the reason I had a hard time taking CL seriously when I tried it back in 05 was that it didn't have this, so it's good to see people respond to that need, albeit astonishingly late. I've since moved on to Clojure but wish you luck.
I go back to CL each year. Last couple of times I checked I wasn't able to get linedit working under my sbcl via a chain of simple asdf-installs, so CL went into my private oblivion.
Great idea with some QA done to the released programs !! CL always seemed like the people involved hated the phrase "release management". Now there's some light at the end of the tunnel..
I got it to work via asdf-install, but I had to cheat a little to do it: I removed linedit's version check that was not present in the dependent package (I think osicat).
As much as I appreciate Common Lisp, I'm always puzzled at how a language reputedly targeting AI problems still lacks an "intelligent" package manager the kind Perl has always had. To me, that says a lot about the failure of AI.
I think it probably says more about the motivation, need, and the size of the respective communities. CPAN has been a great success and example, but I don't think that has had anything to do with AI.
I should have explained further: when I say "that says a lot about the failure of AI", I mean that from a language whose target is AI, you would expect some kick-ass solutions to common issues. Common Lisp is good to solve hard problems, but then - after more than 50 years - you have to fight to install a library, when "lesser" languages make it a breeze. With direct words: I think AI failed because it tackled hard problems instead of everyday ones.
I know - I read the article (and I am very fond of package management).
It's just the name. I know it would be absurd for Microsoft to a) resurrect the brand and b) do a Lisp implementation, but, still, in some part of my brain, it did bring back memories.
I think the right analogy would be to Python's "pip" utility.
http://www.cliki.net/Current%20recommended%20libraries
Maybe they should be highlighted in the Quicklisp package list?
I'll mention in passing another solution I've found to the dearth of libraries in CL: run CPython via pipes. Then I can call any Python library I want. I used it for GUIs, downloading stuff from the web, and for doing plots with Scipy/matplotlib. It works great, though obviously has some "bandwidth" limitations.