[This is a follow-up post to "Internet of Things or Thing on the Internet?"]

The metaphor "Internet of Things" stands for the next wave of expansion of scope for distributed systems.

We started the journey with centralized systems, single computers, that you had to walk up to and control with switches and that were later able to be fed with batches of punch cards allowing distributed creation of jobs with centralized processing. We then took the step of introducing the notion of terminals; remote control screens that allowed immediate interaction with the central computer by allowing interactive composition of jobs that were then fed into processing. The advent of PCs and PC-technology based servers and later smart phones then led to a decentralized landscape where personal functions are personal and shared functions tend to live at an appropriate scope for the respective audience, may that be a work group sharing on a department server, a company sharing in a datacenter, or the general public sharing on a public web site.

Cloud-based systems are increasingly challenging this model as personal data gets held and processed in the cloud since people now increasingly own multiple digital devices, work groups are becoming less dependent on particular locations, and companies realize the advantages of lower operating cost when they delegate work to cloud providers.

What has remained stable across most of the waypoints in this journey since the introduction of terminals is that there is, in the majority of systems, some form of human interaction through a human-machine-interface, motivating actions in a program at an appropriate scope, and the resulting output is presented to the same person or someone else through another such interface. Information flows. That information flow can be fairly immediate as with myriads of database-frontend applications, or far decoupled as with a cash register clerk's input (even by way of a scanner) ultimately rolls up into a cell of a financial balance sheet in Excel. Ultimately, the vast majority of software developers has so far built pure information technology systems. People put data in, and people get the same or a transformation of that data out. Put differently, information technology systems are intermediated from the physical world through people.

"Internet of Things" is a metaphor for an evolved kind of systems where that intermediation is removed.

Instead of a human observing the state of the physical world and submitting that observation into a system – which obviously can take the form of pointing a camera at an object, so we're not talking about keyboard input – we allow systems to make such observations for themselves and on a continuous basis. We're giving systems eyes to see, ears to hear, and noses to smell and sense pollution, and other senses to feel temperature, humidity, acidity, atmospheric pressure, vibration, acceleration, orientation, altitude, or geographic position.

These senses manifest in devices, aptly named sensors.

We're also giving systems the power to change the state of physical world objects as a result of these observations and additional inputs. Aircraft auto-pilot systems have long been implementing actuation of control surfaces based on sensor observations and many advanced military aircraft types would not be flyable at all without such digital avionics. Autonomous vessels and vehicles operate in the same fashion.

But even in scenarios that seem to be human-controlled at first blush, such as unlocking a vehicle just borrowed from a car sharing service with a smart phone app gesture, the decision whether the car will indeed unlock is made by the car sharing system based on an authorization verification and subsequent command routing decision to the right vehicle. A person pushes a button, but the actual unlock command is issued by the system based on a decision sequence.

Having (remote) systems be the judge in decision making, especially around authorization, will also be important in many scenarios where the mainline communication occurs peer-to-peer. You may interface with digital tools like a projector and a digital whiteboard in a conference room or a game console in your entertainment rack in a peer-to-peer fashion for optimizing latency, but the matchmaking will commonly aided by a system that helps ensuring that only authorized and trustworthy people can participate in the peer-mesh, even if they all happen to sit in the same room.

The role that these devices, including the car's telematics box interfacing with the CAN bus, play towards the systems is that of "peripherals". That's is obviously a very well-known concept for which we have very-well understood models of how we attach input sensors like mice and keyboards or actuators like printers. What the "Internet of Things" changes is that these peripherals often become attached over long-haul links, and are not attached to singular computers but to distributed systems. But in principle, the telematics box in the car or a light pole on the street are not different from printers from an architectural perspective.

What they also share with contemporary printers is the ability to communicate their current condition. A modern ink-jet or laser printer will always let you know when it is a good time to go to the store and buy fresh Original Brand™ ink or toner as the supply and it will do so via telemetry information sent to the computer hosting the driver.

What "Internet of Things" changes quite radically is the ecosystem breadth and diversity. There are many protocols and standards and systems and it's not like the operating systems made by two or three dominant players get to call the shots on how all devices are communicating, because there are very many modes of communication and broadly varying scenarios. Diversity will be the norm and there will be plenty of innovation on the communication front challenging the status quo.

The key innovation of the "Internet of Things" concept is that we're equipping distributed systems with senses that allow them (their programs) to acquire information in a self-motivated fashion, to make decisions, and to actuate things in the physical world as a result. Systems are the focus, not the things. The things are peripherals.