Skip to content

FOSSRIT/quilt

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#QUILT A distributed chat client intended for the Sugar environment. Licensed under the MIT License

#Build Status: Master: Build Status on master Develop: Build Status on 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

About

Mesh chat protocol over ZMQ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published