We consider how data objects can and should move faster through community than the programs that interpret them. This reverses conventional programming practice.
Consider a point in space.
{"x":12, "y":25}
This pair of numbers, cartesian coordinates, have been labeled with their usual names and expressed in json, javascript object notation.
The popular json interpretation of text (marks) allows us to instantiate this point as a self-describing object in pretty much any programming language using available parsing libraries. However, the description has limitations.
We favor enhancing the notation with the name of a program that can reliably interpret the object and an id that can track its movement. With this we have built this distributed collaborative object system we call wiki.
{"x":12, "y":25, "type":"point", "id":"4159265"}
The representation defers more elaborate interpretation to a program yet to be found. Still, the helpless object exists and is free to move within the community. Try moving it.
We will argue that this reversal of mechanism, the instantiation of objects free from the programs that interpret them, liberates us from considerable abuse and may even create a new kind of computing.
See How We Find Data
# Reversal
We have stumbled upon this reframing of the class-object relationship in our effort to recast wiki in a distributed context using recent programming technique. We now see this programming detail as profoundly important both operationally and politically.
In a programming language like Java or Smalltalk one appeals to a class to create an instance.
Point p = new Point (12, 25);
aPoint = Point x: 12, y:25.
These statements wed code and data to create an object which exhibits some behavior within the programming language. The code, a class, chooses a representation that it knows it can interpret to produce the behavior. This all makes sense until systems get large.
Distributed systems might 'serialize' data which means stripping it out of an object and reconstituting that object on another machine.
Distributed systems might also refuse to share data and instead insist that anyone needing that data connect to the remote system to enjoy its behavior.
Our approach to distribution includes both options and goes further by not insisting that behavior (meaning) follow objects so closely.
# Discovery
how we find objects
how we find the plugins that give them meaning
# Advantages
modularity and mobility
safety and privacy
version insensitivity
ecological acceleration