The grand vision for human-computer interaction in recent years has been mobility: Users with lightweight, low-power “dumb terminals” communicating with cloud services via ubiquitous and speedy wireless connections to perform every computing task imaginable, from email and web surfing to more computationally intensive tasks such as video editing and big-data analytics. All of this, of course, would be courtesy of the cloud; there would no longer be any need, outside of perhaps gaming, for laptops and desktops with super-powerful, multicore processors.
We aren’t there yet, but we are trending in that direction. Hence the movement in software development towards web apps and away from native desktop apps.
The Advantages of Web Apps
From both a business and technological standpoint, there are numerous advantages to developing software for deployment as web applications:
- Predictable computing resources. With a web app, any computational heavy lifting can be performed on cloud servers, whose specifications and capabilities are part of the overall application design. No more worrying about whether your app is going to bring your users’ machines to a crawl or require them to buy more capable hardware.
- Easier updates. Users don’t have to download and install the next version of the software. In fact, they don’t have to install any version of the software; they just open the app in a web browser and they’re done, with instant access to the latest version.
- Better monetization model. With native desktop software, the user buys a license that is typically perpetual: the user owns it forever and can keep using it as long as there is hardware to support it, and the software company sees revenue only when there’s a new version to sell. Web apps aren’t purchased; users pay a recurring subscription fee for their use. This model guarantees a steady revenue stream.
Given these advantages, it might seem that native desktop development would have been abandoned long ago.
So why isn’t everyone running around with Chromebooks or other minimally capable devices?
It turns out there are some ways in which native desktops still have advantages over their web-based counterparts. For example:
- Works offline. The cloud model doesn’t work very well on airplanes or in other places where network bandwidth (wired or wireless) is spotty or nonexistent. Even progressive web apps, which can support some offline functionality, need to “phone home” at some point. An app that requires cloud file storage may be a dealbreaker for users whose bandwidth doesn’t support fast file uploads.
- Better access to local resources. Native desktop apps have a much easier time than web apps in leveraging hardware resources on the local computer, such as USB-attached devices, graphical processing units (GPUs), and Bluetooth transceivers.
- Better access to OS features. Native desktop apps can use OS resources such as the notification system, registry, and other features that are difficult or impossible for web apps to access.
Making a Choice
Reports of the desktop app’s demise, therefore, are premature; there is, at present, still a place in this world for the good ol’ desktop app. The choice to build an app as a web app or a native desktop app (or both) usually is going to be a business decision. What are the development costs in relation to expected revenue? Will eschewing a desktop version drive customers to competitors, not just for this application but others as well? To what extent could code be shared by both versions? Would a progressive web app be a happy compromise, or would it still lack critical features and functionality?
We at AndPlus understand the advantages, disadvantages, and tradeoffs of both approaches, and we have the know-how to build either one. We often help our clients make the choice by analyzing the requirements and user journeys. Bring us your ideas—we can help steer you in the right direction, too.