views:

337

answers:

5

Seaside just released a release candidate for the upcoming 3.0 version, so it appeared on my radar again. As I'm currently pondering what web framework to use for a future project, I wonder whether it's something to consider. Alas, most of the publicity for Seaside is from '07, which is probably one or two generations for the web. So I'm hoping that the community here can answer some questions

  1. Continuation-based frameworks were pretty great when most of your workflow was mostly in HTML, e.g. form submits. For today's JavaScript-heavy environments, that hardly seems worthwhile anymore.

  2. Is Squeak able to handle a reasonable workload? From other questions here and elsewhere, it seems that for proper scaling another implementation (Gemstone etc.) would probably fare better in the long run, but I don't have a proper idea how far away that is. Sessions seem to be rather expensive.

  3. I know that comparisons are hard, but most of the articles you find on the net set Seaside and Rails side by side. How would combinations like Scala/Lift, Clojure/Compojure or Erlang/Nitrogen do instead?

+6  A: 

In Smalltalk we have now three web frameworks to consider, besides Seaside also

Both later effectively solve three-like control flow, but without needing continuations. Both also have a very strong Ajax integration, actually you don't realize anymore that you are working with Ajax.

Both also scale in memory consumption well. 10.000 sessions spend 220MB in Aida/Web, that is about 23KB per session, which can be further optimized down to mere 400B per session. This means, that you can run not only but many websites from the single Smalltalk image. Of course you can always upgrade to load balancing solution, when you really need. Which is from my experience very rarely needed.

Comparing to Ruby on Rails, a friend of mine complained that he needs 50MB of memory initially for every webshop site he is selling. He then turned to the Aida/Web solution where he needs about the same MB for the image, but then just few KB for every additional webshop site.

Janko Mivšek
It's great to get comparative data between the different frameworks... but how does this answer the question?
Frank Shearar
For scaling question we need better definition of reasonable workload to answer better. For first question I think I answered indirectly. Let me add one comparison for a third question..
Janko Mivšek
Well, my point was that I wanted to know the standard reasonable workload, i.e. the point where you had to switch from Squeak to a higher-performing Smalltalk or introduce clustering etc.
mhd
23KB per session it's quit small. Compare to PHP, if you use some framwork like Zend you can consume lot of memory ~1MB, but that's because PHP [serialization] is awful.
mathk
+9  A: 

I have answers to question one and two:

  1. This is true. However since version 2.8 Seaside is not a strictly "continuation-based" framework anymore. Seaside uses continuations in the flow module only. Since Seaside 3.0 the flow module is even optional. Also note that Seaside has strong Javascript support since 2005, this is long before mainstream frameworks started to add Javascript functionality. Today Seaside comes with JQuery and JQueryUI support built-in.
  2. Of course that depends on what you store within your session objects, but typically sessions are small (less than 20 KiB). Use the memory profiler in your application to determine the exact memory consumption.
Lukas Renggli
+7  A: 

And there is a new seaside book: http://book.seaside.st/book

Mariano Peck
+5  A: 

I find the productivity of working in a Smalltalk IDE with a good set of abstractions outweights all other issues in engineering dominated projects. It works well as an enterprise system for a small company with about 100 (simultaneous, but not heavy) users on a single server (without going to SSD). Since 2007:

  • Seaside has shown to be able to make the switch from html workflows to javascript ones;
  • Seaside has been ported to a lot of different Smalltalks;
  • Has seen Gemstone release GLASS;

The new 'cog' vm with much improved performance has been released a few weeks ago and shows great promise for improved performance.

Stephan Eggermont
+1  A: 

Avi Bryant, the developer of Seaside, said that AJAX triumphs continuations in almost all situations. Nevertheless, you can build reasonably powerful applications with Seaside and AJAX, too.

The Application part of a Web-App can be done in other frameworks quite well using Ajax.

I think a Seaside integrated Smalltalk-to-Javascript Framework like Cappuccino-for-Clamato is missing, currently. I'd like to be able to build real Javascript-Apps using Smalltalk.

Richard Durr