| 1 |
\chapter{Introduction} |
|---|
| 2 |
\label{sec:introduction} |
|---|
| 3 |
|
|---|
| 4 |
\vbox{ |
|---|
| 5 |
\centering |
|---|
| 6 |
\includegraphics{satelliteicon} |
|---|
| 7 |
\vspace{1cm} |
|---|
| 8 |
} |
|---|
| 9 |
|
|---|
| 10 |
BKNR is a software launch platform for Lisp satellites. You could |
|---|
| 11 |
replace ``launch platform'' with framework and ``satellites'' with |
|---|
| 12 |
``applications'', but that would be too many buzzwords. |
|---|
| 13 |
|
|---|
| 14 |
BKNR is made of facilities that are not very useful on their own, but |
|---|
| 15 |
they can be used to quickly build shiny and elegant Lisp |
|---|
| 16 |
satellites. For example, a very important component of BKNR is its |
|---|
| 17 |
datastore, which brings persistence to CLOS in a very simple way. By |
|---|
| 18 |
adding a few declarations to your class definitions, you can have |
|---|
| 19 |
persistent objects. You can also add XML import/export to your objects |
|---|
| 20 |
in a similar way. I think this is the single most attractive feature |
|---|
| 21 |
of BKNR: no more mapping from a relational database to Lisp objects, |
|---|
| 22 |
no more XML parsing and XML generation, you just write plain |
|---|
| 23 |
application code. |
|---|
| 24 |
|
|---|
| 25 |
|
|---|
| 26 |
Another interesting feature of BKNR is its web framework, built on top |
|---|
| 27 |
of the Hunchentoot webserver. The web framework has a simple |
|---|
| 28 |
object-oriented handler hierarchy, with sessions, authorization and |
|---|
| 29 |
all the features you are used to from other frameworks. It also |
|---|
| 30 |
gathers usage information, stores it in the datastore, generates |
|---|
| 31 |
statistics, maps sessions to persistent users. Furthermore, a very |
|---|
| 32 |
useful feature is the HTML templater, which enables you to call Lisp |
|---|
| 33 |
code from XML templates. The Lisp template callbacks are simple Lisp |
|---|
| 34 |
functions that can work on the XML DOM representation. This eases |
|---|
| 35 |
working with web developers, who can still use their standard editors |
|---|
| 36 |
to develop the layout of the webpage. Dynamic content is easy to |
|---|
| 37 |
integrate. |
|---|
| 38 |
|
|---|
| 39 |
\begin{figure}[htbp] |
|---|
| 40 |
\centering |
|---|
| 41 |
\includegraphics[scale=0.4]{eboyshot1} |
|---|
| 42 |
\caption{Screenshot of eboy.com} |
|---|
| 43 |
\end{figure} |
|---|
| 44 |
|
|---|
| 45 |
The application which started BKNR was the website for the graphic |
|---|
| 46 |
designers eboy. A lot of work went into the manipulation of images and |
|---|
| 47 |
the integration of images into the Lisp framework. So another big part |
|---|
| 48 |
of the BKNR web framework is the image manipulation code and the image |
|---|
| 49 |
layout code, based on the CL-GD library by Edi Weitz. |
|---|
| 50 |
|
|---|
| 51 |
We have started developing BKNR in March 2004, and it is used in 2 big |
|---|
| 52 |
web applications (the Eboy dynasite ``eboy.com'', and the BOS website |
|---|
| 53 |
``BOS creates rainforest''), and has been used to implement a few |
|---|
| 54 |
personal websites (the website for the hacker gathering GPN in 2004, |
|---|
| 55 |
which featured an interactive Lisp music-dj, the temporary conference |
|---|
| 56 |
website for the European Lisp Workshop and the BKNR website). The code |
|---|
| 57 |
was opensourced right from the start, but we didn't put a lot of |
|---|
| 58 |
effort into making it accessible for other developers. This is the |
|---|
| 59 |
first try at releasing some kind of public version of the BKNR |
|---|
| 60 |
codebase, with (we hope) decent documentation. |
|---|
| 61 |
|
|---|
| 62 |
If you would like to look at some of the BKNR features in a little |
|---|
| 63 |
more detail, take the guided tour in Chapter 2. Chapters 3, 4, 5, 6 |
|---|
| 64 |
then show how to use the different facilities in short tutorials, |
|---|
| 65 |
respectively object indices, the datastore, the web framework and the |
|---|
| 66 |
templater. These chapters are slightly modified versions of the |
|---|
| 67 |
tutorials that can be found in each of the facilities. Finally, |
|---|
| 68 |
Chapter 7 shows how to build a full web photo album application using |
|---|
| 69 |
BKNR. Due to time constraints, the last three chapters are not |
|---|
| 70 |
available for the release of BKNR Sputnik. We are sorry for the |
|---|
| 71 |
inconvenience. The sourcecode is in a working state, but not |
|---|
| 72 |
documented and cleaned up yet. |
|---|
| 73 |
|
|---|
| 74 |
We would like to thank the eboys for their support while developing |
|---|
| 75 |
BKNR, their cool graphics and their enthusiasm :) We would also like |
|---|
| 76 |
to thank Edi Weitz for his impressive libraries, and his |
|---|
| 77 |
support. Also, I would like to thank Steffen Hurrle for his cool |
|---|
| 78 |
website designs (he also has a new design for the BKNR website, which |
|---|
| 79 |
sadly nobody has the time to update). The BKNR developers are Hans |
|---|
| 80 |
Huebner, David Lichteblau and Manuel Odendahl. |
|---|
| 81 |
|
|---|