Project Jehoover: file sharing for mobbed wifi networks.

Summary:

During the SoS #1 in London, we discovered that even a few peers uploading and downloading files accross a wireless segment completely hosed the bandwidth for everyone on the network.

Using wires and a switch is a great temporary solution, but it isn't exactly discreet, and someone has to bring a battery to power the switch. So, we're talking about building a scheduling system for UDP broadcast file sharing in order to optimise file sharing over a multi-peer wireless segment such as you'd find on a wi-fi hotspot.

Plan:

This is a peer-to-peer file sharing application which will run a UDP client/server in a fast event loop using Twisted Python. A GUI that works more or less equally on Windows, OS X, Linux, BSD, etc. will be built using Glade-2 and PyGTk 2.

Peers:

Each peer would have a list of directories that it's sharing. Every so often, each peer would broadcast UDP announcements that contain file metadata. Peers listen for other peer's metadata broadcasts, and present this information to the user, who can then select which ones they want to download. Based on the user's selections, peers announce their preferences for file broadcasts (ie. which files they want, in order of preference), ranked from 1-N.

Protocol:

The Jehoover protocol currently supports three message types: ANNOUNCE, BROADCAST, and REQUEST. Data is transferred in 1k blocks. Files are identified by their MD5 sum.

Interaction:

Peers have two states, LISTEN and SEND. On joining the network, peers select a random 32-bit peer ID and enter the LISTEN state.

User Interface:

The user interface has 5 displays:

Cute Things

Technical Limitations