A declarative GUI DSL for ABCL


Snow is a GUI description language for Java and Common Lisp. Like XUL and similar, it makes it possible to write GUI code in a declarative fashion.
With Snow, the structure of the code reflects the tree of widgets that make up the GUI. Layout is specified with a CSS-like embedded language. Data binding cleanly separates GUI code from application code and automatically propagates changes in both directions.

Compared to XML-based GUI languages, Snow:

Also, Snow is interactive, being built on Lisp, a very dynamic language. You can immediately see your GUI code in action without any lengthy batch compilation phase. It compares to a GUI builder in productivity, while not taking away any freedom from the experienced programmer.

Snow is implemented on top of ABCL (ArmedBear Common Lisp) and third-party libraries, most notably JGoodies Binding and Cells (for connecting the GUI and the application, following the model-view-controller paradigm) and MiGLayout (declarative, CSS-like component layout).
At the time of this writing, Snow supports only the standard Swing GUI library, but it should in principle be extensible to other libraries, like SWT.
Also, Snow provides, as examples of its usage, GUI versions of some of ABCL's components (namely the debugger, the inspector and the REPL).
You can run a simple showcase of Snow directly with Java WebStart. WARNING: Snow, and thus the showcase, need Java security privileges because a) ABCL needs to use a custom classloader and b) Snow needs temporary files to load itself. So use at your own risk, no warranty is provided.


Snow is distributed under the GNU GPL with linking ("classpath") exception. It is the same license used by GNU Classpath and ABCL. It basically means that you can use Snow in open source or commercial products without them being covered by the GPL. Any modifications to Snow itself need to be distributed under the GPL.


The latest project releases (source and binaries) are hosted at release.


You can find the Snow documentation in the docs directory, or - if you want to be sure to get the most up-to-date version of the docs - on SVN.


I am working towards porting the
SwiXml examples to Snow. You can find them here, along with a brief explanation.

Mailing Lists


You can browse our SVN repository or download the current development tree via anonymous svn, as described here

Project members

[an error occurred while processing this directive]
Valid XHTML 1.0 Strict