The Philosophy and Motivation Behind the Object Network.
If the Real and Virtual are to merge, we should program the Virtual the way Reality works..
This document explains why the Object Network is designed the way it is, with objects as collections of properties, links between objects and observation between objects of their property updates.
To many of us who have been in this business of computer innovation and futurology for many decades, the Internet of Things and Augmented Reality are old friends, long-awaited. There are different terms for varying aspects of these: Ubiquitous Computing, Pervasive Computing, Embedded Computing, Virtual Reality, Modelling, Simulation, Wearables, 3D Printing, 3D Projection, Mobile, Automotive, Environmental, etc.
What we've always seen is how 'computers' are not really doing anything of the sort - they're not actually predominantly 'computers'! Ever since they started computing payrolls and ballistic trajectories and science stuff, they've actually been modelling the real world and yearning to be a part of it.
The destiny of computers is to disappear! If they reach their potential, they'll simply merge seamlessly into our environments and surroundings: we won't consciously know or care if we're interacting with reality or "virtuality".
If that's what's going to happen, we obviously have to understand how reality itself works, in order that we can program computers the same way.
Look around you - you're surrounded by mostly-static stuff. It does change, it does interact, but mostly it just 'is' - so that 'beingness' is the first thing we should be able to model when we program the virtual. Stuff has properties and sits alongside more stuff, and above all it persists. We can refer to distinct things, objects, etc, and those objects are connected to others one way or another.
Some stuff quietly evolves by itself, perhaps under the influence of environmental factors. Taps drip, water evaporates, we go around and around the sun and the moon goes around us. Some things directly interact and cause each other to change state. If the sun breaks through more, the water evaporates faster. A ball hitting a garden gnome knocks it over and the ball bounces away.
So "things changing state due to the influence of the states of stuff around" is part of our reality, and we need to be able to model that, too. Properties depend on other properties, perhaps relations between things may change - the gnome fell off the edge and into the pond, so it now has different connections to other objects.
One important feature of reality is that everything is an equal peer interacting with equal peers, everything determines how its own state will evolve by itself, anything can be a Thing at the finest level of granularity.
The Object Network follows this way of modelling the world, so that your Things can slip easily into their environment. This programming model is reality-based, not machine-based, so is a more natural way to express state and its evolution or behaviour.
Imagine first that everything around you, whether real or virtual, has a unique universal identifier like a web URL. That gnome, the tap, the sun, the ball, all have such identifiers.
Now imagine their properties - sun brightness and heat, ball speed and direction.
Now their relationships: the ball links to the gnome's identifier, which links back, the gnome first linked to the concrete, now to the bottom of the pond, which each link back in turn. The water links to the sun. The sun probably doesn't link to the water. Ultimately, everything links up in a global mesh or web.
That's the static stuff - the way things are. Now we need to model the dynamic dependencies: the water level property is falling at a rate that depends on the sun's heat property, visible through that link; the gnome changes state from edge to bottom, perhaps with properties of dry and warm becoming wet and cold, when the ball's location and speed properties are such that it is knocked and falls into the pond.
This dependency modelling is achieved through objects observing others: if the state of the sun changes, that gets notified to the water so it can re-evaluate the effect on its properties.
The interface between real and virtual is achieved through input/output devices - sensors and actuators and user interfaces. Inputs take real-world state and set corresponding state on virtual properties, outputs do the reverse.
The Object Network is designed to empower ordinary people, in a number of ways.
Firstly, it models the world in a natural way, without all the inner technical detail that come with other approaches to modelling, simulating or programming. A lot of the skill of traditional programming is in taming or harnessing these inner workings of the computer. The Object Network takes much of that away, leaving you to focus on just the essence of what's important to you.
Second, you have much greater visibility of your stuff and other people's stuff. You can see things change and react to each other, and can explore the global network of objects and things by simply jumping links between them.
The Object Network works peer-to-peer, in a decentralised way, without dependencies on central servers - objects talk directly to each other. The state of things emerges and settles without any lock-step central control. It's all local - you can run programs on your watch, your AR glasses or on devices around the house, as well as on remote servers.
It's also all open - open standards, open data, open source - so you're always in control of what you own.
The Object Network is programmed in a very simple, accessible programming language that is easy to pick up, especially if you've used spreadsheet formulae, created web pages using CSS, or written SQL queries. The rules you write express the dependencies of an object on the states of other objects. When you change a rule, you can immediately see how the object animated by that rule now behaves. You don't depend on others to write the programs you want, and you don't need a degree in computer science to do it.
Contact me and/or subscribe to my blog and/or follow me on Twitter.