Once upon a time, a man named Tav came up with a system called the Plexnet, and had a heck of a time explaining what it is. After several patient years, I think I vaguely understand what he's getting at, and so this document both encapsulates my understanding and serves as a guide for people working on the 24 Weeks project to implement parts of the system.
A rapid, five minute explanation of a product is called an "elevator pitch" in America; in Britain I suppose it's called a "lift oration". What follows is what I'd gabble to you if you were going up a very tall skyscraper with me.
The Plexnet is like an Operating System that lives on the internet. The contemporary idiom that it most resembles is the much overhyped and touted WebOS, only the Plexnet rewrites a lot more of the fundamental architecture so it's more of an InternetOS. The Plexnet works by evolving and rewriting many existing technologies, such as HTTP and P2P, in such a way that they're all designed to better work with one another.
The aim of the Plexnet is to enable various simple but effective things that can't easily be envisaged using today's technology. For example, take something as simple as Flickr—a website for sharing photos. Before Flickr there was the Web; and before the Web there was the Internet. Though the Web and the Internet are grand and very abstract technologies, they enable lots of very small and interesting things to happen such as Flickr. In the same way, the Plexnet is quite a bit and abstract system, but it's specifically designed to enable more of these small and interesting things to happened. As such, it does help to keep in mind the goals when trying to understand the Plexnet as a system.
The system itself can be divided into seven specific technologies, which together we're calling The Plexnet Heptarchy. Each of the technologies in the Heptarchy resembles an existing technology to some degree, only crafted in such a way as to make it work better was part of the wider system. So for example, Plexnet Storage is a bit like current P2P technologies, but it focusses on only being efficient for what's demanded of it by other parts of the system.
It's very important, therefore, to understand how all of the technologies in the Heptarchy work together as a system; merely understanding a technology by itself is not enough to implement it effectively! Let's take a look at the overall system in all its glory before looking at the individual technologies in the Heptarchy.
Here's a diagram of how the components interact:
Plexnet Entities: Entities are cryptographically-secure private databases that store information created by a single agent, individual, or organisation &c. Their backend is basically just a queryable set (the Entity itself) of hashtables (called Units). The information stored is metadata, so for example Entities should not be used to store binary data.
Units only store property/value mappings. They may be made more useful with Schemas, which are like rules or contracts that affirm some condition, such as "this Unit should have an 'age' property; if it doesn't, consider the 'age' property value to be 0". A Unit that has one or more associated Schemas is called an Object.
Entities may be queried to return the set of all Units that contain a specific property and value pair, for example all the Units containing {age: 18}. These resulting sets are called Indexes.
Plexnet Events: Any dynamism in the system, anything that changes such as a Unit being modified or so on, will have an associated sensor. If that sensor is on, it'll trigger an Event with any registered listener. As with Units, the Sensors may have conditions on them.
Plexnet Storage: There are four verbs in the Plexnet Storage mechanism: GET, PUT, EXISTS, INFO, and DELETE. These accord to the HTTP verbs, except for EXISTS which is like a simple status request, and INFO, which is like HTTP's HEAD. These verbs work on identifiers, which are combined (md5, sha1, sha256, tiger, whirlpool) digests of the content.
The storage system is backend agnostic: it can be implemented over anything from the filesystem to a distributed hash table.
Plexnet Services: Plexnet Services are essentially simple remote procedure calls, allowing you to access functions on other systems. For example, there may be services to convert between currencies. The services will use the unix philosophy of being small modular units which emit straightforward easily parsable typed output, which can then be linked up to make larger services.
Calls to these services will be embeddable inside documents and so forth, to facilitate the inclusion of live data.
There are other parts of the Heptarchy too, but, it's difficult to document them because of several problems...
There are several specific problems with the design of the Plexnet, from the smallest design details up to the overall rationale of the Plexnet itself.
The biggest of the enumerated problems is 8), the accusation that the Plexnet simply doesn't do anything in particular. It's a lot easier to disprove than prove, but the fact that not a single Kalati or Plexnet design document that I have to hand describes a use case is a warning. There need to be not only several use cases (and it sounds like there should be several hundred, given the lofty goal of the system: to change the world), but also intelligent technical sketches of how each of those use cases will be achieved.
Though to a great extent this is really Tav's job, here are some possible ways of approaching solutions to the eight problems listed:
Note that one of the metaproblems that has sprung up is that the culture really isn't very strong at the moment. We have a good website and a good project going on, but not much in the way of people sitting down and really interchanging ideas and details like mad and recording them in the public web. Basically we have no frenzied set of intelligent people in MadScientistMode, which is what you need for a project like this to work.
Note also that there's an order to which these problems must be tackled, and the ordering above is merely as I thought of them. We'll have to discuss somewhat the order in which they need to be tackled, but for example it's no good fixing the names before the system is designed, and for the system to be designed we need to work on the whole use cases thing, and for us to do that we need to fix the culture and get people more interested. Writing this TAD and raising issues and causing a controversy actually seems like a good way of doing that, so we're already making a start by admitting that there are problems. There are also some things that can be done without any dependence on order, such as making all the proceedings public and setting up a decent central website.
So, in summary: 1) we need to have a better culture, and more programmers, which includes openness of proceedings; 2) we need to develop a more use case oriented Plexnet, perhaps (other solutions are just as likely), for people to be able to understand what it is and in order to be able to develop it, the problem being that at the moment the system is undesigned at the high level; and 3) we need to think about all the other problems such as how to surmount the insurmountable, how to stop the bubbling up of detailism, and we still need more information from Tav about his vision.
See the SocialArchitecture document on the 24weeks wiki for a further continuation of the ideas started in this document; and the TAD Chat for further reference information. Consider those documents required adjuncts to the TAD, enabling its purpose of explaining how the Plexnet is to be developed.
Sean B. Palmer, inamidst.com