We reject: kings, presidents, and voting. We believe in: rough consensus and running code.
– David Clark (1992)
From the 1970s to the 1990s, the goal of building a global computer network was becoming more evident. However, how it would be built was one of the most fiercely debated topics in computer science.
Some refer to the 1970s-1990s as The Protocol Wars, a period where competing standards proliferated and competed for a foundational role in the internet. TCP/IP vs. OSI, WWW vs. Gopher, and many more battles at every layer of the stack.
Why did some protocols win and others lose? Each of these deserves its own deep dive, but here are some high-level lessons that can be distilled from each.
- Working code is often better than a draft by a standards committee. See Clark's quote.
- Backward or lateral compatibility allows protocols to draft off the success of previous protocols or competitors. For example, Mosaic had a feature that automatically converted Gopher menus into HTML.
- Simplicity matters.
"If we had only consulted the ancient mystics, we would have seen immediately that seven layers were required."
– Dan Postel on the OSI model (1987)
- Politics plays a more prominent role than technologists would like to admit. The U.S. Department of Defense was an early adopter of TCP/IP. UC Berkley put the TCP/IP code for BSD Unix into the public domain. Meanwhile, the University of Minnesota charged licensing fees for Gopher servers.
- Competing protocols often make different trade-offs, i.e., optimizing for compute or storage.