The role of McCLIM in Gracle

What is CLIM

CLIM is the Common Lisp Interface Manager. It is a publicly available specification that defines a large collection of protocols that are useful for writing code to interact with the user in many different ways.

Several commercial Lisp vendors have proprietary implementations of CLIM, though none of them encourage the use of it anymore, and maintain it for legacy code only. This is no doubt part of their commercial strategy to make users depend on their particular implementation as opposed to making it easier for them to move between different ones, but it is also too bad, because users would be much better of with a standard for interactions with the user.

What is McCLIM

McCLIM is the freely distributable implementation of CLIM. It is already used in several projects such as Climacs/Drei, Gsharp, and more.

CLIM/McCLIM and Gracle

We view CLIM/McCLIM as a key component of Gracle. Through the use of CLIM presentations, different CLIM-based applications can potentially communicate with one another. This feature makes it fairly easy for (say) a documentation browser to emit a presentation for a Lisp symbol that can then be clicked upon to obtain the definition of the corresponding function, the documentation string, or the section in the HyperSpec that defines the symbol.

CLIM/McCLIM has an the additional advantage that Lisp applications that use GUIs or other complex interaction methods with the user, can be written so as to be useful immediately, without the rest of Gracle existing.

Improvements to McCLIM

While McCLIM is pretty good already, it has numerous flaws and quirks that need to be taken care of. This is not the right place to make a complete list of these problems, and we refer to the McCLIM project page instead. Since McCLIM is a key component of Gracle, working on improving it is quite important, and we encourage anyone with time, energy, and the required knowledge to participate.

Improvements to CLIM

CLIM is a very ambitious specification, and in many ways a great piece of work. Unfortunately, it too contains many flaws in the form of contradictions, ambiguities, and even gaping holes. We would like to improve that situation.

The simplest way to do that is to add annotations to the specification through the use of the interface on the specification web site. Whenever you come across something that needs a better explanation, or when you detect a contradiction, don't hesitate adding an annotation.

At some point, we would like to take all the annotations and all the additions that were made by Franz in the form of CLIM 2.2, and turn them into a specification that has fewer bugs in it, and call it (say) CLIM 2.3. We would also like a more convenient way of browsing the CLIM specification than the web site, perhaps in a form acceptable to the documentation browser.