The other day a non-CS friend remarked to me that since computer science is a quantitative, technical discipline, most issues probably have an obvious objective truth. Of course this is not at all the case, and it is not uncommon to find major disagreements even when all parties are apparently reasonable and acting in good faith. Sometimes these disagreements spill over into the public space.
The purpose of this post is to list a collection of public debates in academic computer science where there is genuine and heartfelt disagreement among intelligent and accomplished researchers. I sometimes assign these as reading in class: they are a valuable resource for a couple of reasons. First, they show an important part of science that often gets swept under the rug. Second, they put discussions out into the open where they are widely accessible. In contrast, I’ve heard of papers that are known to be worthless by all of the experts in the area, but only privately — and this private knowledge is of no help to outsiders who might be led astray by the bad research. For whatever reasons (see this tweet by Brendan Dolan-Gavitt) the culture in CS does not seem to encourage retracting papers.
- N-version programming is a software development method where several implementations of a specification are run in parallel and voting is used to determine the correct result. Knight and Leveson wrote a paper showing that the assumption of independent faults in independent implementations may not be a good one. This finding did not sit well with the proponents of n-version programming and while I cannot find online copies of their rebuttals, Knight and Leveson’s reply to the criticisms includes plenty of quotes. This is great reading, a classic of the genre.
- Starting in the late 1980s, Ken Birman’s group was advocating causal and totally ordered multicast. Cheriton and Skeen were less than impressed and wrote 15 pages to that effect. Then we have Birman’s 32-page response to the criticisms. Also see Neha Narula’s take on the debate.
- This 1991 paper introduced log-based filesystems. In 1993 Seltzer et al. published this paper describing and evaluating an implementation of a log-based filesystem, and this followup in 1995. John Ousterhout, one of the authors of the original paper, disagreed with the evaluation. Seltzer and her coauthors rebutted his critique, and Ousterhout had, as far as I know, the last word.
- Linus v Tanenbaum on the merits of microkernels is another classic. Also see some (one-sided) comments on a reincarnation of the debate here. Related, Hand et al. published a paper Are Virtual Machine Monitors Microkernels Done Right?; in response, Heiser et al. wrote a paper with the same title but coming to the other conclusion.
- Social Processes and Proofs of Theorems and Programs is a provocative opinion piece about the role of formal methods in software development. Dijkstra called it “a very obnoxious paper” (see page 14 of this transcript) and wrote a response called “On a Political Pamphlet from the Middle Ages.” DeMillo et al. replied: “We must begin by refusing to concede that our confidence in a piece of real software has ever been increased by a proof of its correctness…” See the letters to the editor of CACM responding to this article, Victor Yodaiken’s take on this debate, and also three more shots fired in 2010, two by Moshe Vardi and one by the original paper’s authors.
- Sticking with Dijkstra, he and John Backus had a (only partially public) spat, nicely written up here.
I’d like to fill any holes in this list, please leave a comment if you know of a debate that I’ve left out!
Here are some more debates pointed out by readers:
- Software-based attestation offers a protocol for checking that a remote system contains the memory image that we expect it to have. On the Difficulty of Software-Based Attestation of Embedded Devices presents concrete attacks on SWATT. Perrig and van Doorn did not agree that the attacks were valid and, finally, Francillon et al. responded to the refutation.
- See the debate about code pointer integrity, links in comment #1
- See the debate about automated program repair, links in comment #2
- See the debate about the Java memory model, links in comment #4
- Go-to Statement Considered Harmful,
Goto Considered Harmful Considered Harmful, and
Goto Considered Harmful Considered Harmful Considered Harmful (several different letters in this PDF, and sorry about the paywall)