Home > synapse

synapse

Synapse is a project mainly written in ..., based on the Unknown, GPL-3.0 licenses found.

Peer-to-peer micro-sharing built with Node.js.

SYNAPSE

Open Source Peer-to-Peer Micro-Sharing

Wish and Discuss: http://alan.uservoice.com/pages/synapse
Develop: http://github.com/bigeasy/synapse/tree/master
Contact: [email protected]

License: GPL v 3.0 with Classpath Exception

See Also: INSTALL, HACKING, COPYING, LICENSE

UX

Synapse is an open source peer-to-peer micro-sharing application.

Synapse is used to implement a network where people share short messages no longer than an SMS text message. Particpants in the Synapse network subscribe to the messages of other participants. They will be able to follow a stream of messages from the people that they follow.

Addtionally, a person can search across all messages in the network. They can create a custom stream based on matching search terms, subscriber, tags and URLs.

Synapse will be distributed with Java Swing UI customized for OS X, Windows XP and Vista, and Linux desktops. The user interface, when launched, will also launch a Synapse node.

ARCHITECTURE

Synapse is a distributed database of messages. Each client serves as a node on the network. To paricipate in the network, they provide the network with an order of magnitude more memory than the memory required to store all of the messages they with to share.

Messages are stored in the network. Each participant in the network is a node.

Data Model

The Synapse network stores messages and user profiles. Messages are parsed into search terms. The network stores these Messages, Profiles and Terms. When a node becomes active, the messages are injected into the network.

Each node contains storage for messages, profiles and terms. Each node will store a portion of the messages, profiles and terms, acting as leaf nodes in a distributed search tree.

Routing

The network consists of a distributed B+Tree. Each node will host a number of routing tables. The routing tables will change shape using a tree algorithm that will split the routing tables from the storage leaves up, as the storage leaves and routing tables become full.

Messages

Messages are sent one way. A node initiates a injection or query and waits for a callback indicating that the injection has been performed, or query results are returned. These actions are pulsed out into the network until afirmations are received.

Search

Search is always a matter of returning the most recent messages that match a query, so requests for the terms are sent out into the network, and the results are merged. Search happens quickly because search terms are ordered by date and merging can optimize by skipping over terms based on the oldest term, looking for a possible match. Searches for a specific single term, are fast.