A GUI toolkit for Common Lisp


Current roadmap

This roadmap is only a sketch. If you have any suggestions or questions, please share them either on #clim @ libera.chat or on the mcclim-devel mailing list.

Short term goals

  • Fix the issues from the tracker

  • Improve current CLX backend (visually and internally)

  • Provide more learning material for the new users

  • Revise the manual draft and the documentation

  • Identify which features from the "traditional" GUI libraries McCLIM users miss and implement them as an extension

  • Check feasibility of implementing asynchronous usage from the outside of event and command loops (for instance from the Slime REPL)

Long term goals (may change)

  • Create a frame manager implementing the material design guidelines

  • Write a reference guide for creating new backends (necessary to achieve native look and feel or to utilize some platform-specific gains)

  • Create a portable Common Lisp IDE

  • Finish the manual

How to contribute

McCLIM project is hosted on Codeberg repository and cooperation is very similar to other open source projects hosted there. The canonical address is:

  1. Submitting an issue (or feature request) on the issue tracker
  2. Forking the repository (aka creating a remote branch)
  3. Solving a problem or implementing new feature
  4. Issuing pull request to the main repository

For some time, certain issues on the tracker were associated with bounties which could be claimed by resolving the respective issues. Unfortunately, the platform used for managing bounties (bountysource) became untrustworthy and a replacement not yet been found. As a consequence, the bounty program is currently suspended.

While we have no written code standards, contributors have to follow the conventions adopted by the Common Lisp community and the style used in the repository. Some common sense is necessary.

Frequently asked questions

How can I support the McCLIM development?

Use McCLIM to write applications, report issues and suggest improvements. Helping other users to overcome problems with developing CLIM applications and writing about McCLIM on the web will help growing the community and increase the awareness about the project.

Another possibility is to fix issues and improve the implementation by writing the code. We encourage you to join #clim @ libera.chat IRC channel to hang out with other developers and users, but it's not obligatory.

The bounty program is suspended.

Is McCLIM the only graphical toolkit for Common Lisp?

No, there are various other options. Here are some highlights:

Native solutions

  • CLIM2 - alternative implementation of the CLIM II specification created by Franz Inc. for Allegro CL (it was recently opensourced and there is an effort to port it to other implementations)

  • CLIM – another alternative CLIM II implementation for LispWorks. It is proprietary and "provided primarily to support legacy applications"

  • Common Graphics – proprietary GUI toolkit for Allegro CL

  • CAPI – proprietary GUI toolkit for LispWorks

FFI bindings

Web applications

Can McCLIM and CLIM2 implementations join efforts?

We have checked that possibility when CLIM2 was opensourced. It happens that McCLIM and CLIM2 differ too much to reuse the code. On the other hand, any application written for CLIM II (specification) should work on both and this is a big win.

Does McCLIM work on Windows? What about Linux, Unix and OSX?

Right now the only backend supported by McCLIM is CLX, which ties it to the Xserver on the host system. Any platform capable of running Xserver may run McCLIM applications. That said, writing a more portable backend is one of our goals.

I want to write a backend – where should I start?

Unfortunately we don't have an official backend-writing guide yet. Our main focus at the moment is targeted at improving the current reference backend CLX, although some information is provided in the issue #64 on Codeberg.

I need commercial support – who should I contact?

The best place to look is writing to our mailing list mcclim-devel@common-lisp.net to which you may subscribe here.