For many different reasons Seaside is broken into a complex and cumbersome bundle/package structure.
At a higher level, Seaside is broken into three bundles :
- Seaside-VW
- Seaside
- Seaside-WekToolKit
that must be loaded in the exact same order shown above.
The first bundle Seaside-VW contains pre-requisites and is actually preparing VisualWorks for Seaside. This bundle also has a complex structure. See below for further details.
The second bundle Seaside contains the original Seaside code unaltered from Squeak. The structure of this bundle is derived from the corresponding Seaside Monticello package. No further details are provided here.
The third bundle Seaside-WebToolKit contains the integration code for running Seaside inside the WebToolkit framework, along with some patches to both Seaside and WebToolkit. See below for more information.
Note: There exists also a Seaside-Swazoo bundle that contains the integration code for running Seaside inside the Swazoo framework. This is described below in more details.
One-click loading
Loading Seaside means loading the three bundles in the order above, making sure the bundle versions are compatible. However to provide one-click loading, there is another bundle named SeasideForWebToolkit that contains a script that loads the three bundles programmatically.
The contents of the Seaside-VW bundle are :
- Squeak-Chronos - This bundle adds Squeak compatibility to the base VisualWorks image and includes a full port of the Squeak Chronology classes providing classes like Duration, Year, Month, Week, etc. This bundle contains all the known Squeak compatibility extensions that could be found in the repository. It can be used for any project that needs Squeak compatibility.
- Seaside-Store-Patch - This package includes a patch to Store to allow loading of packages that include a $/ in their name. Note : Those names were given a few years ago, renaming those packages would be a risky task.
- Seaside - This package defines the Seaside namespace. The definition of the Seaside namespace was originally done in the Seaside bundle (see below). However it had to be defined earlier so that the Squeak versions of the Date, Time, TimeZone and Color classes could be made available to the Seaside namespace.
- Seaside/VW Support - This package includes extensions to the VisualWorks classes that are needed by Seaside. It also includes the SeasidePlatformSupport class that is expected by Seaside. This class includes many utilities on the class side that are used to create the Seaside ports. Method #portSource answers a constant that represents the original source of the Seaside Monticello package.
The contents of the Seaside-WebToolKit bundle are :
- Seaside/Patches - This package includes patches to the Seaside code in the form of extensions and overrides. These patches are there to fix issues that are still not fixed in the Seaside Squeak source.
- WebToolkit/Patches - This package includes patches to the WebToolkit code in the form of extensions and overrides. These patches are there to fix issues that are still not fixed in the WebToolkit product.
- Seaside/WebToolkit - This package contains the actual integration between Seaside and WebToolkit, i.e. pieces of software that are specific to WebToolkit. The most important item is the SeasideServlet class. Of interest is the AAADocumentation class that provides guidelines on how to set things up and a few methods that are used to build the sample HTTP server and the sample web site.
The contents of the Seaside-Swazoo bundle are :
- Seaside/GIF - This package includes some classes from VisualWave that are needed to support GIF images, since Swazoo does not have any support for GIF.
- Swazoo/Patches - This package includes patches to the Swazoo code in form of extensions and overrides. It adds explicit support for cookies that is missing in Swazoo.
- Seaside/Patches - This package is the same as the one included in the Seaside-WebToolKit. See above.
- Seaside/Swazoo - This package contains the actual integration between Swazoo and WebToolkit, i.e. pieces of software that are specific to Swazoo. The most important item is the SeasideResource class. Of interest is the AAADocumentation class that provides guidelines on how to set things up and a few methods that are use to build the sample Swazoo server.
-Information courtesy of Michel Bany