A GUI toolkit for Common Lisp

Recent Content

After 10 years we have decided that it is time to make a new release – the first
one since 2008, which was McCLIM 0.9.6, St. George's Day. Imbolc is a Gaelic
traditional festival marking the beginning of spring held between the winter
solstice and the spring equinox.

Due to a long period of time, the number of changes is too big to list in full
detail and we will thus note only major changes made during the last eleven
iterations (though many important changes were done before that). For more
information please check out previous iteration reports
on McCLIM blog,
git log and
the issue tracker. We'd like
to thank all present and past contributors for their time, support and testing.

Bug fix: tab-layout fixes.

Bug fix: formatting-table fixes.

Bug fix: scrolling and viewport fixes and refactor.

Feature: raster image draw backend extension.

Feature: bezier curves extension.

Feature: new tests and demos in clim-examples.

Feature: truetype rendering is now default on clx.

Feature: additions to region, clipping rectangles and drawing.

Feature: clim-debugger and clim-listener improvmenets.

Feature: mop is now done with CLOSER-MOP.

Feature: threading is now done with BORDEAUX-THREADS.

Feature: clx-fb backend (poc of framebuffer-based backend).

Feature: assumption that all panes must be mirrored has been removed.

Cleanup: many files cleaned up from style warnings and such.

Cleanup: removal of PIXIE.

Cleanup: removal of CLIM-FFI package.

Cleanup: changes to directory structure and asd definitions.

Cleanup: numerous manual additions and corrections.

Cleanup: broken backends has been removed.

Cleanup: goatee has been removed in favour of Drei.

Cleanup: all methods have now corresponding generic function declarations.

We also have a bounty program financed with money from the fundraiser. We are
grateful for financial contributions which allow us to attract new developers
and reward old ones with bounties. Currently active bounties (worth $2650) are
available here.

As Imbolc marks the beginning of spring we hope this release will be one of
many in the upcoming future.

clim-formatting-table code major refactor. One of the results is that borders may wrap table cells, columns and rows appropriately

drawing tests cleanups, improvements, and additions.

Some work has been done to improve CLX library. We have added a test suite and fixed its working on CCL (which had some problems with it). Thanks to that McCLIM works on CCL way faster than before (around 3x – subjective). We were also able to make CLIM-TOS (Franz's CLIM 2 fork) start simple applications on CCL and SBCL. I'm mentioning this because some people are not fond of McCLIM license and fact that we have two FOSS implementations of the same standard may be yet another good reason to start writing applications in CLIM.

Bounties:

All McCLIM bounties (both active and already solved) may be found
here. Default
bounty expiration date is 6 months after publishing it (a bounty may be
reissued after that time period).

Bounties solved this iteration:

[$100] drag-test demo: dragging square to the empty position invokes the debugger

[$100] Text field pane height is too small, clipping the bottom of characters

Active bounties ($1600):

[$300] Listener: repl blocks when long process runs

[$500] Windows Backend

[$400] Fix Beagle backend

[$150] When flowing text in a FORMATTING-TABLE, the pane size is used instead of the column size

[$150] clx: input: english layout

[$100] Add PDF file generation (PDF backend)

Our current financial status is $2014 for bounties and $288 recurring
monthly contributions from the supporters (thank you!).

Suggestions as to which other issues should have a bounty on them are
appreciated and welcome. Please note that Bountysource has a
functionality "Suggest an Issue" which may be found on the
bounties
page. If you would like to work on an issue that is not covered by the
existing bounties, feel free to suggest a new bounty.

During this quarter we have noticed more interest in learning CLIM and developing
applications with it among fellow Common Lisp programmers.

If you have any questions, doubts or suggestions – please contact me
either by email (daniel@turtleware.eu) or on IRC (my nick is
jackdaniel). McCLIM developers and users hang out on #clim IRC
channel on Freenode.

Sincerely yours,
Daniel Kochmański

Here are some screenshots made in the meantime which are related to the changes:

We have many important improvements since the last iteration and even
more work is pending. I want to apologise for this late progress
report – it has been almost three months since the last update. I'll
try to improve in this regard.

[$150] When flowing text in a FORMATTING-TABLE, the pane size is used instead of the column size

[$150] clx: input: english layout

[$100] Add PDF file generation (PDF backend)

Our current financial status is $1089 for bounties and $264 recurring
monthly contributions from the supporters (thank you!).

I have been asked a question about who decides which issues have
bounties on them and how the reward amounts are decided. If anyone has
been wondering about the same here goes the answer: issues and prices
are based on my subjective opinion indicated by problems users
encounter and what I consider being worth putting bounty on it. Note
though, that I'm open to suggestions (see the next paragraph). I hope
that despite some potential doubts the community is generally
satisfied with the progress and decisions we make. If there is some
lack of transparency, please let me know what you want to know and
I'll do my best to help.

Suggestions as to which other issues should have a bounty on them are
appreciated and welcome. Please note that Bountysource has a
functionality "Suggest an Issue" which may be found on the
bounties
page. If you would like to work on an issue that is not covered by the
existing bounties, feel free to suggest a new bounty.

If you have any questions, doubts or suggestions – please contact me
either by email (daniel@turtleware.eu) or on IRC (my nick is
jackdaniel). McCLIM developers and users hang out on #clim IRC
channel on Freenode.

McCLIM code is getting better on a weekly basis depending on developer
time. We are happy to see the project moving forward.

Some highlights for this iteration:

Scigraph code cleanup and bug fixes,

Bezier curves improvements,

PostScript and PDF improvements,

CLX-fb and mcclim-renderer speed improvements and refactor,

various code cleanups from unused and broken constructs,

editorial corrections to the CLIM 2 specification sources we bundle
with McCLIM

Moreover many bug fixes have been proposed and merged into the
codebase.

All McCLIM bounties (both active and already solved) may be found
here. Default
bounty expiration date is 6 months after posting it (a bounty may be
reissued after that time period).

To answer recurring requests for native Windows and OSX support, we
have posted bountes for finishing the Windows backend and fixing the
OSX backend. Moreover, to improve portability a bounty for closer-mop
support has been posted.

Bounties solved this iteration:

[$100] Caps lock affects non-alphabetic keys.

Active bounties ($1700):

[$500] Windows Backend (new).

[$400] Fix Beagle backend (new).

[$300] Replace MOP things with closer-mop portability layer (new).

[$150] When flowing text in a FORMATTING-TABLE, the pane size is
used instead of the column size.

[$150] clx: input: english layout.

[$100] Add PDF file generation (PDF backend).

[$100] Keystroke accelerators may shadow keys even if inactive.

Our current financial status is $800 for bounties and $267 recurring
monthly contributions from the supporters (thanks!).

Suggestions as to which other issues should have a bounty on them are
appreciated and welcome. Please note that Bountysource has a
functionality "Suggest an Issue" which may be found on the
bounties
page. If you would like to work on an issue that is not covered by the
existing bounties, feel free to suggest a new bounty.

If you have any questions, doubts or suggestions – please contact me
either by email (daniel@turtleware.eu) or on IRC (my nick is
jackdaniel).

During this iteration we had many valuable contributions. It's a joy
to see how McCLIM gains more mindshare and people are willing to put
their time and wallet in fixing issues and writing applications in
McCLIM.

Some highlights for this iteration:

many Listener fixes,

major tab layout extension refactor,

new extension for Bezier curves (based on older internal implementation),

interactor improvements,

layout improvements,

fixes for redisplay and transformations,

documentation cleanups,

cleanup of the issues (closed the obsolete and fixed ones).

All McCLIM bounties (both active and already solved) may be
found here.

Bounties solved this iteration:

[$200] Interactor CLI prompt print problem

Fixed by Gabriel Laddel. Waiting for a pull request and a bounty claim.

[$200] Problem with coordinate swizzling (probably).

Fixed by Alessandro Serra and merged. Waiting for a bounty claim.

[$100] menu for input-prompt in lisp-listener does not disappear after use.

Fixed by Alessandro Serra and merged. Waiting for a bounty claim.

Active bounties:

[$150] When flowing text in a FORMATTING-TABLE, the pane size is
used instead of the column size.

[$150] clx: input: english layout. (someone already works on it).

[$100] Caps lock affects non-alphabetic keys. (new)

[$100] Add PDF file generation (PDF backend). (new)

[$100] Keystroke accelerators may shadow keys even if inactive. (new)

Our current financial status is $1,429 for bounties and $267 recurring
monthly contributions from the supporters (thanks!).

Suggestions as to which other issues should have a bounty on them are
appreciated and welcome. Please note that Bountysource has a
functionality "Suggest an Issue" which may be found on
the bounties
page. If you feel that you may solve some problem, but there is no
bounty on it, feel free to suggest it too.

If you have any questions, doubts or suggestions – please contact me
either by email (daniel@turtleware.eu) or on IRC (my nick is
jackdaniel).

During this iteration I have worked on the Debugger (system
clim-debugger) to bring it closer to sldb:

More work on the module is planned with a final goal to integrate it
with the Listener and to have it as a default debugger for McCLIM
applications. Suggestions on how to improve the interface, testing and
help with coding are appreciated. Preliminary documentation has been
written and put in
the
McCLIM manual draft.

I've started working on a library called Slim[1] the goal of which is
to provide some of the CLIM interfaces in easy to learn and write
manner (i.e more context dependent, less verbose names, unified
abstractions etc.). For now it is only a skeleton having barely four
macros, but I'd love to hear suggestions, what should it contain, in
what form etc. A sketch may be found in the source code
Libraries/Slim/. If you think it is a bad idea to have such library
shipped with McCLIM – let me know about that too!

The documentation was extended in some places. Also building the
info document works now (long standing issue). An updated version of
manual draft may be found on the McCLIM website. The Drei
documentation has been put in
a
separate document due
to its size and independent scope from the rest of McCLIM.

Nisar Ahmad has solved one of the bounties related to menus and
command tables. He also submitted documentation for the menu
functionality, thereby earning $150. Congratulations!

Speaking of finances - all money is now accumulated solely for
bounties and development tasks, none is withdrawn by me since the
beginning of year 2017.

Currently we have $1226 at our disposal and active bounties worth
$700. Declared monthly donations at the moment equal
$297. Additionally one-time contributions come every month. That means
that we can post two or three bounties a month without draining the
current resources, or spawn a bunch of worthwhile tasks and keep going
as money comes. This is fantastic news. Thank you all for your support
to the project!

At the moment we have five active bounties worth $700 which may be
found here:

New bounties have a time limit assigned to them (six months) – thanks
to that we are able to reclaim money from unresolved issues and
propose it somewhere else (or repost the same bounty).

To improve the visibility of the issues which have bounties on them
I've added a label to GitHub issue tracker: bounty.

Suggestions as to which other issues should have a bounty on them are
appreciated and welcome. Please note that Bountysource has a
functionality "Suggest an Issue" which may be found on
the bounties
page. If you feel that you may solve some problem, but there is no
bounty on it, feel free to suggest it too.

If you have any questions, doubts or suggestions – please contact me
either by email (daniel@turtleware.eu) or on IRC (my nick is
jackdaniel).

We are very happy that the number of McCLIM users grows, which may be
infered from number of questions on the IRC channel, bug reports and
pull requests.

I owe you apologies for skipping reports in the meantime. Since
January I'm not withdrawing money from our fundraiser thanks to other
paid work, which means we have budget for more bounties. Keep in mind,
that doesn't mean any work has ceased from my side.

During this iteration I was preparing a paper^1 for the upcoming
European Lisp Symposium^2. Unfortunately it wasn't good enough to be
accepted.

I'm still working on a tutorial and demo application mentioned in the
paper proposal. During that bugs and incompatibilities get fixed and
pull requests are accepted. When questions arise on IRC or mailing
list I try to answer them.

During this iteration I have continued working on the tutorial, fixing
the issues and assuring CLIM II specification compatibility.

The most notable change is standard-application-frame implementation
refactor which simplifies the code and moves some computation to
creation time (until now we have searched through sheet hierarchy at
each iteration of command loop and at various other occasions at
runtime).

The rest of the time was spent on peer review of the contributions,
merging pull requests, development discussions, questions on IRC and
other maintenance tasks.

Alessandro Serra has created a Framebuffer Backend – a working proof
of concept that McCLIM may work on top of a frame buffer. Albeit a bit
slow you may find instructions how to run it here:

During this iteration I have continued to work on the tutorial,
improving documentation, working on issues and assuring CLIM II
specification compatibility.

Most notable change is that argument type in define-command is not
evaluated (but if it is quoted it still works for backward
compatibility reasons). I've also started some refactoring of the
frames module implementation.

The tutorial work takes some time because I try to fix bugs when I
encounter them to make the walkthrough as flawless as possible. While
I'm not overly satisfied with the tutorial writing progress and its
current shape, this work results in benefit of improving the code and
the documentation.

The documentation chapter named "Demos and applications" has been
updated to reflect the current state of the code base. Some additional
clarifications about the pane order and pane names have been added to
it. I've updated the website to include the external tutorials and
include the Guided Tour in the Resources section. The manual has
been updated as well.

The rest of the time was spent on peer review of the contributions,
merging pull requests, development discussions, questions on IRC and
other maintenance tasks.

Alessandro Serra has created a Raster Image Backend – a backend
similar to PostScript, but having png as its output. See "Drawing
Tests" in clim-examples and the chapter "Raster Image backend" in
the Manual.

During this iteration I was working on a tutorial about how to create
an application from scratch with McCLIM used as a GUI toolkit with a
detailed description of each step. This is targeted at beginners who
want to write their own project with a CLIM interface. The tutorial
isn't finished yet, but I expect to publish it soon.

The font-autoconfigure branch was successfully merged to the master
branch and various issues were closed thanks to that. One of them is
bounty issue #65. Since I don't know how to cancel the bounty, I'm
claiming it ($100), and I'm withdrawing from the McCLIM account the
usual amount with this $100 subtracted.

I have replaced the clim-listener non-portable utilities with the
osicat portability layer and the alexandria library. Changes are
present in the develop branch (not merged yet).

The rest of the time was spent on peer review of the contributions,
merging pull requests, development discussions, questions on IRC and
other maintenance tasks.