Commit 5147cee4 authored by Daniel Kochmański's avatar Daniel Kochmański
Browse files

Add development section

parent 5b6331a4
......@@ -25,7 +25,8 @@
:sitenav ((:url "1.html" :name "News" :relative t)
(:url "main.html" :name "About" :relative t)
(:url "excite.html" :name "Get excited" :relative t)
(:url "static/files" :name "Files" :relative t)
(:url "involve" :name "Development" :relative t)
;; (:url "static/files" :name "Files" :relative t)
(:url "" :name "Code"))
:title "McCLIM – A powerful GUI toolkit for Common Lisp"
:theme "mcclim")
url: involve
# Development
## Current roadmap
This roadmap is only a sketch. If you have any suggestions or
questions, please share them either on
[#clim IRC channel]([#clim]( 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
### 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
* Finish the manual
<!-- * Address some shortcomings of the -->
<!-- [CLIM II specification]( -->
<!-- by implementing alternative interfaces from -->
<!-- [CLIM III]( -->
<!-- while preserving the backward compatibility. -->
## How to contribute
McCLIM project is hosted on GitHub and cooperation is very similar to
other open source projects hosted there:
0. Submitting an issue (or feature request) on the issue tracker
1. Forking the repository (aka creating a remote branch)
2. Solving a problem or implementing new feature
3. 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
### Is McCLIM the only graphical toolkit for Common Lisp?
No, there are various other options. Here are some highlights:
#### Native solutions
<!-- native -->
* [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
* [CLIM]( – another
alternative **CLIM II** implementation for LispWorks. It is
proprietary and "provided primarily to support legacy applications".
* [CAPI]( – proprietary
GUI toolkits for LispWorks
#### FFI bindings
<!-- FFI -->
* [CommonQt](,
[EQL]( – QT bindings
* [cells-gtk](,
[cl-cffi-gtk]( – GTK
* [LTK](,
[clTcl]( – LTK bindings
#### Web applications
<!-- WebApps -->
* [Caveman2](,
[Weblocks]( – web frameworks
* [Ceramic]( – web application wrapper to
run it on a desktop
### 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
### I need commercial support – who should I contact?
The best place to look is writing to our mailing list
[]( to
which you may subscribe
......@@ -47,6 +47,7 @@ or on the [#clim]( irc channel.
specification of the protocol implemented by McCLIM
* [McCLIM manual draft](static/documents/mcclim.pdf):
McCLIM manual draft (PDF)
* [Downloads](static/): various files related to McCLIM.
## Examples ##
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment