Tuesday, 07 June, 2005

Why I don't like browser apps

I've never been a big fan of browser based Web applications.  Programs that run in the browser suffer from a number of major drawbacks, any one of which should discourage developers from writing browser applications.  When you consider all of the drawbacks, I find it inconceivable that anybody would seriously consider distributing a browser app.

The most obvious problem is platform incompatibility.  When developing a browser application, you have to decide which browser versions you want to support.  Will it be just Internet Explorer 6?  What about Firefox and earlier Internet Explorer versions?  Will you want to support Opera, Netscape, or Safari?  Once you've decided on a platform, then you need to determine if you'll write to the lowest common denominator (the subset of functionality supported by all of the selected browsers) or if you will support browser-specific functionality.  Whatever you decide, you have to be willing to accept that your application will look and probably operate slightly differently in each different browser.

Backward compatibility is another issue that you will be faced with.  The major browser development teams make an attempt to support old functionality in new versions of their browsers, but their track record is less than stellar.  Many a Web application has broken with the introduction of a new Internet Explorer version.  One can argue that operating system version upgrades also introduce incompatibilities, but I've never seen a Windows upgrade break things to the extent that I've seen an Internet Explorer upgrade break Web applications.

If the above doesn't dissuade you, consider the user interface nightmare that's inherent in a browser based application.  First, there are two menus:  the browser's menu and the Web application's menu.  It's possible, I guess, to combine the two into a single physical menu, but that will confuse your users almost as much (perhaps more than) having two menus.

Then consider the effect of hijacking shortcut keys.  In Internet Explorer, for example, Alt+D moves the focus to the address bar, and Alt+Left Arrow is the keyboard shortcut for the Back button.  Those are just two of the many keyboard shortcuts that I have come to depend on in Internet Explorer and Firefox.  Browser applications, though, hijack or disable many of the shortcut keys.  I'm not sure if it's the J2SE Runtime Environment used by Internet Explorer or the DigiChat software that runs under it, but something hijacks those keyboard shortcuts.

As if that's not enough, control tab order is goofy, page load and unload events have unexpected side effects, scrolling is weird, etc.  In general, browser based applications try to look like client applications, but little differences combine to make them slow, clunky, confusing, and unpredictable.  I can't understand why users put up with them.

And that's the frustrating part.  Users will complain about browser based applications but they still used the darned things.  It's just so much more convenient to allow automatic installation of an ActiveX object or Java applet than to download and install a rich client application.  Microsoft has attempted to address this with their zero-impact deployment of client applications in the .NET Framework, but that initiative is stymied by the relatively small installed base of .NET systems.

Browser based applications are, unfortunately, the only reasonable method of providing rich Web-based content.  I am of the opinion that the inherent problems in the platform outweigh any perceived benefit of such applications, but I also realize that I'm in the minority.  In my experience, both from the user's and the developer's perspective, browser based applications aren't worth the trouble.