This is a collection of experiments to investigate how to implement availability, scalability and fault tolerance in Erlang.
A central component is many distributed systems is a group communication. The service provides the means to manage a dynamic group of processes including a set of messaging primitives. One usage is in a setting where one needs to keep a set of replicated servers coordinated.
In this example we implement group communication that provides: leader election, atomic multicast and support for synchronized state transfer.
Building on this implementation we coudl try to package everything into a frameworks much like the OTP gen_server and gen_supervisor. These are some ideas on how this could be done.