The legacy Internet of PCs has been largely built on two dominant operating systems: Microsoft Windows and open source Linux. Those operating systems provide software platforms that offer a standard foundation upon which a full software ecosystem and industry has emerged on the client and server sides.
Similarly, the mobile Internet of tablets and smartphones has also been built upon two dominant software platforms: Apple iOS and Google Android. Furthermore, the mobile Internet has set a new standard for usages and business models based on mobile applications and their associated services in the Cloud (Figure 1).
In order to enable smartphone-like app-driven business models and usages for the things that are connecting to the Internet, a specific dominant software platform has to emerge. This new platform has to be deployed on the billions of devices connected to the Internet of Things (IoT). There are two main reasons for that:
The devices comprising the IoT may or may not have direct interactions with humans, but most will require the capability for on-field download of applications from the Cloud, whether apps come from the OEMs (device manufacturers) or third parties.
The key to large-scale deployment of app-driven usages and business models is the emergence of a strong and large community of application developers. All applications have to target the same platform so that they can be deployed across various devices/things (from the same or different OEMs).
One could think that mobile operating systems like Android could power those IoT platforms, but such operating systems do not match the economic—and resulting technical – constraints that drive the IoT space. Just as Windows and Linux PC operating systems could not scale down to the mobile space, iOS and Android mobile operating systems cannot scale down to the IoT space. Table 1 shows the reasons for this.
Table 1: IoT Economic Considerations
The things in the IoT are expected to be deployed in the range of billions of units, with much lower capital and operational expenditures than PCs and tablets/smartphones.
Today’s costs of hardware and software platforms for PCs and smartphones/tablets do not allow the deployment and exploitation of billions of devices in a profitable way.
Table 2: IoT Technical Considerations
As Table 2 indicates, in order to match the economic equation of the IoT, devices deployed on the Internet have to run on smaller, slower, cheaper hardware and software platforms. Such platforms are typically powered by microcontrollers (MCUs) that can cost down to $1 per unit (compared to as much as $100 for high-end CPUs).
Cloud Connection Chasm
However, in order to enable smartphone-like app-driven usages and business models for the IoT, devices have to connect to and interact with Cloud-based infrastructures and services, and thus support technologies and practices coming from the IT world. That includes business services, protocols, standards, middleware, software programming languages and development tools. Supporting those technologies and standards is especially important for interoperating with business services in the Cloud. It is also key to building a significant community of application developers, as the large majority of software programmers are in the IT world (approximately 10M developers).
Unfortunately, there’s a gap between IT-level software technologies and deeply embedded legacy technologies mastered by a smaller community of experts (approximately 100K developers). These legacy technologies are often specific to each hardware — and associated software — bring-up environments. The IoT promise of billions of devices connected to the Internet implies that mainstream software technologies and practices from the Cloud and mobile Internet be successfully adapted and applied to the deeply embedded world.
Figure 2: The only way to get to large-scale deployment of profitable IoT devices and services is to preserve the power and efficiencies offered by IT-world solutions while adjusting their use and deployment to the cost constraints and resource limitations of embedded software