A month ago I published a quasi-academic paper, proposing 3 modifications to the Raft replication algorithm. I got some great review and feedback on the Raft mailing list. So based on that I have now updated the paper, hopefully to be much clearer than the first iteration.
The major change of this version is to add an explicit InitializeCluster step to the algorithm, which is also where the databaseId is generated. It turns out this allowed to simplify the other steps a lot, as it makes it very explicit that a server can join a cluster precisely in two ways: by initializing a new cluster itself, or being added to an existing cluster.
Hence the title of this updated paper is of course: 4 modifications to Raft consensus.
I would like to thank especially Oren Eini for his thorough feedback on the previous iteration of the paper.