Clack

Revenge of Lisp in Web

Chapter 1: Introduction

English | 日本語

Clack is a web application environment for Common Lisp, inspired by Python's WSGI, Ruby's Rack and Perl's Plack. By abstracting HTTP into a simple API, Clack allows your web applications to be portable and be reusable.

If you are familiar with Web development, you may know why these things so important -- because Web applications are in beta forever.

Enlargement of Systems

It means we have to improve applications day by day. In the process of improvement, it isn't rare that functions that you never imagined at the time of the design are added. Web application will be enlarged.

Then, it is hard to change partly in such a case when the system is built like a big rock from bottom to top. Therefore each components of your application must be lazy-coupling things that dependencies are clear.

Technologies changes fast

Besides that, there is another matter. -- Web world goes fast. Probably most of technologies will be changed within a few years.

It's not avoidable even if you write programs how carefully. Applications are getting older little by little. Your web server may be old-fashioned a few years later. Your web framework may be not maintained in the future. Same as libraries you used. It is difficult that you change your code along the times if your application depended on them deeply.

What Clack solves

Clack was developed to solve these problems. Clack works like "glue" of a web application. Honestly, Clack isn't a web application framework. Clack is a collection of modular components. Each components are lazy-coupling and it is easy to replace it partly.

And, Clack abstracts HTTP and a Web server. You don't need to be aware of what the backend is. As web applications built on Clack doesn't depend on which backend is, you can run the same code on a different Web server only by rewriting your application just a little.

I cannot talk about all of Clack in this chapter, but I leave some information that you can determine whether we are worth trust for a skeptical person.

Clack seems stable

All the functions of the core of Clack are already implemented in the first official release in June, 2011. Since then, no serious bugs have been found and no changes without backward compatibility have done.

Continuous improvements

We release Clack every month. There are many kind of changes in them, but, I really wanna say is, continuous improvement has been done. In the process, functions of Clack has been strengthened steadily, and even if a fatal bug was found in future by any chance, we can expect it is fixed by next month.

Well-documented

Most of functions, variables and macros in Clack have docstrings. Even packages. Because we think all elements in source files need a documentation string except it is really self-explanatory.

We also provides them as HTML pages at http://clacklisp.org/doc/.

Well-tested

The reason which only a few bugs were found so far is many unit tests. It has 173 tests now. The test coverage is kept more than 70% (I wanna improve it more, though).

Of course, all releases had passed those all tests, not only on 1 CL implementation but 3 -- Clozure CL, SBCL and CLISP. You can check the current status at http://ci.clacklisp.org/.