Web vs. Desktop Applications
The web seems to be winning against desktop applications. Not everybody likes this, of course, and it’s always hard to predict the future, but it seems unlikely that the local computer (or should I say device?) will be where the action is in the future.
Some declare the game to be already over, but that view is not shared by everyone. The future is neither easy to predict, nor is it evenly distributed. Here is an overview of the different opinions towards this topic.
Direct Opposition
Microsoft engineer Michael Braude argues that he will never be a “web guy”, because he perceives web programming as fundamentally inferior to “real” programming on the desktop. This technical inferiority attracts inferior programmers who he does not want to work with. He even goes so far as to say that web programming is making us stupid.
Michael seems to ignore that web programming not only consists of the front-end in the browser, but that there is also a back-end where you can do most of that stuff that he finds interesting: writing to disk, spawning threads, using strong typing, and so on. Apart from that, he sees two main problems in developing web front-ends: browser incompatibilities and lack of tools.
If you are only working in a walled garden, you don’t have to deal with incompatibilities. But building true cross-platform desktop applications is not exactly easy. (By “true” cross-platform I mean apps that really integrate into the look-and-feed of the OS and not some Java Swing stuff.) Also, the compatibility situation is improving. The vendors – maybe except Michael’s employer – seem to be really working on good standards support.
The tools-support for web-development might not be as seamless for some desktop-environments, but it’s getting better. Firebug, for example, is an awesome tool for debugging both CSS and JavaScript.
Neo-Desktopism
Another theory what the future may look like is Neo-Desktopism (although that term doesn’t seem to have caught on).
Neo-Desktopism is the belief that the web browser as an end user facing application platform is ultimately an evolutionary cul-de-sac. The goal of Neo-Desktopism is to evolve traditional desktop application technologies … to a point where they can float free of a physical local client installation, deploying on demand just like web pages.
This seems to happen more on mobile devices than on desktops. Sure, there are technologies like Java Web Start, Adobe AIR, or Microsoft Silverlight, but do they actually matter? Even Microsoft’s own Office Web Apps are apparently build with HTML and JavaScript, with Silverlight only providing some optimizations.
Don’t underestimate the web
Many of the criticisms of web-based applications argue that you cannot provide the same usability as on the desktop. In his keynote at Google IO Vic Gundotra tells an interesting anecdote about his time at Microsoft. They thought that web apps could never rival desktop apps and used map software as their standard example for usability that could not be reproduced inside a browser. Then along came Google Maps.
Jeff Atwood tells a similar story – incidentally also about maps – where he noticed that his wife used Google Maps instead of Streets and Trips that they had used for a long time. The surprising reason was better performance. Jeff goes on to note that Google Maps does not only provide the same functionality, it is even easier to use. He concludes that desktop applications are dead, and that “all the innovation in user interface seems to be taking place on the web, and desktop applications just aren’t keeping up.”
Indeed, there is some innovation going on in web-based UIs. The demo of Wave is an impressive example of what is possible with the HTML5. Bespin is an experiment from Mozilla Labs trying to create a web-based code editor. While this is far from complete, you can already use it to play around and see what is actually possible with modern browsers.
But the advances in usability do not only come from more powerful browsers and web applications emulating the features of desktop apps. There is also the trend of embracing the constraints of the environment to create software that is easier to use than the competition from the desktop. 37signals is a compony that championed this approach with their project management software Basecamp.
Who cares about applications, anyway?
The debate of web vs. desktop however focuses on how the things we know as applications today will be done in the future: editors, spreadsheets, photo editing, and so on. These applications won’t go away, but more important for shaping the future are the things we never did on the desktop. We usually don’t think of wikipedia, twitter, google search, etc. as applications, although they are obviously powered by applications.
One of the key points in Tim O’Reilly’s original article about Web 2.0 was “Data is the Intel Inside”. Software is more pervasive than ever, but it gets relegated to an infrastructure role. Like plumbing, software is everywhere, but it’s not noticed unless is fails. When using a forum, for example, do you care, if it uses phpBB or YaBB, or whatever? What matters is, if there is interesting content and interesting people. This data-oriented thinking does not apply equally to everything, but it is important to keep it in mind.
There are valid reasons for concern about a future where most applications are web-based: Security, privacy, ownership of data, but nobody cares how software is written as long as it works.
As programmers, we have a certain influence on the stuff that we write, but we don’t have much influence on software that we do not write. If you are against web programming, what do you do to stop that particular future from becoming more evenly distributed?
