14 Apr 2007
A Framework For Discussion (Of Frameworks)
After reading an interview with Dabble DB’s Avi Bryant, and reactions elsewhere, it’s clear that when developers discuss server-side frameworks the resulting exchanges are often meaningless. You see, there’s a difference between web applications and web sites, yet people usually fail to recognise that and end up arguing at cross-purposes.
A web application is all about interaction, a tool to get stuff done that’s analogous to desktop software, whereas most web sites are about presenting content and being part of the browsable web, with any interaction based around that content. Obviously, it’s a spectrum rather than a dichotomy, but it’s useful to consider the two types.
When you’re producing applications, abstracting away the trivia of the web’s client-side technologies is incredibly helpful and lets you focus on the high-level logic. Avi’s Seaside generates markup directly from the application code (no templating), and handles links, forms and URLs behind the scenes. Other frameworks, such as ASP.NET and the Google Web Toolkit, bring web development closer to developing desktop software by taking care of much of the awkward client-side interaction.
But for sites where advanced interaction isn’t the focus, you’re often better off embracing much of the lower-level technology. You need to control details such as markup and URLs if you want the best results. You need flexible templating so that different people can work on the server-side and client-side code (CSS can’t do everything). Too much abstraction can be just as frustrating, cumbersome and expensive as too little; lightweight MVCish approaches shouldn’t be sneered at.
Different frameworks sit comfortably on different parts of the application-site spectrum; can we acknowledge this and finally start having meaningful discussions of their merits?