(home | about | stats)

Seaside FAQ: How Seaside Is Ported From Squeak To VisualWorks

I (Michel Bany) am using a Squeak tool from Avi Bryant named 'PackageInfo' available from SqueakMap plus some extensions named 'PackageInfo-Exporters' also from Avi Bryant and also available from SqueakMap or from http://www.beta4.com/mc/PackageInfo-Exporters-avi.4.mcz

Having these two bits loaded in Squeak, I also load the Seaside package that I want to port (taken from http://www.beta4.com/mc/seaside/) into Squeak. Then I evaluate this in a Squeak workspace

SeasideVWInfo fileOutVW5.

This creates a file named 'SeasideVW5.st' that can be filed-in into VW.

However before filing-in the 'SeasideVW5.st' file, VW needs to be prepared so that it looks like Squeak to Seaside. This preparation of VW is done by the bundle named 'Seaside-VW' available in the public Store repository.

The 'Seaside-VW' bundle contains many Squeak classes/methods that are not available in VW and also includes the complete Squeak-Chronology subsystem that I also ported to VW using the PackageInfo-Exporters. The 'Seaside-VW' bundle also includes the SeasidePlatformSupport class that is designed to supply platform specifics to Seaside. I added to this class some tools (category port) to automate/document the port process and some other (category deploy) to automate the creation of the Seaside VW parcels for the Cincom distribution CD.

Once VW is prepared with 'Seaside-VW', I file-in the 'SeasideVW5.st' file into VW. This creates a bundle named 'Seaside' made of many packages named 'Seaside-something' (these names are controlled by the contents of the file). Sometimes I needed to re-order the packages in the bundle. Then I update method #portSource on the class side of SeasidePlatformSupport to precisely document the origin of the port.

The last step consists of hooking Seaside to the web server environment. For this I have two bundles : Seaside-WebToolkit and Seaside-Swazoo. Both are stored in the public repository. These two bundles contain typically three types of software : * the glue between Seaside and the web server, * patches to Seaside that did not yet make it into Avi's original packages and * patches to the web server stuff.

Finally, I publish four bundles to the public repository : * Seaside-VW (this bundle prepares VW and makes it look like Squeak) * Seaside (this bundle contains the original Seaside code, untouched) * Seaside-WebToolkit (this contains the hooks to WebToolkit and patches) * Seaside-Swazoo (this contains the hooks to Swazoo and patches)

All with a common version number, for instance 2.5b3.6.0, derived from the original Seaside file name, for instance Seaside2.5b3-avi.6.mcz The correct sequence for loading these bundles is 1. Seaside-VW 2. Seaside 3. Seaside-WebToolkit (or Seaside-Swazoo, or both) making sure you load bundles that have a similar version number.

To make things simpler (or is it more complicated?) I also created recently two new bundles SeasideForWebToolkit and SeasideForSwazoo. These bundles simply execute a script that load the correct bundles in the correct order with just one click.

-Information courtesy of Michel Bany

motionobj.com. This is a pwyky site.