Why I Believe The Object Network Needs To Exist.
I believe that computers are truly "magical clay" and that they represent an unprecedented step forward for humankind's evolution, unlike any other technology we've created. They bring sharper meaning to the saying "any sufficiently advanced technology is indistinguishable from magic". Computers are the ultimate magical technology.
Computers model the world and their destiny is to merge seamlessly into it. Ever since the first wordprocessor which tried to look and feel like a real sheet of paper, with black ink on white background, computers have been trying to be inconspicuous and intuitive.
The logical conclusion of that is the seamless merging of the real and virtual, when computers become embedded and ubiquitous. This is where the Internet of Things and Augmented and Virtual Reality all blend into one pervasive technology.
For that to happen easily and smoothly, we're going to have to feel in control of it all - to be able to see, touch and mould the magical clay. If we depend on inscrutable Others and their inaccessible technologies to host and run the virtual part of our reality, we'll never truly trust it. We want to be able to get in and play with, hack and fix it ourselves, it's human nature.
There are a couple of things we need to do to give us all power over the magical clay: we need to be able to model our shared virtual world and the stuff around us in a natural, realistic and intuitive way, and we need to be able to easily program our stuff ourselves, even if we're not programmers.
Look around you - there are objects with properties and relationships to each other. They have a current state and that state, and those relationships, evolve. I believe that we can most naturally model the world by modelling such state and links between stuff, by describing the way things are. Data, in other words, like spreadsheets, databases, web pages. State exists: we can touch, see and change it, we can pass it around. Better still, we can pass links to it around (like web URLs).
Data can link to other data, in the same way that real stuff sits next to and interacts with other real stuff. Imagine a mesh of linked-up data that overlays the world around us. Almost everything real can have a virtual form, and there can be links to purely virtual data objects, too.
We should use the Web as our model: you don't need to download an app to be able to visit and interact with each individual website. You just need a link. We just need links in a global mesh of data objects, some owned by us and our families and friends.
Crucially, a cricket bat doesn't need to consult a central authority to work out how to interact with a ball - everything interacts directly, peer-to-peer. Our computer systems should also work that way, with interactions between linked state or objects occurring directly between those objects, whoever owns them on whatever device.
We should stop and ask: "How can we leverage the power of the computer itself to wrap those complex mechanisms in whatever it takes to bring the power of the machine under the control of non-programmers, once and for all, and to bring state back up to the top".
We should allow normal people access to programming by making computers follow the intuitions and expectations we as humans have built up by living in the real world, especially around linked-up state.
This can start with how we access and animate that state. We can turn everything inside-out, and hide the commands and the mechanism behind our open, linked-up state, animating it from within.
The way to do this is to flip from the "imperative" style of programming to the "declarative" one.
Imperative programming means telling the computer what to do, step by step; which necessarily brings you closer to the computer's actual mechanism.
Declarative programming has been described as "What Not How" - you tell the computer only what you want, rather than how to do it. Then the computer itself has the job of working out exactly how to achieve your goals.
Our declarative programming model would allow us to merely express the way we'd like to animate or evolve our state, our data objects, within the context of the other objects around and linked to them. The hidden mechanisms and commands would then automatically deal with all the details of storage, networking, processors, etc.
A programming language that worked that way would be both simple and powerful, and above all accessible to non-programmers.
Declarative rules in the Object Network have the shape "While That (state) Ensure This (state)". Such a fully declarative system would allow you to describe the relationship between, for example, the state of the water level in your plants and the state of the pump watering them.
You need rules such as: "While my 2nd spider plant is low on water, ensure the pump is running but while it's OK on water, ensure the pump is off". The computer will work out all the details of water level detection and switching pumps on and off.
The Object Network is a design for such a global human operating system for the Internet of Things, Augmented Reality - and Accessible Magic!
It holds its state, its data, in its "objects" which can map directly onto real Things or be purely virtual. These objects link up into a potentially global mesh using their identifiers, which act like web URLs.
Objects watch each other via these inter-links and are animated by simple, powerful, declarative rules that evolve their state. Object Network rules take the form of "While That Ensure This" - While the world visible by an object through its links and including the object itself are in That state, Ensure the object itself is in This state.
Contact me and/or subscribe to my blog and/or follow me on Twitter.