The software technology industry is like an ants’ nest. From up close, everything seems random, chaotic, and purposeless, but as we zoom out, pattern, order, and purpose begin to emerge. At least, this is the way I see it. While I love to get very close to the smallest details, once in a while, I like to step back and see how we, the software industry, came to where we are in order to better understand where we are going.
From the beginning of software, the two main characteristics of an application that are often opposed to each other are richness (i.e., application function and experience) and reach (i.e., application distribution and access). A model in which both of these characteristics are maximized has always been seen as the Holy Grail of software development.
If we step back and look at the evolution of the software application architecture over the last 20 years, based on these two core characteristics, we can plot the journey of the quest for this Holy Grail on a decreasing sinusoid depicting five generations, as shown here.
Past Generations (from Mainframe to Web)
The chart speaks for itself. We started with the Mainframe model (1st Gen), with everything on the server but the keyboard and [green] screen, which resulted in low user experience but high application access.
As desktop computing became mainstream, the Client/Server model (2nd Gen) emerged, moving all application logic to the client side, trading application distribution for higher user experience. This gave birth to the suite of productivity applications we still use today, such as Adobe Photoshop, Microsoft Office, and Autocad.
As the Web started to be recognized as a new way to publish and share content, it started to get used for application (3rd Gen) as well, and its usage and enhancement quickly escalated ( Web 1.x, Web 2.0/Ajax) to provide what the Client/Server model was not suited for: instant access and update of a server-driven application with relatively decent interactive user interfaces. Google and Mozilla are probably the two top organizations that have insatiably pushed the limits, to this day, of what is possible in this model.
Current Generation (Mobile Apps)
This is when things got interesting. Though we believed that the Web was going to be the future of application development and distribution, the iPhone popped out from a genius’ brain, which not only kick-started a new generation of computing devices (i.e., the “touch era”), but also initiated a new way to build, distribute, and monetize applications, referred as the Mobile App model (4th Gen).
As with every new generation, the new Mobile App model (or Client/Server 2.0 model, as it applies to all device types) does address some of the limitations of its predecessor, the Client/Server model, by providing a more efficient platform for users to discover, install, update, and pay for their applications, which created a very prosperous environment for this new type of application.
The Mobile App trend is very well entrenched nowadays, especially for consumer applications, as many angels and VCs continuously remind their followers. However, it is not the end-all, be-all, as it has inherited some of the greatest limitations of the Client/Server model, which are platform dependency and application deployment frictions.
Regarding platform dependency, “going native” means going OS-specific. This might be an appropriate strategy for games or a mega-social software company like Facebook or Linkedin, as their cost of production is negligible compared to their adoption benefits. However, for most enterprise and social software application providers, forking development, teams, innovation, and distribution is a very costly proposal, especially for established companies that already have a relatively successful Web presence.
The biggest limitations of this new app store model come from its client/server heritage, as application updates are still user-initiated (as they should be), which increases the support cost (especially when server API are involved), as well as a newly-introduced application distribution friction that has been highly exacerbated by exclusive and over-controlling application store rules such as those maintained by Apple and Microsoft’s app stores.
So, while mobile apps definitely make sense for games or even newly-formed mobile-first companies that need to differentiate themselves from already-established cloud services, what initially made the Web so much better than the Client/Server model for some type of applications, is still true today in respect to the mobile apps era, which is where the next generation comes in.
Next Generation (HTML5 & Hybrid)
As the software market was getting stormed by mini applications, the Web also went through a transformative evolution, under the HTML5 moniker. During this time, the biggest Internet technology providers such as Mozilla, Google, Apple, and even Microsoft began fiercely competing on compliance and performance of a single spec, HTML5. As of today, every single browser vendor provides highly comprehensive HTML5 support in its latest browser, and HTML5 adoption is on an exponential curve (thanks to Microsoft’s latest IE10 move).
The truly disruptive aspect of HTML5 is that, in a world with an ever-increasing number of devices, HTML5 has become the only truly cross-platform application environment, which not only provides a way to build best-of-devices experience with a single application code, but—with the right HTML5 architecture and expertise—can also be used to distribute the same application code online via the Web or packaged via any app store. Best of all, the momentum behind HTML5 seems to be just beginning, as the biggest market players, such as Google, are doubling down on HTML5 every year, becoming almost another form of Moore’s law.