Daniel Kochmański [1] has been continually improving the features and performance of this very advanced library. Kudos to him, because it’s a lot of thankless dirty work dealing with the intricacies of X and the CLIM standard [2], and his work is hitherto relatively unappreciated.
CLIM is such an interesting and different GUI paradigm, and when the implementation works it’s both a joy and a mind-bending experience. (CLIM has been implemented and re-implemented commercially and in open-source many times over in the past 30 years, but the OS’s keep changing!)
In one of my first jobs I wrote a little SQL database editor with LispWorks CLIM, and it was really nice to have “object presentations”. The non-technical staff of the company could easily edit complex data/objects in this database without knowing anything about what it was behind the scenes, and it didn’t take all that much programming to make it possible.
Hey, I'm currently maintaining McCLIM. Cool to see in on the front page of Hacker News :-). I'm occasionally dropping screenshots of current things I'm working on, i.e this ad-hoc animation:
I'm happy to see that McCLIM is still alive! I hacked on it during my teenage years (I wrote Drei and a few other things), although I eventually lost motivation due to the sheer vastness of how much work there was to do.
Out of curiosity, how does McCLIM adapt to new trends such as Wayland and HiDPI displays?
Regarding HiDPI there are some ideas, but right now they are not implemented (see i.e https://github.com/McCLIM/McCLIM/issues/827). I'm writing a vt100 terminal backend to reveal some underlying assumptions about the pixel size.
Thank you for working on McCLIM back then! If you feel motivated to join development efforts please don't hesitate joining #clim @ freenode :)
Currently it requires X11 server running, please see https://github.com/McCLIM/McCLIM/wiki/Backends; as of fontconfig, since the next release we are going to use cl-dejavu to not depend on hardcoded paths. Before that you should put dejavu ttf files in C:/Windows/Fonts.
How would you recommend getting started with this on a modern Ubuntu or similar Linux system? I'm not a stranger to Common Lisp, but it's been about 8 years since I last did anything with it. Back then I used GNU Emacs and SLIME.
In a typically niche fashion, the "Guided Tour" has an abstract and no pictures. What screenshots exist are divorced from code samples.
So there is a conundrum here for the passing coder - this toolkit comes from the lisp tradition so it is probably completely serious when it says it is a powerful toolkit for writing GUIs. But it appears to require a serious investment of time to figure out why that is or how it might compare to a webpage of Javascript.
Does this toolkit have killer features that are being poorly articulated, or are the advantages from lots of smaller good ideas?
The toolkit is based on presentations which provide a direct representation of underlying objects. That (I think) is the most distinctive feature of CLIM-like systems (compared to other toolkits). That said, maybe we should remove the link to Guided Tour from the about page, because the manual is much more comprehensive. The specification is very well written, but it is rather hard to grok as a learning material.
I'm doing some McCLIM hacking this week. It's fun. So far it Just Works.
I'm writing code to draw PCB designs for fabrication. Just getting started and highly speculative. I've been bouncing between various programming languages and graphics toolkits now at the beginning of the project and so far Lisp/CLIM feels the most productive.
The reason why I never tried CLIM was that it hides deep in the specs what kind of host functionality is exposed and what isn't. I don't even know whether I can display a context menu with a right-mouse click, or whether the mouse-wheel is supported, let alone things like drag&drop, etc.
It would be nice to see a list of what it can do and what it can't do, so people can choose it for the right purpose.
All things that you have mentioned are supported. That said, I'm working on a guide for writing backends, while it won't directly address this kind of questions, it should give at least some picture of features used by project.
Many features are illustrated in a the system clim-examples.
I really enjoyed the concepts in CLIM back when I programmed in CL. These days I can't even imagine using CLOS and relying on mutable state in objects. I'd much rather have my UI be a function of data, which is why I enjoy using React (with ClojureScript and the Rum library). But there are many ideas in CLIM that are worth at least learning and thinking about (for example, Presentation Types and presentations in general).
There is a pair of videos by Jan Moringen on the Online Lisp Meeting playlist - one is about an inspector written in CLIM, and the other uses CLIM for helping with presenting an extensible Lisp reader.
I’m hesitant to ask, because perhaps it’s my own Linux box or display driver or something... Why does McCLIM seem to flicker a lot while moving the mouse over things?
Lack of double buffering, actually that one will be merged next week. I gather that you move your pointer over an image or another complex record that gets highlighted (by drawing a rectangle around it).
The question makes sense and the answer is no, McCLIM may work on wayland display server only via XWayland (there is currently no explicit Wayland backend).
CLIM is such an interesting and different GUI paradigm, and when the implementation works it’s both a joy and a mind-bending experience. (CLIM has been implemented and re-implemented commercially and in open-source many times over in the past 30 years, but the OS’s keep changing!)
In one of my first jobs I wrote a little SQL database editor with LispWorks CLIM, and it was really nice to have “object presentations”. The non-technical staff of the company could easily edit complex data/objects in this database without knowing anything about what it was behind the scenes, and it didn’t take all that much programming to make it possible.
[1] http://turtleware.eu/turtleware.html
[2] http://bauhh.dyndns.org:8000/clim-spec/index.html