Bonjor - Such Potential!
Apple computer's Bojor technology (aka. Rendezvous, aka. Zero-Conf, aka Multicast DNS) is a very interesting way for things to magically happen. It gives us printer configuration without the mess, it gives us iChat with the people around us and websites that are on our network. But there is something more that it can provide that I have been speculating on (well, I have gone further, but that is mostly irrelevant).
One of the most dreadful things about the Internet is the distance that it injects in our lives between us and the people around us. But does the Internet have to do that to us? Must we become more isolated from our surroundings and community simply because we are connected?
The short answer today is yes. Today's Internet forces us to find and interact at extraordinary distances (in many senses). While I could pontificate on that at great length, I will cut to the chase and postulate that the primary problem is in how we discover and interact on the net.
Is there a solution? Is there a way to make it possible to make it more interesting and accessible to interact with people and things close to us, or maybe close to our mindsets? I think there are and Bonjor holds the promise of the key.
Here is the basic idea: Bonjor, in it's untampered with state, is only good for local networks. The problem is that Multicast DNS is not routable and even if it was, people behind firewalls could not take advantage of each-other's services. So Bonjour doesn't really give you the chance to discover and interact with your neighbor, or the local deli, or even with the people who compulsively read the same type of information on the web. But the raw Multicast DNS technology exhibits discovery characteristics that, with the right augmentation, should be capable of making that happen.
In order to get there from here, first we must imagine a way to tunnel both Bonjour discovery multicast DNS messages and connections to application services. This is neccessary because we must imagine connecting applications on different networks together, such that a client could discover and interact with services on relevant non-local networks.
Two examples of relevant networks come immediately to mind. The first is the geographically close network and the second is the contextually close network.
* Bonjor tunnels to geographically close networks
* Bonjor tunnels to contextually close/relevant networks
Let's imagine the second case first. There is an extremely simple example that can illustrate the power of such an idea. That example is tunneling Bonjor discovery services through a proxy that follows your focus in a web browser. Here is a summary of how that might work:
A proxy running on the client examines the URL that the web browser of focus (that which the user has in front) is pointing to. It then attempts to ope a channel to that server to tunnel Bonjor services to. If the server is equipped with the appropriate software, the client can then publish and discover Bonjor services through that remote server.
Immediately, several interesting things fall out of this. Your iChat would show in the rendezvous section all of the users that are looking at the same webpage as well as all of their bookmarks and their websites and other services (as appropriate, considering publishing rules and whatnot). So you have an ad-hoc community based on the context of interest by the user. This brings people together and that is powerful.
Going from contextual to geographic closeness is somewhat more complicated, but potentially even more valuable. The way that may work could, perhaps, be something like the following:
First, someone must run a geographic bonjor tunneling tracker. Such a piece of software would be responsible for registering clients that come online and offline at geographic locations all over the world. It is possible to conceive of such a system as being hierarchical and scalable and perhaps even existing within the context of mesh networking, but details aside, let's continue the thought...
When a client comes on line (like your computer), it would first send a message to a known server (the tracker from above) and receive the ip address of a local tracker. Essentially, the primary tracker would resolve the client ip address to a geographic location and send back a list of other clients/servers near that location to contact. Let us assume that any client may also act as a server (I am thinking BitTorrent as I say this).
There is an iterative set of steps that would occur where the client bounces around attempting to resolve where it is and who it's nearest neighbors are. This process comes out of graph theory and the intended results are for the client to build a graph of some
number of nearest neighbors (other clients that exist geographically close to the client in question).
Once such a graph has been resolved, it becomes possible to begin shared tunneling of Bonjor services with nearest neighbors. The number and type of services tunneled is a set of variables that must be algorithmically controlled. One can imagine an interface which specifies how geographically distant discovery services should look as well as having filters to home in on specific types of services and/or the subject matter that those services deal with. Such specificity is likely to be interdependent as we do not want to wash out a client with zillions of services, so as distance increases the focal context of interest must necessarily decrease and vice versa.
What can we do with it? We can find people near us to chat to. We can look at websites in our neighborhood. We can see what the dinner specials are in restaurants in our city. It brings us closer together.
And these things, I believe, are important.
So what can we do to make it possible? Well, I have written code to do Bonjor tunneling... It more or less works... But I am lazy. I guess, more on this later...