Cello

a Common Lisp GUI

(This page is a working draft under construction)

Cello is a project to create an open-source, industrial-strength, portable GUI toolkit for Common Lisp. Its features include anti-aliased fonts, accelerated 2d- and 3d-graphics, a standard set of GUI widgets, easy construction of new widgets, and much more. Cello heavily utilizes Cells (a sister project on common-lisp.net), in addition to industry-standard technologies such as OpenGL, FreeType, and ImageMagick. It is currently in a prerelease state, and under rapid development.

Cello discussion occurs on the cello-devel mailing list. Prerelease bundles and screenshots can be found on the Cello FTP site.

Mission Statement

To answer Noob FAQ #2, "Where's the GUI?":

More grandly, to be the CLOS of Common Lisp GUIs. Common Lisp did not do objects when it was created, but when objects came up CLOS did them better than anyone else. Cello intends to outdo the GUIs available in other languages by a similar margin.

Certain things must be true if such a lofty goal is to be reached:

In Brief

An emerging open-source, industrial-strength, fast, powerful, easy-to-use, portable GUI for Common Lisp, by Common Lisp, and of Common Lisp.

Those are the fundamental capabilities. Stepping back to a wide-angle shot:

Components

Cello has been neatly structured so developers can grab isolated chunks without buying into the whole enchilada. Here are the standalone components to be found in a Cello distro.

cl-opengl
OpenGL Bindings, including GLUT
cl-ftgl
glue and bindings for FTGL, a C++ implementation of FreeType fonts for OpenGL.
cl-magick
bindings for ImageMagick, a library of pixmap, vector, and image-file graphics routines.
cellocore
an application framework requiring only Cells (http:/common-lisp.net/ projects/Cells) and cl-opengl

The Foundation

Cello achieves its universal portability and graphical power through a number of kick-ass external libraries, all open source, all with liberal licensing such as Cello's MIT-style license:

OpenGL/MesaGL
Yes, Virginia, if you are using OpenGL the GPU will be handling a large fraction of your application's CPU load. And, no, you will not believe the graphical power at your fingertips.
FreeGlut
windows and callbacks for mouse, key, and display events. This bad boy is under heavy development since getting picked up by RedHat after learning the original Glut has an unfriendly license. And Freeglut is binary compatible with the standard Glut, so developers can work under Freeglut but ship on another Glut, such as Apple's Quartz-based glut.
FreeType
TrueType set free.
FTGL
use any TrueType/FreeType font on the system, in any mode: bitmap, pixmap, texture, outline, polygon or extruded polygon.
ImageMagick
adopted originally for portable access to over 80 image formats such as JPEG, GIF, BMP, AVI et al, this library also offers an insane suite of bitmapped and vector graphics functions. Knock yourself out.
SuperCollider (SC3)
our interface from Cello is vaporware, but it will be worth the wait. SC3 can play standard audio file formats, and it can be programmed to synthesize sound in real-time. "(beep) on steroids" does not do SC3 justice.
UFFI
Kevin Rosenbeg's meta-contribution to the growth of Common Lisp, opening the door to C and C++ libraries everywhere.