Now that we've seen a little of what eBrainPool can do, I thought I'd doodle a bit and do my best to explain how the current developer's release works under the hood :)
The above schematic shows how the different technologies used come together.
Olsr Routing - as mentioned earlier for mesh networking and discovery of neighbouring devices we're using the OLSR protocol implementation developed by the olsrd project (www.olsrd.org). This is a seperate daemon that needs to be started independently at the moment.
Olsr Plugin - we've created our own plugin and extended the core olsrd program. Whereas the core olsrd recognizes devices with olsrd running and sets up the routing table to form a mesh, the plugin explicitly publishes the current host as having the eBrainPool client working and thereby willing to share software. It also looks out for other such devices in the mesh. Finally it pushes out information such as IP of the found device and username to the client.
- eBrainPool client - this client offers the interface by which a user can see the other users in the Beehive mesh networked pool around them and select applications to run from these users. It first checks to see that the IP the olsr plugin has told it has a valid client up and running. If so, the username of this client gets added into the list. When a user clicks on a partciular username all software currently hosted by that user is pulled out and shown. If a user wishes to run a particular remote software, an SSH connection is formed between the two devices. For this connection a custom ssh server gets started (currently via scripts) at the end hosting the software. The ssh client at the users end connects to this and requests the specific remote software to be X forwarded back through this tunnel. FUSE allows for data to be abstracted so that even if you are using software from someone else you can still use only your data. Neither end can access or view the other persons data.
Whew :)...hope this helps understanding the mayhem :). And yes I know I have terrible handwriting ;)