If you are interested in poking around in the source code for the GemStone port of Monticello, Seaside, or SqueakSource then you should cruise around GemSource. The site was just brought on-line this afternoon and it will be our primary repository for GemStone/Seaside source as we move forward.

GemSource is ‘read only’ at the moment, but as soon as we start the Beta, we’ll open up access to the site for all users and projects. If you are interested, I encourage you to register for an account, so you can view the package contents from the comfort of you own Squeak image.

If you do decide to take a look from Squeak, you’ll need to make the following change to MCClassDefinition>>kindOfSubclass in your Squeak image:

kindOfSubclass
  type = #normal ifTrue: [^ ' subclass: '].
  type = #words ifTrue: [^ ' variableWordSubclass: '].
  type = #variable ifTrue: [^ ' variableSubclass: '].
  type = #bytes ifTrue: [^ ' variableByteSubclass: '].
  type = #weak ifTrue: [^ ' weakSubclass: ' ].
  type = #compiledMethod 
    ifTrue: [^ ' variableByteSubclass: ' ].
  type = #transient ifTrue: [ ^ ' variableSubclass: ' ].
  self error: 'Unrecognized class type'

I’ll be checking that change into SqueakSource in a day or so.

I’m only a third of the way through the “Make It Work, Make It Right, Make It Fast” cycle, so it would be premature to incorporate any of my changes into the Squeak version, but if any Seasiders, see something interesting or odd, don’t hesitate to let me know. I’ll take credit for the interesting bits and find some excuse for the odd ones.

Right now, GemSource is running with a single GemStone Seaside VM (behind Apache) and a maintenance VM (as described in Porting Application-Specific Seaside Threads to GemStone).

In the coming weeks, I will use GemSource as the sample application when I describe a technique for dealing with long-running HTTP requests, and I describe how to avoid concurrency issues when moving an application to multiple VMs.

I know of at least twoone funky problems with the site: wierd component nesting in some cases and the handling of batched lists is broken. Both of t. These problems are directly related to the fact that GemSource was ported from an earlier version of Seaside (2.3 or older). I may need a little help from a Seaside expert to figure out how to fix these two problems (hint, hint…).

In other cases, some html has leaked into the page – again this is due to the change in behavior between Seaside2.3(?) and Seaside2.6. These problems will be fixed shortly.

If you notice anything else that is odd, drop me a line at our Beta mailing address (see GLASS) or submit a comment to this post.

Updated (5/26/2007): With Philippe’s help I was able to fix the broken batched list problem and I’ve updated the site.