%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright 2001 by Object Craft P/L, Melbourne, Australia.
% LICENCE - see LICENCE file distributed with this software for details.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Introduction\label{intro}}

Albatross is a small and flexible toolkit for developing highly
stateful web applications.  The toolkit is lightweight enough to use
for CGI applications.  It provides the following:

\begin{itemize}
\item Browser based sessions via automatically generated hidden form
fields.

\item Server side sessions via a session server or file based session
store.

\item Implicit form population and browser request handling.

\item Powerful and extensible templating system which promotes
separation of presentation and implementation for improved program
maintainability.

Pagination of sequences and tree browsing are handled implicitly in
the templating system.

Macros allow repeated HTML and special effects HTML to be defined in
one location.

Lookup tables translate internal program values to arbitrary template
code.

\item Applications can be deployed as either CGI programs or as
\texttt{mod_python} module with minor changes to program mainline.
Custom deployment can be achieved by developing your own
\class{Request} class.

\item Highly modular application framework which is flexible and
extensible which allows many different application construction
models.  Many \class{Application} classes are provided and many more
are possible.

\item Comprehensive documentation including many installable samples.
\end{itemize}

A primary design goal of Albatross is that it be small and easy to use
and extend.  Most of the toolkit is constructed from a collection of
mixin classes.  You are encouraged to look at the code and to think of
new ways to combine the Albatross mixin classes with your own classes.

Object Craft developed Albatross because there was nothing available
with the same capabilities which they could use for consulting work.
For this reason the toolkit is important to Object Craft and so is
actively maintained and developed.
