QUILT
A distributed chat client intended for the Sugar environment.
Licensed under the MIT License
Build Status:
Master:
Develop: 
Core Ideas:
- Mesh network chat system
- Dynamic peer discovery over the meshnet
- Routing that tolerates unstable nodes that may go offline randomly
- Easy to use and operate
Protocol:
- protocol itself it loosely based on irc
- protocol segments are seperated using zeromq multipart messages (act just like a list)
- protocol template: [routing, destination, command, *args]
- routing is a comma seperated list of unique node names ie: node1,node2,node3
- Currently Implemented:
- join
- part
- server_connect
- ping
- pong
- message
Routing Ideas:
- Routing is currently dumb, each message sent out has a comma seperated list of nodes it has been to, if a message returns to a node it has already been to, it is dropped
Peer Discovery Ideas:
- Peer discovery is currently implemented using an avahi service
Internals
- There are 3 main threads
- IncomingThread which puts incoming messages into the processing queue
- ProcessorThread which takes messages from the processing queue and handles them using a QuiltProtocol object
- OutgoingThreads are assigned one per server and take messages from a given queue and send them to their assigned server
- Incoming message --> proc-queue -> processor thread -> server Dependant Outgoing Queue
Dependancies:
pyzmq-static
Hacking
- clone it
- mkvirtualenv --system-site-packages quilt
- python setup.py develop
- quilt-console --help
Test Suite
Either use nose directly::
$ nosetests
Or use the setuptools command::
$ python setup.py test