No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Arthur Poulet fa9e9854c0
Move stuff around
4 months ago
config Init 4 months ago
spec Init 4 months ago
src Move stuff around 4 months ago
.editorconfig Init 4 months ago
.gitignore Init 4 months ago
.travis.yml Init 4 months ago
LICENSE Init 4 months ago
Makefile Init 4 months ago
README.md Init 4 months ago
shard.yml Init 4 months ago

README.md

MetaGit

TODO: Write a description here

Installation

make

Usage

make run

Development

Goals

The goal of the project is to create a P2P network able to serve an index of meta-data about git repositories among all kind of plateform.

It contains:

  1. a distributed database
  2. a web interface
  3. a api interface
  4. a bridge to several git forges’ api.

Protocol

Simple presentation:

  • A node is connected to others. Not every node needs to be connected to all the others.
  • Each node can map the immediate network arround it.
  • Each node owns data and share it.
  • Each node must assure the network stay stable through synchronization mechanics (trust update, role rotation, data duplication).

Seeding

  • A new node send the list of the seeds to his seeds.
  • A new node who finish to contact the seeds has to map the immediate network by querying the seeds.
  • A new node that finish the network mapping has to send the list of the forges he knows.

Quering

  • A node who owns the data queried must answer itself.
  • A node who knows where the data is located must forward the query to the right nodes.
  • A node who don’t know where the data is located must forward the query to another node.
  • A node is responsible of the data it owns. He make sure that it is duplicated on the network.

Synchronization

  • Each node ensure that the other nodes accomplish their roles.
  • Each node knows which forges it is in charge of, and ensure that these forges are up to date.
  • A connected node that learn a new forge or a new node must send it to the other nodes.
  • A connected node that cannot contact another connected node must inform the network and update the map.
  • A connected node make sure that the roles rotate among the nodes.

Contributing

  1. Fork it (https://github.com/Nephos/MetaGit/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors