I would consist of
- a publicly available hierarchical type system (similar to how classes look like in an OOP language with multiple inheritance). For example, URL is a type, or set of search terms is a type.
- any number of nodes on the net. Each of them would provide a mapping from a set of input data to a set of output data (data is defined in the terms of the types). For example, Google would provide a mapping from set of search terms to URLs, but that's a very generic node.
- the nodes also advertise the cost of one mapping operation. The cost is given in some kind of currency (?).
- there should be routers that can find a route between a set of input types to a set of output types. The route is composed of nodes, obviously, that pass information between them and finally the output is the stuff the user wanted.
- the user pays the sum of the cost needed for his query (transformation)
- the user could pay nothing if some nodes have negative cost. There could be a node that takes a set of URLs (search results) and produces a set of URLs that are basically the original URLs + some advertisements. Therefore if somebody specifies that he wants a transformation from types X to types Z (and provides data of types X) under cost C, then the routers should find a set of nodes under these constraints
- nodes could provide mappings that are the same as other nodes, and the routers would slowly insert them into mapping chains, and rate them based on some user feedback (this is essentially a genetic algorithm)
This system could very much help good competition in the distributed information processing industry. Nowadays nobody can really compete with Google or Bing because you need to build _everything_ in one step. A distributed infrastructure like this that's based on the evolution of components would lower the barriers to entry dramatically. Also, data would be shared across participants, not owned only by the one single market leader.
Ok, this is just a very naive and early idea, and it's also too big to implement in my spare time at the moment, but I think it'd be an interesting way to apply the good old Unix principles for building internet services.