Web App Hell

Long before the shiny world of Ajax appeared, I lamented (in my typically curmudgeonly fashion) to anyone who'd listen that a web browser front-end is not necessarily the cure-all salve that a lot of people seem to think it is. I still think this is a valid point of view, however.

Firstly, let's look at why you'd use a browser as a UI in the first place.

I'm going to dismiss the first one out of hand. Basically, if you're writing something for other people to use, your first thought should not be "how do I make this easy for myself?". Instead, you should consider how easy it's going to be to use. This is, I think, a principal failing in a lot of UIs, and web UIs in particular: how, for example, does your built-for-one-entry workflow cater for someone who needs to enter 200 line items in one go? Are they going to have to walk through a 5-step process for each of the 200 items, or did you provide them with some sort of batch upload/update facility? As I say, this isn't a uniquely web-UI problem, but it is one that tends to be more visible in web UIs due to the limited range of input widgets available in your average browser.

Which segues nicely into the second item: HTML input widgets were pretty much standardised circa 1994 and haven't moved on since then. You get radio buttons, checkboxes, a variety of menus (pull-down and scrolly, the latter with or without multiple selections), a plain text line input box, an obscured text line input box (that'd be a password box), a block text input area, a file upload box (which looks curiously like a plain text line input box), a selection of buttons (nominally submit and reset, but you can do a bit more with the submit button), and images, which can either act as pretty buttons, or as input-based-on-where-you-click (aka imagemaps). You want anything else, you have to build it by hand. As long as this meagre selection of widgets fits your needs, your UI will indeed be universally accessible, and will even look sort of native on each platform it runs on.

But nobody does that. Everyone wants a little more, and really, you can't blame them. The single biggest omission from the widget list, IMHO, is the combo box: a single line input box with a drop-down menu attached to it. Or a drop-down menu that you can type into, if you prefer. So people try to create widgets to compensate for the lack of same. And in inventing these rotary transport devices (which I shall call "wheels", a truly unique innovation), they almost invariably screw up in one of two ways:

The latter is a major contributor to the volume of text that has been written on standards compliance on the web: if people actually complied with the standards then all this stuff would have some hope of functioning sanely regardless of the choice of browser. This isn't so, and complaining about it won't make it so, regardless of what the rabid hordes of Firefox devotees (and I'm one of them) will try to have you believe. The majority of the web-consuming population is still using Internet Explorer, and to paraphrase Linus Torvalds, they may not like it, but they use it because they don't care. An uncaring user will try to use your hand-crafted web UI, find that it breaks, and will really not give a damn that it's because their browser doesn't follow standards: they'll just write off your app as something that doesn't work.

What of the former? This is actually a far bigger deal than a lot of coders think it is (I'm generalising here, but in my experience, coders can't write UIs and UI people can't code). Basically, the native widgets behave in a particular way, and your hand-crafted widgets must follow that behaviour or you will frustrate your users. And let's face it, are you really going to have your application figure out which OS you're on, and apply appropriate modifications to your widget? Wait, isn't one of the benefits of a web UI supposed to be OS independance?

I do understand the broad benefits of using the browser as a UI. I don't need to run some cheesy piece of windows-only software to access my bank account. I can read my news feeds from any location with web access without having to carry around config files with me. I will happily agree that there are circumstances under which a web UI makes things easier, all the more so with the whole interactivity brought about by the (re)discovery of asynchronous HTTP requests (what the cool kids are calling Ajax). However, I'm also firmly of the opinion that some things are better left to a command line, or a customised app, or at the very least some class of remote calling interface so the geeks among us can hack up something that does the job without requiring an 800lb gorilla of an application to display a half-dozen columns and a few buttons.

Click 'Back' to crash your browser.