Commit 6203d292 authored by Marco Baringer's avatar Marco Baringer
Browse files

Initial import

darcs-hash:ebe90a19099b58c884b61ec518b8e5be1806270b
parents
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>UnCommon Web - Dynamic HTML Generation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table height="100%" width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<table height="100%" width="100%" border="0" cellspacing="10" cellpadding="0">
<tr>
<td align="left" valign="top" class="content">
<h1>UnCommon Web</h1>
<h2>Credits</h2>
<h3>Code</h3>
<p><tt>UnCommon Web</tt> is built upon a number of
external libraries:</p>
<ul>
<li>Miles Egan's <a
href="http://www.common-lisp.net/project/xmls/">xmls</a>
XML parser.</li>
<li><a
href="http://portableaserve.sourceforge.net">portableaserve</a>,
and the associated acl-compat library.</li>
<li><a
href="http://common-lisp.net/project/slime/">SLIME</a></li>
<li>Marc Battyani's <a
href="http://www.fractalconcept.com">mod_lisp</a></li>
<li><a
href="http://common-lisp.net/project/iterate/">ITERATE</a></li>
</ul>
<h3>Inspiration</h3>
<p><a href="http://www.cliki.net/IMHO">IMHO</a>, Paul
Graham, Christian
Queinnec, <a
href="http://beta4.com/seaside2/">SeaSide</a>, <a
href="http://cocoon.apache.org/">Cocoon</a>
<a
href="http://jakarta.apache.org/struts/">Struts</a>.</p>
<p></p>
<h3>Sound Track</h3>
Rage Against the Machine. Ani DiFranco. Fabrizio De
Andr&egrave;. The Clash. The Beastie Boys. Fiona
Apple. Frankie Hi-Nrg. Moby. Live. Simon and
Garfunkel. Tracy Chapman. The
Who. Underworld. Radiohead. NoFX. Bad
Religion. Rancid. Ligabue. Eminem. Morcheeba. Massive
Attack. Portishead. Counting Crows. SubsOnicA. Cake.
<h3>Author</h3>
<p><tt>UnCommon Web</tt>'s principal author is
<a href="mailto:mb@bese.it">Marco Baringer</a>, the
development is funded by <a
href="http://www.bese.it">bese</a>.</p>
</td>
<td width="120" align="right" valign="top">
<p class="link-paragraph"><a href="index.html">home</a></p>
<p class="link-paragraph"><a href="features.html">features</a></p>
<p class="link-paragraph"><a href="download.html">download</a></p>
<p class="link-paragraph"><a href="documentation.html">documentation</a></p>
<p class="link-paragraph"><a href="lists.html">mailing lists</a></p>
<p class="link-paragraph"><a href="credits.html">credits</a></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="30"><div align="right"><font color="#999999" size="-2"></font></div></td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>UnCommon Web - Documentation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table height="100%" width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<table height="100%" width="100%" border="0" cellspacing="10" cellpadding="0">
<tr>
<td align="left" valign="top" class="content">
<h1>UnCommon Web</h1>
<h2>Documentation</h2>
<h3>The Source Code</h3>
<a href="docs/html/source/index.html">html</a> -
<a href="docs/pdf/source.pdf">pdf</a>
<p>The source code is the definitive reference for all
things UCW. This document is a html (or pdf)
translation of the source code.</p>
<h3>Creating a Wiki with UCW</h3>
<a href="docs/html/wiki/index.html">html</a> -
<a href="docs/pdf/wiki.pdf">pdf</a>.
<p>This tutorial shows how to create a simple wiki
using UCW. The source code to the example and the
accompanying tal files are include with ucw
itself.</p>
<h3>Web/Continuation</h3>
<p><a
href="http://lisp.tech.coop/Drew%20Crampsie">Drew
Crampsie</a> (and a cast of thousands) has written a
nice <a
href="http://lisp.tech.coop/Web%2FContinuation">introduction</a>
to continuation based web applications and UCW.</p>
<h3>Slides</h3>
<p><a href="docs/UCW-en.pdf">Slides</a> from the UCW
talk given at <a
href="http://pavia.linux.it/linuxday-2004/linuxday-2004.php">LinuxDay
2004 Pavia</a> (translated from the <a
href="docs/UCW-it.pdf">italian</a> version).</p>
<h3>Far More than You Ever Wanted to Know</h3>
<p>A long <a href="docs/html/rest/rest.html">e-mail
conversation</a> which touches on, among other things,
UCW internals, the REST approach and continuations
vs. state machines.</p>
<p>Another long <a
href="http://common-lisp.net/pipermail/bese-devel/2004-December/000222.html">e-mail</a>
which talks about how to structure UCW apps.</p>
<h3>Getting help online</h3>
<p>UCW developers and users can occasionaly be found in
the <tt>#ucw</tt> channel on the freenode.net irc
network.</p>
<h3>An Introduction to UnCommon Web (DRAFT)</h3>
<a href="docs/html/intro/index.html">html</a> -
<a href="docs/pdf/intro.pdf">pdf</a>
<p>A high level overview of a typical UCW application;
What UCW is (and isn't); How to get started developing
UCW applications.</p>
</td>
<td width="120" align="right" valign="top">
<p class="link-paragraph"><a href="index.html">home</a></p>
<p class="link-paragraph"><a href="features.html">features</a></p>
<p class="link-paragraph"><a href="download.html">download</a></p>
<p class="link-paragraph"><a href="documentation.html">documentation</a></p>
<p class="link-paragraph"><a href="lists.html">mailing lists</a></p>
<p class="link-paragraph"><a href="credits.html">credits</a></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="30"><div align="right"><font color="#999999" size="-2"></font></div></td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>UnCommon Web</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table height="100%" width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<table height="100%" width="100%" border="0" cellspacing="10" cellpadding="0">
<tr>
<td align="left" valign="top" class="content">
<h1>UnCommon Web</h1>
<h2>Download</h2>
<h3>Latest Distribution</h3>
<p><tt>0.3.9</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.9.tar.bz2">tar.bz2</a>
/ <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.9.tar.gz">tar.gz</a> / <a
href="http://common-lisp.net/cgi-bin/archzoom.cgi/ucw-2004@common-lisp.net/ucw--release--0.3.9--patch-13/CHANGES?download">release
announcement</a>.</p>
<h3>Getting the Latest Source</h3>
<h4>Quick Start</h4>
<pre>
$ tla register-archive \
http://common-lisp.net/project/bese/bese-2004@common-lisp.net
$ tla register-archive \
http://common-lisp.net/project/ucw/ucw-2004@common-lisp.net
$ tla register-archive \
http://common-lisp.net/project/iterate/iterate-devel@common-lisp.net--2004
$ tla get ucw-2004@common-lisp.net/ucw--dev--0.3 ucw
$ cd ucw
$ tla buildcfg libs/config
</pre>
<h4>Slow Start</h4>
<p>You'll need to get <a
href="http://wiki.gnuarch.org">arch</a>. Then you'll need to
register the <a
href="http://common-lisp.net/cgi-bin/archzoom.cgi/ucw-2004@common-lisp.net">ucw-2004</a>
and <a
href="http://common-lisp.net/cgi-bin/archzoom.cgi/bese-2004@common-lisp.net">bese-2004</a>
archives:</p>
<pre>
$ tla register-archive \
http://common-lisp.net/project/bese/bese-2004@common-lisp.net
$ tla register-archive \
http://common-lisp.net/project/ucw/ucw-2004@common-lisp.net
</pre>
<p>The first thing to get from the archive is the ucw
support--dists branch, it contains the files which tell arch how
to get the various versions of ucw and required libraries. Since
you're reading this you probably want the latest code, here's
what you need to do:</p>
<pre>
$ tla get ucw-2004@common-lisp.net/support--dists
ucw-dist
$ cd ucw-dist
$ tla buildcfg dev
</pre>
<p>At this point you'll have a subdirectory named <tt>ucw</tt>
which contains ucw and the required libraries. You'll need to
tell <a href="http://www.cliki.net/asdf">asdf</a> about the
various <tt>.asd</tt> files, then you can try loading one of the
examples. See the <tt>INSTALL</tt> file for more details.</p>
<h4>Browsing the Repository</h4>
<p>Both archives can be browsed
using <a
href="http://migo.sixbit.org/software/archzoom/">ArchZoom</a>:</p>
<ul>
<li><a href="http://common-lisp.net/cgi-bin/archzoom.cgi/ucw-2004@common-lisp.net">ucw-2004@common-lisp.net</a></li>
<li><a href="http://common-lisp.net/cgi-bin/archzoom.cgi/bese-2004@common-lisp.net">bese-2004@common-lisp.net</a></li>
</ul>
<h3>Older Versions</h3>
<p><tt>0.3.8</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.8.tar.gz">download</a>, <a
href="http://common-lisp.net/pipermail/bese-devel/2005-May/000451.html">release announcement</a>.</p>
<p><tt>0.3.7</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.7.tar.gz">download</a>, <a
href="http://common-lisp.net/pipermail/bese-announce/2005-February/000021.html">release
announcement</a>.</p>
<p><tt>0.3.6</tt>: <a href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.6.tar.gz">download</a>,
<a href="http://common-lisp.net/pipermail/bese-announce/2005-February/000019.html">release
announcement</a>.
</p>
<p><tt>0.3.5</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.5.tar.gz">download</a>, <a
href="http://common-lisp.net/pipermail/bese-devel/2005-February/000263.html">release
announcement</a>.</p>
<p><tt>0.3.4</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.4.tar.gz">download</a>, <a
href="http://common-lisp.net/pipermail/bese-devel/2004-December/000223.html">release
announcement</a>.</p>
<p><tt>0.3.3</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.3.tar.gz">download</a>, <a
href="http://common-lisp.net/pipermail/bese-announce/2004-November/000016.html">release
announcement</a>.</p>
<p><tt>0.3.2</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.2.tar.gz">download</a>, <a
href="http://common-lisp.net/pipermail/bese-announce/2004-November/000015.html">release
announcement</a>.</p>
<p><tt>0.3.1</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.1.tar.gz">download</a>, <a
href="http://common-lisp.net/pipermail/bese-announce/2004-October/000014.html">release
announcement</a>.</p>
<p><tt>0.3.0</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.3.0.tar.gz">download</a>, <a
href="http://common-lisp.net/pipermail/bese-announce/2004-September/000012.html">release
announcement</a>.</p>
<p><tt>0.2.3</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.2.3.tar.gz">download</a>, <a
href="http://www.common-lisp.net/pipermail/bese-devel/2004-June/000133.html">release
announcement</a>.</p>
<p><tt>0.2.2</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.2.2.tar.gz">download</a>, <a
href="http://www.common-lisp.net/macho-archives/bese-devel/2004-5/132.html">release
announcement</a>.</p>
<p><tt>0.2.1</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.2.1.tar.gz">download</a>, <a
href="http://www.common-lisp.net/macho-archives/bese-announce/2004-5/12.html">release
announcement</a>.</p>
<p><tt>0.2.0</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.2.0.tar.gz">download</a>, <a
href="http://www.common-lisp.net/macho-archives/bese-announce/2004-3/11.html">release
announcement</a>.</p>
<p><tt>0.1.0</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.1.0.tar.gz">download</a>, <a
href="http://www.common-lisp.net/macho-archives/bese-announce/2003-12/3.html">release
announcement</a>.</p>
<p><tt>0.0.1</tt>: <a
href="ftp://ftp.common-lisp.net/pub/project/ucw/ucw_0.0.1.tar.gz">download</a></p>
</td>
<td width="120" align="right" valign="top">
<p class="link-paragraph"><a href="index.html">home</a></p>
<p class="link-paragraph"><a href="features.html">features</a></p>
<p class="link-paragraph"><a href="download.html">download</a></p>
<p class="link-paragraph"><a href="documentation.html">documentation</a></p>
<p class="link-paragraph"><a href="lists.html">mailing lists</a></p>
<p class="link-paragraph"><a href="credits.html">credits</a></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="30"><div align="right"><font color="#999999" size="-2"></font></div></td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>UnCommon Web</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table height="100%" width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<table height="100%" width="100%" border="0" cellspacing="10" cellpadding="0">
<tr>
<td align="left" valign="top" class="content">
<h1>UnCommon Web</h1>
<h2>Features</h2>
<h3>Linear Page Flow Logic</h3>
<p><tt>UnCommon Web</tt> provides developers with the
illusion that web pages are nothing more than function
calls. This characteristic allows developers to write
the page flow control logic as if it was a
&quot;regular&quot; sequence of function
calls. Developers can now ignore all of the accidental
complexities introduced by the stateless HTTP
protocol, the browser's &quot;back&quot; button and
window cloning and concentrate on creating complex web
applications.</p>
<h3>Component Oriented UI</h3>
<p>Components are CLOS objects which are used for
representing both the &quot;look and feel&quot; of an
application and the presentation logic. This component
oriented system allows both the graphical elements and
the presentation logic to be easily reused and
adapted.</p>
<p><tt>UnCommon Web</tt> provides a library of
standard components which applications can tailor to
their specific needs. This library includes, among
others: a tabbed pane widget, a generic login form, a
&quot;select from options&quot; component and a range
view component.</p>
<h3>Adaptability</h3>
<p>The core request-&gt;eval-&gt;response loop is
written in terms of a well defined protocal based on
generic functions. Extending or modifying the core can
be accomplished by simply redefining generic functions
and defining classes. Modifications to the UI
generation or i18n sub-systems can be made with the
same ease.</p>
<h3>Dynamic HTML Generation</h3>
<p><tt>UnCommon Web</tt> provides a programmer
friendly HTML generation library which uses intuitive
HTMLish macros and compiles to efficent text
generation code. <tt>UnCommon Web</tt> also provides a
designer friendly HTML templating system.</p>
<p>Both of these HTML generations systems are
available in an independent library <a
href="http://common-lisp.net/project/bese/yaclml.html">yaclml</a>.</p>
<h3>Portable</h3>
<p><tt>UnCommon Web</tt> has been ported to various
Common Lisp
implementations: <a
href="http://openmcl.clozure.com">OpenMCL</a>, <a
href="http://www.cons.org/cmucl/">CMUCL</a>
and <a
href="http://sbcl.sourceforge.net">SBCL</a>, <a
href="http://clisp.sourceforge.net">CLISP</a>
and <a
href="http://www.franz.com/">Allegro</a>. </p>
<p><tt>UnCommon Web</tt> is able to use multiple HTTP server backends:
<a href="http://httd.apache.org">Apache</a> + <a
href="http://www.common-lisp.net/project/mod-lisp">mod_lisp</a>,
<a href="http://opensource.franz.com/aserve/">aserve</a> (and
<a
href="http://portableaserve.sourceforge.net">portableaserve</a>),
or <a
href="http://www.cliki.net/Araneida">araneida</a>. <tt>UnCommon
Web</tt> also contains a small pure lisp http
server.</p>
<h3>Normal Web App Fare</h3>
<p><tt>UnCommon Web</tt>, like most web frameworks,
also provides: transparent session management (url
rewriting or cookie based); logging (via the arnesi
library); interactive error handling based restarts
and, for non interactive sessions and production
environments, web based inspectable backtraces and
customizable "user friendly" 501 error pages.</p>
</td>
<td width="120" align="right" valign="top">
<p class="link-paragraph"><a href="index.html">home</a></p>
<p class="link-paragraph"><a href="features.html">features</a></p>
<p class="link-paragraph"><a href="download.html">download</a></p>
<p class="link-paragraph"><a href="documentation.html">documentation</a></p>
<p class="link-paragraph"><a href="lists.html">mailing lists</a></p>
<p class="link-paragraph"><a href="credits.html">credits</a></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="30"><div align="right"><font color="#999999" size="-2"></font></div></td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>UnCommon Web</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table height="100%" width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<table height="100%" width="100%" border="0" cellspacing="10" cellpadding="0">
<tr>
<td align="left" valign="top" class="content">
<h1>UnCommon Web</h1>
<div style="margin-left: 3em;">
<pre>
First there was GOTO, and all was ... bearable ...
GOTO begot the subroutine, and all was ... better ...
The subroutine begot the function, and all was good.
First there the CGI, and all was ... bearable ...
CGI begot the servlet and jsp, and all was ... better ...
Then there was UCW, and all was good.
</pre>
</div>
<p>The <a href="features.html">features</a> page
explains what sets <tt>UnCommon Web</tt> apart from
other web develpoment
frameworks.</p>
<p>If you want to get the source code the <a
href="download.html">downloads</a> page contains
links to all the latest releases.</p>
<p>If you want to follow the latest developments
check out the <a href="lists.html">mailing
lists</a>.</p>
<p>The <a href="documentation.html">documentation</a>
page explains what UCW is, how it works and how to
develop UCW applications.</p>
<br/>
</td>
<td width="120" align="right" valign="top">
<p class="link-paragraph"><a href="index.html">home</a></p>
<p class="link-paragraph"><a href="features.html">features</a></p>
<p class="link-paragraph"><a href="download.html">download</a></p>
<p class="link-paragraph"><a href="documentation.html">documentation</a></p>
<p class="link-paragraph"><a href="lists.html">mailing lists</a></p>
<p class="link-paragraph"><a href="credits.html">credits</a></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="30"><div align="right"><font color="#999999" size="-2"></font></div></td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>UnCommon Web</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table height="100%" width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">
<table height="100%" width="100%" border="0" cellspacing="10" cellpadding="0">
<tr>
<td align="left" valign="top" class="content">
<h1>UnCommon Web</h1>
<h2>Mailing Lists</h2>
UCW shares its mailing lists with the bese
project. Send Comments, feature requests, suggestions
and bugs to the list <a
href="http://www.common-lisp.net/mailman/listinfo/bese-devel">bese-devel@common-lisp.net</a>. Announcements
of new releases will be made to the low volume read
only list <a
href="http://www.common-lisp.net/mailman/listinfo/bese-announce">bese-announce@common-lisp.net</a>.
Archives for both lists are available:
<ul>
<li><a href="http://www.common-lisp.net/pipermail/bese-devel/">bese-devel</a></li>
<li><a href="http://www.common-lisp.net/pipermail/bese-announce/">bese-announce</a></li>
</ul>
</td>
<td width="120" align="right" valign="top">
<p class="link-paragraph"><a href="index.html">home</a></p>
<p class="link-paragraph"><a href="features.html">features</a></p>
<p class="link-paragraph"><a href="download.html">download</a></p>
<p class="link-paragraph"><a href="documentation.html">documentation</a></p>
<p class="link-paragraph"><a href="lists.html">mailing lists</a></p>
<p class="link-paragraph"><a href="credits.html">credits</a></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height="30"><div align="right"><font color="#999999" size="-2"></font></div></td>
</tr>
</table>
</body>
</html>
.link-paragraph {
width: auto;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-style: none;
border-bottom-style: solid;
border-left-style: solid;
border-top-color: #333333;
border-right-color: #333333;
border-bottom-color: #333333;
border-left-color: #333333;
padding: 2px;
}
h1 {
font-size: x-large;