Quilt
Description
Quilt is a chat system designed for mesh networks. It was written in python and uses zeromq as a way to pass data between nodes. Each node connects to other nodes and allows a user to chat. The end goal is to have a resilient chat network that auto discovers nodes on a mesh network.
Protocol
The Quilt protocol is a simple text based protocol over zeromq. zeromq can send multi-part messages and quilt takes advantage of that as a separate between different sections of a message. Current protocol:
- join -- [routing, destination, "join," user, channel]
- part -- [routing, destination, "part", user, channel]
- message -- [routing, destination, "message", user, channel, message]
- ping [routing, destination, "ping", server]
- pong [routing, destination, "pong", server]
- server_connect [routing, destination, "server_connect", our_address, our_port]
Project Setup
The project has 2 main folders and several other sub folders.
- tests
- Unit tests for Quilt are located here
- quilt
- This folder holds the source code for quilt it has 1 sub folder
- __init__.py stores the core quilt code for threading and running the server
- protocol.py holds the protocol implementation
- models
- Models holds classes for storing data in a way that will be accessible beyond the QuiltProtocol object in protocol.py
Dependencies
Core
- pyzmq-static
Unit tests
- nose
TODO
The current todo list is as follows:
- Rewrite the routing implementation to be much smarter
- Hook the avahi node discovery code into the core system
- Improved UI
- rewrite documentation