This repo contains an exposition to the Paxos protocol which introduces the protocol starting from a simple but incorrect protocol and making gradual refinements several times till we finally reach the complete protocol. The goal is for the reader to understand the protocol at a deeper level by undertaking this journey instead of trying to understand it with all its subtle details from the get go.
You can see a live version at https://imnaseer.github.io/paxos-from-the-ground-up/
The exposition is written using pollen. Please follow these steps if you want to modify it.
-
Install Racket and pollen by following the instructions here
-
Navigate to the folder where you cloned this repo and type
raco pollen start
-
Navigate to the pollen dashboard url, typically http://localhost:8080/index.ptree and click on paxos-from-the-ground-up.html.pm
-
Modify paxos-from-the-ground-up.html.pm and refresh the browser window to see your changes reflected in the presentation
-
The presentation content is contained in paxos-from-the-ground-up.html.pm
-
The interactive diagrams are defined in PaxosDiagrams.js
-
The diagramming framework is defined in Diagram.js
-
The framework to convert the content into a slideshow is defined in Slideshow.js