There was a time, not so long ago, when the web was just that, the “World Wide Web”. Times have changed, at an incredible pace, driven by improvements in the availability of high speed networks, and consequently, in the capabilities of web browsers and the breadth and depth of standardised web API’s.
No longer is the web just the “World Wide Web”, a collection of interconnected pages, with the primary purpose of delivering content for consumption towards a given end goal, product sales, driving political agendas, news reporting, knowledge sharing, etc. The “web” now serves (at least) two purposes, the original connected data network, and a very capable application delivery platform.
The Last Bastions of the Desktop Application
There are some common assumptions about what requirements demand (as opposed to prefer) desktop based application development over web based. While some are still real considerations, many are being eliminated, fast.
Any application that relies on access to external devices, beyond the sandbox of the browser, will typically be created as a desktop application. There are some recent movements in this area, specifically around things like Midi. The WebMidi API allows rich access to external Midi capable devices. For those unaware, Midi is a very powerful communication interface and protocol for connecting to electronic music devices. While this appears to be very specialised, what is interesting is the support of the “System Exclusive” messages. These are basically byte streams that can be sent to a device to trigger, typically device specific, actions, including things like recording audio and configuring the device, actions that fall outside the default audio based Midi messages. While it’s a bit of a stretch, it would be entirely possible for someone to create an external electronic device that can be entirely controlled via SysEx Midi messages, meaning browser based control of external devices is feasible now. Enabling Midi and SysEx control of a device requires the user to authorise, much like when enabling support for the microphone or webcam on the host PC, but the important point is, this demonstrates a willingness to consider, under controlled conditions, an API that allows external device control. It’s not a huge leap from this to a new API that is designed for generic control of USB connected devices.
What Does This All Mean?
In real terms, the number of application areas that are exclusive to desktop applications is dwindling fast. Take for example, WeTracker, a music webapp that I recently hacked together as an experiment. This sort of high performance audio application, requiring sample accurate timing of events, would not have been possible a couple of years ago. Now, thanks to the introduction and support of WebAudio, this sort of application is eminently possile in the browser. Moreover, when implemented as a webapp, it’s far easier to take advantage of many other benefits of web based application delivery, such as zero-install/instant update, inherent network connectivity, socialisation, cross platform support, etc.
Ultimately, there is still a decision to be made, but that decisions is becoming more and more fuzzy. I for one, always default to a web based application approach until it proves to be impossible. The delivery and maintenance benefits alone are a huge win.