As we moved from the Web 2.0 era into the “mobile-social” era and now into the “Internet of Things,” the same principle continues to hold true. Applications live on the Internet itself—in the space between the device and remote servers—not just on the device in the user’s hands. This idea was expressed by another of the principles I laid out in the paper, which I called “Software Above the Level of a Single Device,” using a phrase first introduced by Microsoft open source lead David Stutz in his open letter to the company when he left in 2003.
The implications of this principle continue to unfold. When I first wrote about the idea of software above the level of a single device, I wasn’t just thinking about web applications like Google but also hybrid applications like iTunes, which used three tiers of software—a cloud-based music store, a personal PC-based application, and a handheld device (at the time, the iPod). Today’s applications are even more complex. Consider Uber. The system (it’s hard to call it an “application” anymore) simultaneously spans code running in Uber’s data centers, on GPS satellites and real-time traffic feeds, and apps on the smartphones of hundreds of thousands of drivers and of millions of passengers, in a complex choreography of data and devices.