Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Really Awesome Distributed Internet Calendar

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 client
Octocat-spinner-32 comm
Octocat-spinner-32 config
Octocat-spinner-32 docs
Octocat-spinner-32 examples
Octocat-spinner-32 puppet
Octocat-spinner-32 server
Octocat-spinner-32 testfiles
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README
Octocat-spinner-32 radical.sln
Octocat-spinner-32 todo.txt
RADICAL - Really Awesome Distributed Internet Calendar

	This application is developed as a course project of PADI 
	(a Distributed Systems) course. 

	A client can without intervention from a central source schedule events
	with other clients. It uses a central server to locate other connected 
	clients, but the scheduling is fully decentralised. 

	The server runs in groups of three. Its data is replicated within
	the group. At most one server failure is tolerated. 

	To faciliate local testing, a so called Puppet Master is available. This
	runs a simplistic GUI which reads an instruction file (puppet/example.txt)
	and starts clients, sends instructions to them, and displays their results. 

	This has only been tested with Mono. 
	GTK# required for the Puppet Master.
	A bunch of free ports on 12000 and 14000 if you run the Puppet Master.

	Always start one server first, then two replicas. The servers will determine
	who is the master and do initial bootstrapping. Each server has its own 
	configuration file. Examples are provided for local usage. 

	Clients, Servers, and the Puppet Master all requires a configuration file. 
	They should be self-explanatory. Make sure that if you want to run the Puppet 
	Master you must specify the full path of the client executable and a special 
	"generic" configuration file. 

	Clients may be started manually and register with the Puppet Master. In this
	case, make sure the Puppet Master is started first. 

	It is possible to activate debugging through each configuration file. Add or 
	uncomment classes that you want to enable debugging for. 

	It is easiest to test the whole thing using the Puppet Master and an example
	script. There is also a mechanism to stress test the servers by running
	many many clients (client.exe --stress). Values for testing are hard coded though. 
	Check StressTestClient.cs if you're interested. 

	Use Monodevelop 2.2 or later. 
	Requires GTK# to compile and run the Puppet Master GUI.

	Lalith Suresh <>
	Marcus Ljungblad <>
	Bruno Pereira 
Something went wrong with that request. Please try again.