<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0" xml:lang="en">
  <teiHeader>
    <fileDesc>
      <titleStmt>
        <title>In Search of an Understandable Consensus Algorithm</title>
        <author>Diego Ongaro</author>
        <author>John Ousterhout</author>
      </titleStmt>
      <publicationStmt>
        <p>Tag layer of the DHSS Meta-Tagging Project. The article text is reproduced from the
           staged copy named in sourceDesc and is not altered; the tags are held separately in
           standOff so that overlapping and nested spans are preserved.</p>
      </publicationStmt>
      <sourceDesc>
        <bibl>
          <title>In Search of an Understandable Consensus Algorithm</title>
          <date>2014</date>
          <publisher>USENIX Annual Technical Conference</publisher>
          
          
          <idno type="record">ongaro2014-raft</idno>
          <note type="staged-file">ongaro2014-raft.txt, the project's staged copy</note>
          <note type="text-sha1">267af37a76990abfad71182403656be68989503f</note>
          <note type="rights">author-open</note>
        </bibl>
      </sourceDesc>
    </fileDesc>
    <profileDesc>
      <textClass><keywords><term>computer-science</term></keywords></textClass>
      <particDesc>
        <person xml:id="paper"><p>the paper's own words</p></person>
        <person xml:id="tagger"><p>the tag layer; a sentence written by the tagger about the
          paper, always anchored to a quotation but not itself a quotation</p></person>
      </particDesc>
    </profileDesc>
    <revisionDesc>
      <change when="2026-10-06"
              who="build_paper_edition.py">0 spans located by searching the stored text for the quote's exact words, allowing any whitespace between them</change>
    </revisionDesc>
  </teiHeader>
  <standOff>
    <spanGrp type="tags">
      <span xml:id="t0" type="claim_type" ana="#claim_type" resp="#paper">
        <label>method</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t1" type="phenomenon" ana="#phenomenon" resp="#paper">
        <label>distributed consensus for replicated logs</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t2" type="method" ana="#method" resp="#paper">
        <label>system-or-tool-building</label>
        <term>system-or-tool-building</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t3" type="mechanisms" ana="#mechanisms[0]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>design alternatives are chosen by asking two stated questions about UNDERSTANDABILITY - how hard is each to explain, and how easily can a reader completely grasp it and its implications - and the authors state plainly that this analysis is highly subjective</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t4" type="mechanisms" ana="#mechanisms[1]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>the first technique is problem decomposition: the problem is divided into pieces that can be solved, explained AND understood relatively independently, and the paper names the four it used</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t5" type="mechanisms" ana="#mechanisms[2]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>the second technique reduces the STATE SPACE rather than the code - fewer states to consider, more coherence, nondeterminism removed where possible - and it is made concrete by two rules about what logs are not allowed to do</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t6" type="mechanisms" ana="#mechanisms[3]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>NONDETERMINISM IS DELIBERATELY ADDED WHERE IT SHRINKS THE STATE SPACE: randomised approaches handle all possible choices in one fashion - choose any, it does not matter - so randomisation is used to simplify leader election even though the general policy was to eliminate it</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t7" type="mechanisms" ana="#mechanisms[4]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>the comparison is a within-subject crossover: every participant learns both algorithms and takes both quizzes, with the ORDER reversed for about half of them, so that individual differences and the experience gained from the first half are both accounted for</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t8" type="mechanisms" ana="#mechanisms[5]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>the two ways the experiment FAVOURED THE COMPETITOR are stated by the authors rather than left to a reader: some participants had prior experience with the rival algorithm, and the rival&#x27;s teaching video was longer</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t9" type="mechanisms" ana="#mechanisms[6]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>the regression model&#x27;s estimate of the quiz effect is reported as LARGER than the raw score difference, and the gap between the two is explained by prior experience with the rival algorithm rather than set aside</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t10" type="mechanisms" ana="#mechanisms[7]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>the participants&#x27; own preference is collected AND THEN DISCOUNTED by the authors, who name both reasons it may be unreliable: self-report against measured scores, and the participants&#x27; possible knowledge of the hypothesis being tested</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t11" type="mechanisms" ana="#mechanisms[8]" resp="#tagger" cert="0.95">
        <label>mechanisms</label>
        <term>the correctness argument is anchored to a formal specification that is itself the subject of the proof, and the paper states exactly how far the mechanisation reaches - one property mechanically proven, resting on invariants that have not been mechanically checked</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t12" type="limitations" ana="#limitations[0]" resp="#tagger">
        <label>Quotation withheld</label>
        <note>what this limits: the liveness argument: Quotation withheld</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t13" type="limitations" ana="#limitations[1]" resp="#tagger">
        <label>The mechanised safety proof rests on invariants that were never mechanically checked</label>
        <note>what this limits: the safety proof as evidence: THIS PROOF RELIES ON INVARIANTS THAT HAVE NOT BEEN MECHANICALLY CHECKED (FOR EXAMPLE, WE HAVE NOT PROVEN THE TYPE SAFETY OF THE SPECIFICATION)</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t14" type="limitations" ana="#limitations[2]" resp="#tagger">
        <label>The participants&#x27; self-reported preference for Raft may be unreliable and biased by knowledge of the authors&#x27; hypothesis</label>
        <note>what this limits: the understandability claim, which is the paper&#x27;s central selling point: PARTICIPANTS MAY HAVE BEEN BIASED BY KNOWLEDGE OF OUR HYPOTHESIS THAT RAFT IS EASIER TO UN[derstand], and the self-reports MAY BE LESS RELIABLE THAN ... QUIZ SCORES</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t15" type="limitations" ana="#limitations[3]" resp="#tagger">
        <label>Raft&#x27;s strong-leader design rules out some performance optimisations available to leaderless algorithms</label>
        <note>what this limits: the performance comparison: Raft&#x27;s strong-leader design rules out optimisations available to leaderless algorithms</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t16" type="limitations" ana="#limitations[4]" resp="#tagger">
        <label>Optimisations known for other consensus algorithms were not applied or evaluated here</label>
        <note>what this limits: any performance comparison against optimised implementations: VARIOUS OPTIMIZATIONS HAVE BEEN PROPOSED IN THE LITERATURE FOR OTHER ALGORITHMS; MANY OF THESE COULD BE APPLIED TO RAFT, BUT WE LEAVE THIS TO FUTURE WORK</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t17" type="limitations" ana="#limitations[5]" resp="#tagger" cert="1.0">
        <label>The design criterion the paper is built around is the authors&#x27; own judgement about how hard things are to explain.</label>
        <note>what this limits: the claim that this algorithm is more understandable by design: the alternatives were judged by how hard each is to explain and how easy it would be for a reader to understand, which are the authors&#x27; own assessments</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t18" type="limitations" ana="#limitations[6]" resp="#tagger" cert="1.0">
        <label>The understandability result is a quiz given to students on two named courses.</label>
        <note>what this limits: the finding that this algorithm is more understandable than Paxos: it was measured by an experimental study using upper-level undergraduate and graduate students in an Advanced Operating Systems course at Stanford and a distributed computing course elsewhere</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t19" type="limitations" ana="#limitations[7]" resp="#tagger" cert="1.0">
        <label>The equivalence claimed with the algorithm it replaces is on result and efficiency, with the structure explicitly different.</label>
        <note>what this limits: treating results about Paxos as results about this algorithm: the paper states it produces an equivalent result and is as efficient, but that its structure is different</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t20" type="limitations" ana="#limitations[8]" resp="#tagger" cert="1.0">
        <label>Removing nondeterminism was the general aim, and the paper records where that aim was abandoned.</label>
        <note>what this limits: a description of this algorithm as deterministic by design: the authors state that although they tried in most cases to eliminate nondeterminism, in some situations nondeterminism actually improves understandability</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t21" type="controls" ana="#controls[0]" resp="#tagger" cert="0.9">
        <label>counterbalancing the order of the Paxos and Raft portions of the study, half the participants each way</label>
        <note>eliminates: that the difference in quiz scores reflects individual differences in ability or learning carried over from whichever algorithm was studied first, rather than the algorithms&#x27; understandability · outcome: held</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t22" type="concepts" ana="#concepts[5]" resp="#paper">
        <label>understandability</label>
        <term>understandability</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t23" type="concepts" ana="#concepts[6]" resp="#paper">
        <label>Paxos</label>
        <term>Paxos</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t24" type="concepts" ana="#concepts[7]" resp="#paper">
        <label>decomposition</label>
        <term>decomposition</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t25" type="concepts" ana="#concepts[8]" resp="#paper">
        <label>nondeterminism</label>
        <term>nondeterminism</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t26" type="concepts" ana="#concepts[9]" resp="#paper">
        <label>state space</label>
        <term>state space</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t27" type="senses" ana="#senses[0]" resp="#tagger" cert="1.0">
        <label>understandability AT DESIGN TIME - AS TWO QUESTIONS THE AUTHORS ASK THEMSELVES: how hard is each alternative to explain, including how complex its state space is and whether it has subtle implications, and how easy it will be for a reader to understand it completely</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t28" type="senses" ana="#senses[1]" resp="#tagger" cert="1.0">
        <label>understandability AT EVALUATION TIME - AS A QUIZ SCORE: the same word is measured by testing upper-level undergraduate and graduate students on two named university courses, so the paper&#x27;s central term has one meaning while designing and a different, countable one while evaluating</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t29" type="senses" ana="#senses[2]" resp="#tagger" cert="1.0">
        <label>the equivalence with Paxos - ON RESULT AND EFFICIENCY ONLY: the paper states the result is equivalent and the efficiency comparable while the structure is different, so a claim proved about one is not automatically a claim about the other</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t30" type="claim_relations" ana="#claim_relations[0]" resp="#tagger">
        <label>extends → Paxos consensus algorithm</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t31" type="claim_relations" ana="#claim_relations[1]" resp="#tagger">
        <label>contradicts → Paxos (Lamport)</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t32" type="claim_relations" ana="#claim_relations[2]" resp="#tagger">
        <label>builds-on → Oki and Liskov&#x27;s Viewstamped Replication</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t33" type="concept_edges" ana="#concept_edges[0]" resp="#tagger">
        <label>understandability —operationalised-as→ state space</label>
        <term>understandability</term>
        <term>state space</term>
        <note>strength of the relation: 1
Audit 2026-09-28: DOUBTFUL - read against its full span and kept, but the span gives state-space complexity as one example of how understandability was judged; operationalised-as is loose.</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t34" type="concept_edges" ana="#concept_edges[1]" resp="#tagger">
        <label>decomposition —causes→ understandability</label>
        <term>decomposition</term>
        <term>understandability</term>
        <note>status: the authors&#x27; DESIGN INTENT, stated as what they applied - not a measured outcome · direction on the measure: increases · the relation itself is separately evidenced · strength of the relation: 1 · the relation stated: decomposition is one of the techniques APPLIED TO IMPROVE understandability</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t35" type="content_tags" ana="#content_tags.quantities[0]" resp="#tagger">
        <label>43 — user-study size comparing Raft vs Paxos learnability</label>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t36" type="content_tags" ana="#content_tags.findings[1]" resp="#tagger">
        <label>A user study showed Raft is easier for students to learn than Paxos; Raft also adds a mechanism for changing cluster membership that uses overlapping majorities to guarantee safety.</label>
        <note>about this quote: QUOTE REPAIRED: the extractor split a hyphen-space and the quote was recorded faithfully with the damage in it, which made it unanchorable. The repaired string is an EXACT SUBSTRING of the staged text - that is why it was accepted, not because a rule produced it. The text as originally recorded is kept in evidence as extracted.</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t37" type="content_tags" ana="#content_tags.variables[1]" resp="#tagger">
        <label>understandability</label>
        <term>understandability</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t38" type="content_tags" ana="#content_tags.definitions[0]" resp="#tagger">
        <label>consensus algorithm</label>
        <term>consensus algorithm</term>
        <note>about this quote: QUOTE REPAIRED: the extractor split a hyphen-space and the quote was recorded faithfully with the damage in it, which made it unanchorable. The repaired string is an EXACT SUBSTRING of the staged text - that is why it was accepted, not because a rule produced it. The text as originally recorded is kept in evidence as extracted.</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t39" type="content_tags" ana="#content_tags.definitions[1]" resp="#tagger">
        <label>replicated state machine</label>
        <term>replicated state machine</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t40" type="content_tags" ana="#content_tags.statistics[0]" resp="#tagger">
        <label>regression</label>
        <term>regression</term>
        <note>about this quote: EXTRACTION, NOT THE PAPER: the quote as extracted ended &#x27;and s t n a p…&#x27;, which is &#x27;participants&#x27; reversed. It runs on into &#x27;i f o r e b m u n&#x27; (&#x27;number of&#x27; reversed) - together the rotated y-axis label of Figure 15, which the extractor read bottom-to-top and placed inside this sentence. The sentence resumes 250 characters later at &#x27;the order in…&#x27;, so the true third factor is the learning order. The quote is TRIMMED rather than mended: joining the two halves would produce a string that reads correctly and exists in no document. Found by an internal tool; this was the only live quote in the corpus reaching into such a region.</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t41" type="content_tags" ana="#content_tags.statistics[1]" resp="#tagger">
        <label>statistical-significance</label>
        <term>statistical-significance</term>
        <note>about this quote: QUOTE REPAIRED: the extractor split a hyphen-space and the quote was recorded faithfully with the damage in it, which made it unanchorable. The repaired string is an EXACT SUBSTRING of the staged text - that is why it was accepted, not because a rule produced it. The text as originally recorded is kept in evidence as extracted.</note>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
      <span xml:id="t42" type="content_tags" ana="#content_tags.statistics[2]" resp="#tagger">
        <label>t-test</label>
        <term>t-test</term>
        <note type="quotation-withheld">Quotation withheld because this record is not cleared for redistribution.</note>
      </span>
    </spanGrp>
  </standOff>
  <text>
    <body>
      <p><note type="rights">The full text of this article is not redistributable, so it is
      not included here. The evidence sentences are withheld with it; the tag layer and its
      grounding status remain. The article itself is at https://raft.github.io/raft.pdf.</note></p>
    </body>
  </text>
</TEI>
