As if web framework religious discussions weren’t annoying enough, one thing that I always think is missing from such debates is context regarding the type of application being developed. It’s like discussing the best mode of personal travel without taking the type and size of journey into account. There’s a reason why you walk to the mailbox and drive to the store. You can drive to the mailbox but it will incur costs greater than the benefits. Similarly, you can walk to the store as long as it isn’t too far, you have the time to do so and you aren’t buying much.
In the same vein, I think there is a big difference between framework choices to develop Web Applications and Web Sites. I consider Web Applications as big fat client (even through fat server side state) applications that introduce a richness of functionality. Web Sites are still logic based, but have a much leaner functionality set and usually a visual richness. I consider an ERP system as a Web Application while Facebook or blogging software is more of a web site. This is a fairly gray area seeded mostly by personal opinion since anything that is backed by any kind of persistence or logic is still an application, so the terminology isn’t quite accurate, but then we don’t think of Amazon or Ebay as applications.
In general, sites are mostly view based with a minimal amount of code to push inserts into the application and a very small amount of update code. Amazon lets us browse everything, add items to a shopping cart , place an order and update our profile. Blogging lets us view posts, create posts, and edit accounts and preferences. In contrast, web application functions are fairly evenly matched between adding, updating, viewing and even processing data.
One other factor, some might consider it the only factor, is whether the view layer is a means to an end. Does the development and customer focus lie in creating a rich user experience for the user or is the focus more on making sure the 2009 financials come out correct?
The difference is important, especially when we are discussing and comparing frameworks since different frameworks are geared to different types of solutions and suitability depends on context. Some frameworks touch on both areas partially, but I don’t believe any frameworks span the whole spectrum and nor should they. However, I’m not a big believer in the ‘use what fits best’ mantra because it implies that there is a finer granularity to the problem than there really is. I do believe that you should be able to use at least two web frameworks well, one to cover web application projects and the other to cover the web site type projects.
Regardless, we would all do well to remember that criticism of one tool or another always depends on the job it is needed for.