OK, so it's not crap. It's great for web sites, disseminating and formatting information, and linking content across the entire world. In fact, it's pretty amazing. But ... it is crap for writing applications.

Over the years we have jumped through all sort of hoops to get round the (extreme) limitations of HTML and browser technology. We have invented ways of maintaining user state by keeping cookies on browsers, by adding cryptic information to URLs, by posting hidden values in forms, and by restoring large state objects on the server to overcome some of these problems.

We have invented increasingly complicated frameworks to allow us to split presentation logic over two physical tiers with a (typically) compiled language running on the server while Javascript manipulates widgets on the client, and then found more and more ingenious ways of making this seem slick to the user. We have made code more complicated by the fact that these two separate tiers have to communicate in some fashion, and we convince ourselves that the solution is elegant.

As soon as we have to target more than one type of browser (or even different versions of the same browser) it is not going to look the same on what is essentially different platforms. (Not to mention the difficulties of actually writing and debugging for two versions of IE on the same machine.) You would have to be nuts to choose a platform where the output will be unpredictable, right?!

A common argument with the customer might go something like this:

Programmer: You have high expectations of usability. It is best to use a rich client.
Customer: It needs to be a web (HTML) application.
Programmer: Um ... why?
Customer: Because that's what we want.
Programmer: You do realise it will take twice as long to write, and be less usable?
Customer: It needs to be a web (HTML) application.
Three months later the programmer is blamed for the product not being amazingly slick, being slightly behind the time-scales, and the customer is insisting that they need their spelling mistakes underlined 'just like MS Word'!

Another common reason for a customer to insist on a web application is for ease of deployment, but it is not hard to push rich applications to the desktop using technologies like ClickOnce these days either.

The only people who most often have a genuine need to target such a low common denominator are those writing applications that target the Internet (e.g., Amazon, eBay, etc.) But even then it is clear that for years the best looking stuff on the web has Flash content.

In summary:

Choose WPF;
Choose Windows Forms;
Choose Silverlight;
Choose Flash;
Just don't choose HTML.

Choosing to write an HTML application, especially when you are going to deploy in a company intranet, is nothing short of insanity these days ... it's long past the time for developers to make customers realise this.

Submit this story to DotNetKicks Shout it


IainW said...

Of course, a client that asks for a "web application" isn't really asking for HTML... So give them a "web app" - but tell them it uses some of the latest web technologies and feel free to use HTML to hold a Flash or Silverlight app - more often than not, they'll just be excited by the cool stuff and won't ever bother to "View Source"... Everyone wins ;-)

Anonymous said...

100% rant - 0% content :) awesome

Anonymous said...

Hmmm... an intersting view - don't you mean the client app is crap? Have you had any experience developing client applications? Do you know that they are a nightmare to administer? One major purpose of a web developed application is that you don't need to know the setup of a client machine. All they should need is a web browser! As soon as you develop client apps then you have to take in a whole host of considerations odbc, domain, security, drivers (printer, graphics, sound, network), host files, versions, install, uninstall, new machine deployed with no app - that's some!

Now, really, no, no REALLY - are you serious!!!!!!!!!!!!?


If we take Silverlight and Flas h as "client apps deployed through browser" we get the perfect balance of the both worlds

I fully agree with this post