I've been helping Mike Neumann with his new Wee web framework, by explaining Seaside's solutions to the various problems he's coming across. I think I can count Mike among my oldest fans, because years ago he wrote a chapter in a Ruby book about using IOWA, my first attempt at a Seaside-style (or, as I thought of it then, WebObjects-style) web framework. I've learned a lot since then, and it's been great fun bringing Mike up to speed on my latest thoughts on the problem of web development - especially since he seems to agree with most of them ;).
The result is interesting on a couple levels: first, it's a reimplementation in Ruby of many of the core concepts of Seaside, but without (as far as I know) Mike looking at a single line of Seaside code - it's all just been email conversations at the design level. This is in stark contrast with Borges, which started out as a line-by-line translation of the Seaside codebase into Ruby, and I have to confess that I think Mike's is the better approach. It's been a nice chance for me to think about the various "tricks" (patterns?) that make up the framework, and how to generalize them to other languages and other implementation constraints. I've always meant to write those up, and this may be the trigger to start me on doing that. Given my record with regular posts to this blog so far, however, I shouldn't be too optimistic...
The second way in which Wee is interesting is that it doesn't use continuations. Mike wanted to be able to serialize the session state, and although Ruby does support call/cc, it can't marshal continuations, so Wee doesn't use them. Given that continuations are the aspect of Seaside that I spend, by far, the most time talking about, it's very interesting to be reminded of everything else that's going on by seeing a framework that leaves them out and yet is still instantly recognizable as Seaside-influenced.