Behind the Internet of Things (IoT) is a fundamental shift from building new infrastructure and devices for each application to using generic connectivity and generic hardware.
Creating solutions using software is very different from creating solutions using hardware. It’s a shift from long-term planning to rapid innovation. I’ve been reviewing IEEE conference papers on IoT. What is striking is the degree to which the papers are largely traditional whole-system engineering with specially built networks and dedicated devices.
If the term “Internet of Things” is to be useful, it needs to capture the essential property which has made the Internet so transformative: the meaning of the Internet. That is the ability to create solutions independent of the particulars of the infrastructure. It doesn’t matter if we have wires or not. It doesn’t matter if the two devices are adjacent or across the world!
Once the design depends on the particulars of the network and intermediate devices, it is just traditional systems engineering and doesn’t capture the soul of the Internet.
The Internet is a source of generative opportunity because anyone can put up their own website using generic computing and connectivity, and the sites can rapidly evolve. The whole is far greater than the parts.
An Internet of Things is exciting because it takes this generative dynamic and extends it to the physical world. In my house, I can simply connect a lightbulb to a power source and then just define the relationship in software. Unlike conventional bulbs, I don’t need any special wiring. I control it using my own apps without being confined to a predefined connection. All it takes is some software inside the bulb and protocols so I can write software to interact with the bulb. I stress interact not just control.
The software itself is not confined to individual devices. I can write an application that provides light by using multiple sources, including LEDs and the sun (using shades and other mechanisms), to assure lighting for a purpose, and it can use sensors for feedback.
What makes an IoT exciting is that I can create my own connections between devices or, more to the point, applications within and among the devices, without having to invest in special infrastructure. This ability to leverage a shared infrastructure is very powerful.
A Powerful Idea
The key idea at the heart of the Internet is the complete separation of packets from their meaning.
The term “powerful idea” is used to refer to a simple idea that has profound implications. The idea that we can encode data in bits now seems obvious but the ability to send those bits as packets independent of the meaning has major implications.
Think of a harbor. The amount you can ship depends on the depth of the water. If you increase the depth of the water it raises all boats. You don’t have a different kind of water for each boat.
The harbor metaphor is a good place to start because the idea of fungible containers isn’t confined to the Internet. The container shipping industry demonstrates the power of using standard containers for shipping.
Decoupling the transport, AKA, the network, from what we do with connectivity has a number of benefits:
The constraint that applications cannot depend on the particulars of the network seems to pose an insurmountable problem because some applications require assurances of high capacity and reliable, timely, delivery of each packet.
For an engineer designing a solution this presents a problem. It requires stepping back and rethinking the statement of the problem being solved.
The constraint also creates problems for the network owner who no longer knows who the customer is and has no way to add value if it doesn’t matter if any particular packet doesn’t make it to the destination and there is no way to differentiate itself.
It’s no surprise that the papers and policies I've seen are based firmly on traditional engineering approaches. But if we are to embrace an Internet of Things we need to think very differently.
Rather than trying to engineer
VoIP (Voice over IP) offers a telling example. In the 1990’s people like Alon Cohen discovered that by using clever algorithms they could carry on conversations using the Internet. It was a surprise; telecommunications experts knew that voice required a special network. Even Alon was surprised at how well it worked.
But it works in a very different sense. The traditional implementation of telephony guaranteed voice quality. There are no guarantees for VoIP (sometimes called QoS for Quality of Service). This seems to be a severe disadvantage until you realize that the telephone network does fail as when there is a circuit busy because the limited resources have to be reserved for the highest bidder. And sometimes calls get dropped. It is just that the metrics have changed and now we acknowledge failures instead of ignoring them.
VoIP is actually very different from traditional telephony. If we were simply reimplementing traditional telephony on top of the Internet it wouldn’t work. Well, actually it does work but only because the capacity of the Internet is now so great that we can assume our ability to have conversations and, not only voice, but video. This is another reason why it’s easy to presume, or perhaps pretend, that we can apply traditional engineering approaches.
Local connections between devices might use wires or wire-replacement protocols like Bluetooth. From the perspective of IoT those are internal connections. The key is in the architectural boundary between the generic packet connectivity, AKA, the Internet, and the end points whether devices are simple or complex.
Software is not just a component. It represents a different way of approaching problems and building solutions.
The term Internet of Things focuses our attention on the devices and the ability to use software to interact directly with physical objects. This ability to reach beyond the screen is indeed exciting and empowering.
What gives the device its capability is the software on the device. Many devices, like smartphones, are really platforms of applications and it is those applications that cooperate. Those applications are like web pages that aren’t tied to a particular piece of hardware. Just as relationship between end points are decoupled from the path between, they are also not tied to the particular device. If I’m going to turn on a light I can do that from any device running the software rather than having to carry a single smartphone for all purposes as my proxy.
For software, the API (Application Program Interface) is akin to the interface to the network. In fact, the network itself is simply an interface for forwarding packets. Other APIs provide access to information such a city’s train schedules used in navigation applications.
It is useful think about the Internet as merely another API that gives us the ability to send packets to another device. These APIs represent architectural boundary points.
Viewing these APIs as resources rather than layered dependencies contributes to the flexibility and resilience
This is very different from the traditional approach of layered engineering, which is dependent upon every element of the system being precisely engineered for one application.
This means, for example, that instead of carefully crafting smart cities we need to provide capabilities for connectivity and rich information such as train schedules.
An Internet of Things
An Internet of Things is exciting. As infrastructure, it provides us with the ability to innovate by removing the need to negotiate with intermediaries and others third parties.
When I look at papers or proposals related to IoT I will look for how such efforts are innovative in creating opportunities and take advantage of them. For hardware, I will look for new capabilities to connect with the physical world but, more important, I will look at how software is used to put it all together.