7. Discussion and further reading
The argument in one breath
Lamport started from a deflation: there is no global now, so "happened before" cannot mean "earlier on the clock." He rebuilt the relation from the only order a distributed system can observe, local process sequence and message send-before-receive, and showed that what you get is a partial order. Concurrent events are the incomparable ones, and their lack of order is a fact, not a gap. He then bolted a logical clock onto that partial order, a counter that jumps forward on every message, guaranteeing that cause always gets a smaller number than effect, while warning that the converse fails and a timestamp is therefore not a time. To make decisions that need everyone to agree, he completed the partial order into a somewhat arbitrary total order using a process tie-break, and showed the mutual-exclusion algorithm that this enables, which generalizes to replicating any state machine by agreeing on an order of commands.
Then, in the half most people forget, he turned on his own construction. The arbitrary total order can disagree with the order users perceive when information leaks around the system through a side channel, and no purely internal algorithm can fix it. Physical clocks can, if you bound how far they drift, and he derived how tightly they can be synchronized. Two halves, two legacies: the causal partial order and the physical-clock bound.
Questions worth arguing about
These are seminar questions. Several have no settled answer.
When do you actually need a total order? Lamport shows a total order is arbitrary and expensive, requiring everyone to hear from everyone. Yet engineers reach for "just give me a global sequence number" constantly. In your own systems, how often is a total order truly required, and how often would the honest partial order, with concurrency surfaced rather than hidden, have been correct and cheaper?
Is a timestamp ever safe to treat as a time? The paper's sharpest warning is that logical timestamps are not times and physical timestamps are not causality. Where in your stack does a timestamp comparison secretly decide correctness, and what happens to it under clock skew or concurrent writes?
What did the arbitrariness cost? The total order breaks ties by process id, which has nothing to do with when things happened. Is that ever unfair in a way that matters, and what is your equivalent of Lamport's footnote about a rotating, "fairer" tie-break?
Failure and time. Lamport says failure is only meaningful in the context of physical time, because you cannot distinguish a crashed process from a slow one without a clock. Do you agree that timeouts are the only real failure detector, and what does that imply about every system that claims to detect failure "instantly"?
The forgotten half, remembered. Most engineers know the happened-before relation and have never read the physical-clock section. Having seen it, does Spanner's expensive answer look inevitable, or does the hybrid-clock compromise suggest the industry over-invested in atomic time?
Causality you cannot see. The anomaly comes from information traveling outside the system. In a world of side channels, humans talking, out-of-band APIs, shared external state, can any system ever fully close the gap, or is user-supplied causal context the only honest fix?
Further reading
Start with the paper, then follow both of its halves forward.
Leslie Lamport, "Time, Clocks, and the Ordering of Events in a Distributed System," CACM 21(7), 1978. The source. Read it in full, including the physical-clock section and the appendix proof, so you are not one of the many who stop at the total order.
Lamport, "The Implementation of Reliable Distributed Multiprocess Systems," Computer Networks (1978). The companion the paper defers to for handling failure. Read it to see the seed of fault-tolerant replication before consensus was named.
Fred Schneider, "Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial," ACM Computing Surveys (1990). Where state-machine replication is named, generalized, and made fault-tolerant. The bridge from the 1978 seed to modern practice.
Colin Fidge (1988) and Friedemann Mattern (1988) on vector clocks, and Parker et al. (1983) on version vectors. The successors that fix the scalar clock's blindness to concurrency. Baquero and Preguiça's "Why Logical Clocks Are Easy" (ACM Queue, 2016) is the clearest modern explanation of the family.
Corbett et al., "Spanner" (OSDI 2012), and Kulkarni et al. on Hybrid Logical Clocks (2014). The physical-clock half at industrial scale. Read them against the paper's PC1, PC2, and the anomaly to see the same problem with a hardware budget.
Where the series goes next
Lamport gave the field its model of order. He did not, in 1978, make it survive failure, and he said so.
- The obvious next step is consensus, and it is Lamport again. The state-machine replication seeded in chapter 4 becomes fault-tolerant only when a group of processes can agree on an order of commands despite some of them failing, and that is Paxos, from The Part-Time Parliament, which gets its own seminar in this series. Read this paper first: Paxos is the answer to the failure problem this paper explicitly set aside.
- Between them sits an impossibility. Lamport's observation that you cannot distinguish a failed process from a slow one is the informal version of the Fischer, Lynch, and Paterson result of 1985, which proves that no deterministic algorithm can guarantee consensus in an asynchronous system if even one process can fail. That wall, glimpsed here as "failure is only meaningful in the context of physical time," is what the Armstrong seminar met as the dead-versus-unreachable ambiguity, and it is why real consensus protocols lean on timeouts.
- And this seminar answers the question the Hoare and Hewitt seminars stepped around. Their models assume an order of events; Lamport is the one who asks where that order comes from and finds it is only ever partial. His arrow of time is the same shape as Hewitt's, arrived at independently, now made operational.
Read this way, the 1978 paper is not just about clocks. It is the moment computer science admitted that agreement on order is the real problem, and everything from vector clocks to Spanner to Paxos is a different answer to it.