PackageDescription: Seaside-WebToolKit(Bundle)

Seaside - Web Tool Kit

Last published: November 13, 2007 by 'mbany'

This parcel/bundle provides a VisualWorks port and basic integration of the "Seaside" continuation-based web application development framework. Note that Seaside and this port are not a supported part of Cincom Smalltalk. For more information on Seaside see

Seaside provides a layered set of abstractions over HTTP and HTML that let you build highly interactive web applications quickly, reusably and maintainably. Seaside includes:

* Programmatic HTML generation. A lot of markup is boilerplate: the same patterns of lists, links, forms and tables show up on page after page. Seaside has a rich API for generating HTML that lets you abstract these patterns into convenient methods rather than pasting the same sequence of tags into templates every time.

* Callback-based request handling. Why should you have to come up with a unique name for every link and form input on your page, only to extract them from the URL and request fields later? Seaside automates this process by letting you associate blocks, not names, with inputs and links, so you can think about objects and methods instead of ids and strings.

* Embedded components. Stop thinking a whole page at a time; Seaside lets you build your UI as a tree of individual, stateful component objects, each encapsulating a small part of a page. Often, these can be used over and over again, within and between applications - nearly every application, for example, needs a way to present a batched list of search results, or a table with sortable columns, and Seaside includes components for these out the box.

* Modal session management. What if you could express a complex, multi-page workflow in a single method? Unlike servlet models which require a separate handler for each page or request, Seaside models an entire user session as a continuous piece of code, with natural, linear control flow. In Seaside, components can call and return to each other like subroutines; string a few of those calls together in a method, just as if you were using console I/O or opening modal dialog boxes, and you have a workflow. And yes, the back button will still work.

Seaside also has good support for CSS and Javascript, excellent web-based development tools and debugging support, a rich configuration and preferences framework, and more.

Seaside is currently developed and supported by Avi Bryant, with the help of the Seaside community. Commercial support is available, and donations are welcome. Special thanks to Julian Fitzell, Adrian Lienhard, and Lukas Renggli for their contributions to Seaside, to for sponsoring this site, and to Peter Macsadi for providing the Seaside logo.

This port relies on the VisualWorks Web Toolkit, and creates a SeasideServlet which handles all seaside requests and delegates them to the Seaside framework. The port was done primarily by Michel Bany,

The integration pieces between Seaside and WebToolkit
A few patches to Seaside
A few patches to WebToolkit

Installation Notes

When loaded from a parcel:
The parcel needs to be loaded after the SeasideBase parcel
SeasideBase and WebToolkit are declared as a pre-requisites of the parcel
and therefore will be automatically installed while loading this parcel, if necessary.

When loaded from the Cincom public Store repository:
The bundle needs to be loaded after the Seaside-VW and Seaside bundles
Seaside-VW, Seaside and WebToolkit are declared as a pre-requisites of the bundle
and therefore will be automatically installed while loading this bundle, if necessary.

Some options are selectable via dialogs during the load of this bundle/parcel.
1. Automatic setup of a sample HTTP server (WaveHTTPRequestBroker on port 8008)
2. Automatic setup of a web site (seaside on namespace Seaside)

If you elected to use the automatic setups, you should be able to surf to http://host:port/seaside/go/counter.

If you elected not to use the automatic setups, you will have to do things manually:
Click the 'globe' icon on the button bar then press 'Create Server'.
ServerType should be WaveHTTPRequestBroker,
leave 'Use default resolvers' unchecked. Press 'Create and Start'.
Surf to http://host:port enter a site name in the input field and click 'Create New Site'. Make
sure you specify 'Seaside' as the namespace before pressing 'Submit'. You should be
able to surf to http://host:port/site/servlet/SeasideServlet/counter.

Keywords: Web, Continuations, HTML, Internet, Squeak