A GUI toolkit for Common Lisp


Development

Current roadmap

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

Short term goals

  • Fix the issues from the tracker

  • Improve current CLX backend (visually and internally)

  • Replace clim-mop with closer-mop portability layer

  • Identify utilities used in all util.lisp files and if applicable replace them with the counterparts from the alexandria library

  • 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 new reference backend on top of the frame buffer (providing glue code for particular platforms will be easy)

  • The new reference backend should follow 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 GitHub 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

Some issues on the tracker may have assigned bounties to them. This means, that a person who successfully solves the problem (and this solution is accepted by merging it to the master branch in the main repository and closing the corresponding issue) may claim the bounty on the bountysource platform.

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 IRC channel to hang out with other developers and users, but it's not obligatory.

Finally you may contribute money to the project on our crowdfunding platform. This money helps us to fund some basic maintenance, development and bounties.

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 GitHub.

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.