views:

112

answers:

4

Currently, the most popular web-app frameworks include Ruby-on-Rails, Django, and various PHP frameworks like Drupal and Joomla. However, I've been reading up on some "next-generation" web app frameworks that claim to approach web development differently.

Perhaps the best known example is the Seaside framework, built on the Smalltalk language. From its About page, it lists 4 key features:

  1. Programmatic HTML generation
  2. Callback-based request handling
  3. Embedded components
  4. Modal session management

As I'm developing a fairly complex simulation web-app that needs features akin to a desktop-app, like complex interactive forms, task flow, lots of charts and visuals, and UI flexibility and re-use (lots of widgets), Seaside's features 2, 3, and 4 sound quite appealing.

Thus I'd like to hear from other (advanced) web developers as to what open-source "next-gen" web app frameworks exist, what makes them "better" than more familiar tools like Django/RoR, and what kind of apps can be built with these newer tools that would be difficult/painful to do with older frameworks, e.g. I understand that Seaside's continuations-based session/state management makes stateful applications much easier than global session variables. How useful does that end up being?

Thanks in advance for your experiences and insights!

+2  A: 

Frankly, as long as you're roundtripping for every UI interaction to the server and back, you're never going to get "desktop-like" experiences. I've mostly abandoned server-side frameworks. My web apps are javascript and web services, where I try to minimize the amount of server-side code. What little is left, I wrap into Zend Framework, but a data persistence and validation layer really doesn't require that much code.

I'm using ExtJS for the javascript code, but there are many javascript frameworks that are nice (Cappuccino, SproutCore, GWT, Dojo, ...).

All the really rich interaction ends up being javascript anyway, so if you're going to pick a platform, pick one that integrates really well with javascript. Obviously the javascript toolkits have an edge there. GWT from what I gather is magic in that it isn't javascript but you can pretend it is without running into issues. The javascript port of Quake II is a GWT project, so that is saying something.

Joeri Sebrechts
Thanks for your informative answer and perspective - I hadn't seen that about GWT and Quake2, that's quite amazing. For anyone else reading, here's [the google code page](http://code.google.com/p/quake2-gwt-port/) for it. I'll need to look into GWT further, thanks again.
limist
A: 

The python-equivalent to Smalltalk's Seaside framework is Nagare - it seems like a capable system, though the documentation is inconsistent in depth/breadth currently, and I'm not finding many developer stories/experiences with it online. It's also interesting that it uses Stackless Python for continuations support.

limist
A: 

Yesod framework based on haskell language.

Anton
+1  A: 

Seaside is working out great for us. We develop on Pharo and deploy it on a VPS with a Gemstone OODB, and we're currently about five times as fast in developing as my former company was in ASP.NET MVC.

The combination of no database code, generated html (no templates) and javascript (Scriptaculous/jQuery/RaphaelJs) works out really well.

Point 1 is really important. I've never seen a template based system that was DRY enough (though there probably is a lisp based one that is).

I've also played with early releases of cappuccino, and it is nice if you have a cocoa/nextstep background, but it was (a few months after the first public release) not finished enough for us.

Stephan Eggermont
Thanks for sharing your experience, quite interesting. Have you found Seaside's usage of continuations important? Some claim that with ubiquitous AJAX, continuations for the web don't matter as much, but I'd like to hear more from developers with experience both ways.
limist
The application started using a lot of call: answer:, but now slowly moves towards using Announcements
Stephan Eggermont