framework-battle-royalThere is a lot of flame wars and debate over what web application framework is the best. At SXSW interactive there was a panel discussion amongst some of the developers and users of a range of different frameworks. It was a battle as to who was best at documentation, setup, templates, models, and optimization. In turns out the right framework has more to do with the solution you are targeting.
The frameworks represented were Ruby-on-Rails, Symphony, Seaside, Sinatra, and Zope.

Each of these frameworks targets a slightly different audience and problem. Each handles separation of concerns and data in a different way.

Symphony is written in PHP and focuses on being flexible and puts the power in the hands of both the programmer and designer to make the application run smoothly. It allows for a modular approach, which makes it a great solution for applications where the same element is used in many different locations. For instance the same form element, security login, etc.

Seaside is written in Smalltalk and focuses on performance and puts the logic and HTML in the hands of the developer and the images and CSS in the hands of the designer. It draws a very clear line in terms of separation of concerns. Developers need to make sure the application works and designers need to make sure it looks good. It obviously requires a certain level of interaction between the two, but it makes the distinction clear. Something that can be learned from and used in the other frameworks. (Update: Dancer is the Perl equivalent)

Sinatra is written in Ruby. It is designed to make it easy to get started building an application. It is designed to be lightweight and relies heavily on pre-existing Ruby conventions and models. It doesn’t reinvent the wheel. It is good for people who need to get something up quick and don’t have a lot of time to fuddle through documentation or complicated setup procedures.

Ruby-on-Rails is probably one of the most popular web frameworks. All people seem to talk about is the features of the third generation. It has gone through some growing pains, but is finally converging on what seems to a very mature framework. It is designed for people who want to have choices at every level from templates, data, and control. It is best for highly interactive and social applications.

Zope is written in Python although you may never actually touch the code in this framework. Its major focus is on documents and objects. If you are developing a highly document and process centric application it is worth using this framework. Where ruby focuses highly on interaction, Zope focuses on content. It isn’t as fast as Symphony or Seaside and not recommended for highly social or interactive applications, but is great for intranets and other environments where security, search, and documentation is key.

Overall these frameworks have really matured. They innovating in many important ways and are trying hard to do the following:

  • Make getting started easy
  • Keep HTML pure without a lot of javascript or style
  • Increase efficiency and performance
  • Increase flexibility at every level through APIs
  • Allow for NoSQL environments
  • Plugin to related projects in their respective languages

They are all converging on the same basic goals. They all borrow the same concepts and constructs. The choice is based more on what language are comfortable using and your focus.

Other things mentioned: Solr (search), Deliverance & Tilt (theming), Squeek Smalltalk Runtime, MongoDB (NoSQL DB).