aosabook/500lines — pull request #40 by djmitche (2014-03-01 17:36:58+00:00)
Title: Put in library form

OK, this is roughly what I want the end result to look like: an embeddable library that gives membership updates and also provides a distributed state machine. Underneath, it uses MultiPaxos to guarantee progress while being resilient to loss of any node and to partitions.

This is still pretty rough in a number of ways, not least of which it's 868 lines. But I don't want to put time into cleanup until I figure out where this is going: what will readers get from this chapter? I began this project with a pretty basic idea - "these consensus algorithms seem cool - I'll try implementing one". Some ideas of focus for the chapter (without exclusion):
* Consensus and distributed state machines
* Paxos, MultiPaxos, and why the literature pretty much agrees it's *hard*
* Protocol development process - using a deterministic network to reproduce problems, extensive logging, error injection, exploratory development, etc.
* Testing (not that I've done much of it, but I could simplify the protocol quite a bit, remove a lot of the practicalities, and add tests)

Note that this pull req includes the commits from #35; only the last three are new.