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.
Vint Cerf, co-developer of TCP/IP, wearing an IP ON EVERYTHING shirt
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.