The problem is...
Posted On Sunday, 16 November 2008 at at 21:52 by Rick WalshMy client has charged me with the task of building an application which solves a problem.
A warehouse management application perhaps.
So, I'm going to deliver the applications interface over the web because my client doesnt want to manage the installation and management of software across their 3,000,0000 warehouses.
Further they wont allow me to install 3rd party browser plugins - all I can rely on is HTML, CSS, JavaScript and HTTP.
So I cant use Flash or Silverlight.
Also, the .NET framework isnt available on the client machines. Java isnt either.
There goes ClickOnce and Java Web Start etc etc.
So what do I do?
Shit.
Recently I wrote a little MVP application framework on top of Dojo. It worked well. Nice seperation of concerns, testable etc etc.
Before that I wrote an MVC framework on top of the clientside Microsoft AJAX framework.
That worked okay too. The codes horrid.
I worked with extJS, but then they started to play with their licence...
Before that I wrote a.....
Infact for almost every major web application I've had to write an application framework on top of some other framework/library.
The underlying framework provided code that attempted to hide the fact that the different browsers were... different.
My framework would provide common services to the developer and enforce a development style for the team to work within. Literally an application framework.
The fact that I felt like I had to write an application framework was annoying in itself.
Why hasnt someone whose cleverer* than me done it? If they have done it, why dont I know about it?
Further, the underlying frameworks didnt completely abstract the differences between the browsers and they seemed focused on enabling developers to build small web 2.0 esq additions to their web pages rather than enabling me to build fully formed applications.
In each case, the project started well, however later down the line, browser related issues ALWAYS cropped up.
For example, IE6's piss poor JavaScript engine prevented me from building large DOMS.
The application in question used tabs, probably like the browser you're using. As more tabs were loaded, the app slowed down.
I solved this problem by disconnecting unfocused tabs from the DOM and re-attaching them when the tab was focussed. At this point my layout manager was told to redraw the layout to ensure that scaling had occured correctly.
So in each case I had to solve problems that werent in the business domain. In most cases these issues took up the majority of the time.
Desktop application development isnt generally like this. Sure ,there are still issues, but they often arent as frequent and as complex to solve.
I should be able to develop a web based application where the biggest problems I have to solve are in the business domain.
So, it is possible to write a large scale web base application, google and friends have proven this.
BUT..... its NOT trivial and the majority of the problems you have to solve are down to the platform (browser).
Also, if I'm building small web apps such as RSS feed readers, then I can do so quickly and easily. Dojo and ExtJs are all good enough to do this.
But as soon as you're handed a enterprise scale app your development cycle will probably begin to unravel.
Of course, you guys may be all geniuses and may solve these problems easily and quickly. If so, I havent met any of you :)
At the moment I'm investigating technologies in preperation for a technology referesh of a applications user interface.
Cappucino I'm told, is the solution to my problems.
* Most people are cleverer than me.

Hi Rick,
If you're looking for a framework that actually handles both the loading and saving of data, and is designed precisely for building replacements for desktop applications, you should look into SmartClient from Isomorphic Software.
SmartClient is an open source Ajax RIA platform has many features to make it easier for developers to build applications so, as you talked about, they can focus on the business problems instead of trying to figure out how to get the framework to work.
SmartClient also fully shields developers from cross-browser issues so that you don't have to do any cross-browser testing and debugging. You also get pixel-perfect layout and rich skinning with out CSS expertise, and rich tools and diagnostics that are available in any browser.
I could go on, but you're probably better off seeing it for yourself.
Here are the links for demos,docs and to download the SDK:
Demos: http://www.smartclient.com/featureExplorer.jsp
Docs: http://www.smartclient.com/product/documentation.jsp
Download: http://www.smartclient.com/product/download.jsp
As you may guess, I work for Isomorphic Software. I don't usually "pitch" our product in the comments of people's blogs, but when I saw your post today, I really thought that SmartClient would be a great fit for you and I had to speak up. Check it out and good luck!