Icing: Lightweight web development in Scheme

This page is a mirrored copy of an article originally posted on the LShift blog; see the archive index here.

As part of a recent development project, we’ve assembled pieces from SISCweb, SSAX and SXPath, and some of our own code to build a simple web-development framework we’ve tentatively named Icing.

Icing, so far, consists of:

  • a simple bean-like layer atop raw SQL, with an S-expression based SQL syntax and objects representing table rows;

  • a small library (not quite the same as SISCweb’s approach) to allow pattern-matching on the URLs of incoming requests, and to allow attaching handlers to matched URLs;

  • libraries for using JavaMail to construct and send arbitrary MIME multipart message parts and for using BouncyCastle’s PGP implementation with JavaMail to build PGP MIME email bodies and attachments; and

  • a XSLT-template-based Model-View-Controller-plus-Workflow framework for structuring applications. HTML templates (with special attributes and with optional embedded XSLT instructions) form the View; Scheme code forms the Controller; the DB layer referred to above forms the core of the Model; and SISCweb’s support for continuation-based web programming forms the Workflow.

The software is still being hammered into shape; we’re currently in the process of documenting it, packaging it conveniently for use in other applications, and deciding how we want to release it — it could be released as a thing-in-itself, bundling together a collection of third-party libraries, or we could instead take Icing to pieces, and fold some of the parts back into SISCweb (if SISCweb’s author, Alessandro Colomba, approves, of course).

I’ve made the slides from the presentation on Icing I gave last week available. They’re the only real documentation the code has at present, but ought to give a feel for the kind of approach we’re taking with it.


On 22 May, 2006 at 4:28 pm, mikeb wrote:

I like the colour-coded code snippets, although when there is more than one snippet it gets quite uh, busy.

Pages 38 and 39 have broken images.

On 22 May, 2006 at 6:14 pm, tonyg wrote:

:-) Pages 38 and 39 are off the end. The javascript slide-show presenter is presently too stupid to detect the end of the slide-show… See also this article from a couple of days ago.

On 25 May, 2006 at 12:47 am, gherson wrote:


Does J2EE pull its weight here? How about leaving it behind in favor of a pure plt-scheme implementation?