Taxonomy of Mobile Application Platforms

September 2013 Draft

Status

This is a draft, work-in-progress analysis derived from the “Closing the Gap with Native” Headlight task force.

Introduction

The many mobile ecosystems available on the market today provide a number of different development approaches for applications.

The fragmentation created by that diversity of programming languages, SDKs, packaging formats has brought to the front the possibility to use Web technologies as a way to address as many platforms as possible.

The mix and match of Web technologies and so-called native ones have led to many comparison between these different development approaches, often refered to as Web applications, hybrid applications and native applications.

But the boundaries between these various approaches are often at best ill-defined. This document proposes a taxonomy of these different approaches to ensure a common vocabulary can be used in making these comparisons.

Taxonomy

We define the following terms to help navigate the many ways in which Web technologies are used to develop applications on mobile:

Mobile application
An application that runs on mobile devices
Web application
An application entirely built with Web technologies
Default technology stack
Set of technologies provided by a mobile operating system to build applications
OS application
An application built with the operating system default technology stack
Web-based operating system
An operating system where OS applications can be developed using only Web technologies (even if the default technology stack goes beyond the Web)
Native application
An OS application that uses non-Web technologies
Browser-based application
A Web application that can be run in a browser
Web-OS application
A Web application that runs in a Web-based operating system
Hybrid application
A native application that is developed partly with client-side Web technologies; this ranges from a Web app simply wrapped into a native packaging, to a mostly native app that uses HTML/CSS rendering in a few places
Should this also introduce hosted/packaged apps? Is that another continuum?
Alternative model: OS apps become native apps, and there is thus an overlap between native and Web
Diagram positioning the various approaches in using Web technologies to develop mobile apps
A taxonomy of the various approaches available to develop mobile applications with Web technologies
Is there really a hard line between browser-based apps and Web-OS apps? shouldn't the latter be a superset of the other instead? should this include the notion of privileged APIs and hosted vs packaged? In any case, the different border for "in the browser" vs "os packaging" seems redundant; "browser sandbox" would probably be more relevant to express the distinction on privileged access.