bigeasy / synapse

Peer-to-peer micro-sharing in Java licensed under GPL v 3.0 with Classpath Exception.

This URL has Read+Write access

name age message
file .classpath Sat Dec 05 04:55:13 -0800 2009 Mix build. [bigeasy]
file .gitignore Wed Nov 19 12:27:04 -0800 2008 - Created Dictionary, Volume and Entry class to... [bigeasy]
file .project Wed Nov 12 22:38:44 -0800 2008 - Built out network using Jetty in Synapse. - C... [bigeasy]
directory .settings/ Tue Nov 18 13:38:40 -0800 2008 - Removing mylyn configuration from Eclipse set... [bigeasy]
file COPYING Tue Nov 18 22:07:39 -0800 2008 - Accedentially used GPL 2, changing to GPL 3. [bigeasy]
file HACKING Mon Nov 17 15:42:53 -0800 2008 - Added a HACKING and INSTALL file. [bigeasy]
file INSTALL Mon Nov 17 15:42:53 -0800 2008 - Added a HACKING and INSTALL file. [bigeasy]
file LICENSE Mon Nov 17 15:21:20 -0800 2008 - Deploying a README and the GPL 3.0 license. [bigeasy]
file README Mon Nov 17 15:44:04 -0800 2008 - Added some more contact information to the RE... [bigeasy]
file mix.go Sat Dec 05 04:55:13 -0800 2009 Mix build. [bigeasy]
file pom.xml Tue Nov 18 21:46:02 -0800 2008 - Removing Guice, it adds complexity to the cod... [bigeasy]
directory src/ Sat Dec 05 04:55:13 -0800 2009 Mix build. [bigeasy]
README
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: alan@blogometer.com

    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.