The Web/Desktop Divide
I love the idea of being able to get to my data from anywhere. The web does this well. I love responsive, powerfully advanced interfaces. Desktop does this well. There’s got to be some way to balance this.
I use web applications. I design web applications. I even architect, program, and support web applications. Building your application on the web creates an open platform, ease of upgrade rollouts, and easy access from anywhere, amongst other things. But as we begin to create more and more complicated applications, I have to believe there’s a better way to use them then a web browser.
For Example
I’ve designed and implemented a few webmail interfaces. I can’t bring myself to use any webmail client, even my own. They just don’t work like they should. Things as simple as dragging a list of 25 messages into a folder are a staple of desktop software, and it brings webmail systems to their knees. Why can’t we program this most basic of interactions on the web easily, and with excellent performance? Here’s your answer: the web browser.
Possible Issues
When it comes down to it, today’s modern web browsers are trying to be, amongst many other things, an operating system. Your computers operating system, be it OS X, Windows, Linux, or whatever, is an application. It’s an application that runs other applications. With web applications running in a browser, now we’re running an application inside an application, inside another application.
While this in itself might be an issue, I believe the real problem comes from the basic understanding that web browsers simply aren’t designed to handle this advanced desktop-like behavior. For behavior in a browser, we have JavaScript. I find JavaScript is simply insufficient for application-like advanced behavior. Perhaps it will catch up in the future, or maybe I’m just not good enough at writing efficient JavaScript, but in my mind, there’s got to be something better.
Solutions
I’m going to propose just a few ideas here, none of which I’m sure will work, nor am I smart enough to implement them. But at the risk of complaining without suggesting, I’m going to throw them out there.
- Make desktop software share data in a standard way. If there’s a way I could get Things to post my changes online, and also provide me an online interface where I could get to my list or edit my list in a pinch on my phone, that would be the best of both worlds, as they exist today. This doesn’t seem to be the most effective solution, as it requires software developers to write desktop versions, as well as online versions. Most can’t even get one of those right, let alone both.
- Improve the web browser. There’s got to be a better way to get application-like behavior out of a browser. This solution, however, seems to put most of the weight on the browser-makers, and most of them are already having trouble keeping up with the fast-pace of advancing technology.
- Invent a ‘browser’ meant for applications. While the most radical solution, I think this provides the best end-result. Perhaps an application that reads XML, formulates a basic interface by default, and has ways (XSLT?) to alter the style, and some other built in functionality to add behavior. Not website-like behavior, I’m talking desktop-like behavior. Now I can imagine that if this was an easy task, somebody would have done it already. And perhaps things exist out there and I just don’t know it.
Wrapping Up
This may be more of a rant than I wanted it to be, but it’s something that keeps bugging me. For now I’ll keep writing, designing, and architecting web applications because I believe in their benefit. I’ll keep using desktop software for many things because it provides a more functional interface. But that doesn’t mean I can’t dream of the day I can have both in the same application.