Having recently understood the power of Lisp thanks to reading The Nature Of Lisp and then working my way through the early chapters of Practical Common Lisp (by Peter Seibel, also author of the excellent Coders at Work: Reflections on the Craft of Programming), I decided to find out more about GUI tools for Lisp.
A quick Google search brought out the following results:
Cello – the website is “under construction” with a 2004 date at the bottom… not encouraging. The link where “prerelease bundles and screenshots” can be found shows an empty directory. The mailing list for devs is still active but has got a very low activity – only one thread for 2010. So I’m thinking it’s a dead project?
McClim – the most recent release dates back to 2008 and is release 0.9.6 so my guess is either they are working on v1.0 but taking more time than planned, or they have stopped development? The devs mailing list is more active than for Cello so I’m hoping this means the devs haven’t given up. The website offers many screenshots of apps using McClim. While the GUI looks remind me of the early 90s, it does seem that it can do the job for an in-house/very specialist app but not for a “general public” app.
Garnet – the project page on sourceforge shows that most recent commit was in late 2009 and only one bug was submitted in 2010 (which suggests a low usage of the GUI). This tool kit dates back to the 90s and support from Carnegie Mellon University was dropped in 1995. The toolkit is described as “quite complete and mature” and the screenshots confirm a mid-90s GUI look. From the screenshots, it seems that you can develop fairly complex GUI, but it is another one the “general public” would probably consider dated.
cl gtk2 – this is a Common Lisp GUI library based on gtk+. The last release was in December 2009, and the dev mailing list has got a few threads for 2010 but isn’t very active. It seems that the main dev has been focusing on “adding native threads support for SBCL on Windows that are necessary for developing cross-platform GUI applications with SBCL and cl-gtk2″, so cl gtk2 is certainly still an active project, it seems to only be a case that something had to be done elsewhere to then get back to work on cl gtk2. Because it is a binding for gtk+, the look is very modern and would be suitable for general development – however, the library for gtk2 isn’t yet complete, according to the dev, but this is most definitively one to follow.
Cells – a Lisp binding for Gtk+. The last update of this one was in 2007 so no support for modern gtk+ 2.14 and beyond is to be expected, however it does look like a fairly mature library.
Common Qt – as the name suggests, this is a Common Lisp binding for Qt. This is in active development (last commit today actually!). Well worth keeping an eye on.
EQL – another Common Lisp binding for Qt. This one is also in active development (last release in December 2010), with an active user mailing list. Also well worth keeping an eye on.
Unsurprisingly, it seems that the most currently active GUI toolkit projects for Lisp are bindings for Qt, a very potent and versatile GUI library. At this present moment in time, and with the information on Common Qt and EQL, I cannot really work out the differences between them, so I guess the next step is to check them both out.
What is your experience with Lisp GUI libraries? Which one do you use and would you recommend it?