Users of the Internet* have long been stuck with the problems of the hierarchical DNS* system currently in use. Many people registered their domain names with the Network Solutions* monopoly and are now stuck with poor service, and numerous cases of broken domain names. The artificial scarcity of domain names makes it hard for people to get memorable ones, and forces everyone to use the same word to site mapping.
Plexname*s proposes to solve these problems by replacing the DNS hierarchy with an individualized, decentralized network.
@@perhaps insert pretty network vs. hierarchy graphic
A plexname resolver is simply a string to URI resolution service. It allows users to use simple memorable words to locate web sites, email addresses, telephone numbers, etc.
Plexnames also let you store some metadata about the name, such as title, description, etc.
@@ add schema for metadata
A plexname also provides "arguments" to the name, to make it useful in query-style situations, from Web searches to personnel directories.
plexname arg(1) arg(2) ...
Collectively, all of the arg series is known as args.
When a plexname is resolved, the content inside the <...> is replaced with a URI-encoded version of the correct value.
It seems useful to register a plexname URI scheme in which to encode these plexname values. For example, the above plexname would be encoded as:
plexname:http%3A//%3Carg%281%29%3E.weblogs.com/%3Carg%282%29%3E
Plexname implementations should be careful to URI-encode plexnames the correct number of times, otherwise some plexnames will not function properly.
The plexname system is the global system formed by the interconnection of plexname resolvers across the world. Any one user can build their own personal plexname system from a list of their favorite plexname resolvers, ordered by preference. In this way, when they try to visit a plexname, it will try ask each resolver for the resolved URI in turn until it either finds the URI, or gives up.
Resolvers themselves can have plexnames, allowing them to be included in the plexname system. For example:
http://plexnames.com/uri?plexname=<args>
Furthermore, the ordered list of resolvers can also form a plexname:
http://plexnames.aaronsw.com/<args>/backup=http%3A//plexnames.com/uri%3Fplexname%3D%3Cargs%3E
Since maintaining resolvers and resolver lists is time-consuming for the user, users are likely to delegte this task to a trust metric-based system which links them with the resolvers of the other people they trust.
@@ interconnections with reputation servers, the mesh, etc.
A plexname resolver over HTTP simply accepts GETs on a URI in the form of a plexname with an <args> component, and returns a "302" redirect.
GET /uri?plexname=g HTTP/1.0
Host: plexnames.com
HTTP/1.0 302 Found
Location: http://www.google.com
Content-Type: text/plain
Content-Length: 65
If the resolver has no such plexname, it should send the usual "404" response.
Some resolvers may have an optional "backup" property of another resolver to redirect to if it cannot find a matching plexname.
http://plexnames.aaronsw.com/<args>/backup=http%3A//plexnames.com/uri%3Fplexname%3D%3Cargs%3E
@@caching queries... DNS's do it for me stuff
@@ Talk to Michael Mealing* about this...
Part of LogicError. Powered by Blogspace, an Aaron Swartz project. Email the webmaster with problems.