teepeedee2 (tpd2)

A web-application framework for dynamic webpages.

Introduction

tpd2 is a fast web-application framework for dynamic pages. Like ULib and the Klone webserver it is efficient.

There are many other Lisp web-frameworks and webservers. The most popular webserver is probably Hunchentoot. Lisp webservers that might be reasonably efficient are dwim.hu and, for static pages, Antiweb.

Why?

Common Lisp is a language that encourages users to write inefficient programs. Yet some people claim that it is possible to write reasonably efficient programs using a subset of it. Is that true? I thought most web frameworks were horribly inefficient, so as an experiment I decided to try to make a faster web-framework in a less efficient language: thus teepeedee2.

It was possible, but it took a lot of effort. Common Lisp is certainly not well suited to the project.

Licence

Lisp LGPL. See addons/* for the licences of those libraries.

I hope that anybody using teepeedee2 for a website will take the time to publicly release their source code (for example, all the code for mopoko.com is included in the tpd2 tarball) — though this is not enforced by the licence, I think it is very slimy of web developers to greedily take for free huge amounts of work like the Linux kernel, GNU toolchain and MySQL, but then keep their horrible little scripts a closely guarded secret. Don't be like them.

Development priorities

teepeedee2 has achieved its performance goal (to be much faster than most web frameworks).

However, I don't feel it is as correct as it should be. It needs stress testing and an HTTP fuzzing torture test.

At the same time it is missing several features: comprehensive request routing to allow REST-ful interfaces, cookie handling, multipart form uploads, static file serving, logging, SSL, gzip encoding, etc. Patches to implement these will be gratefully accepted!

TODO

Patches welcomed! Write to the teepeedee2-devel mailing list.

Download

Tarball of the the latest git commit.

To check out the tree locally:

git clone git://github.com/vii/teepeedee2.git

Project members

Valid XHTML 1.0 Strict