Why Were HTML and WWW So Successful?


Here’s a story from the early days of the web in 1993, when Mosaic had only recently come out, there were only a couple hundred web sites (most of them run by and about computer science grad students) and before it was apparent just how big the web would eventually become.

I was working in a computer graphics research lab at Brown University run by Andries van Dam, who in 1967 began one of the very first hypertext systems with Ted Nelson, and went on to work on four successive generations of hypertext systems over 25 years, all beautifully designed, eventually integrating text, images, audio, timelines, movies, and 3-D graphics, dealing with collaborative authoring, referential integrity, versioning, etc. Even at the time Mosaic came out, there were many hypertext systems out there all of which were quite rich and complex: DynaText, Trellis, HyperCard, Hyper-G, Intermedia, StorySpace, etc.

I set Mosaic up on one of our workstations, and gave Andy a quick demo. Besides the C.S. students’ web pages, pretty much all there was to show at the time was the Cambridge coffee pot and an interactive Tarot card page, so it went quite quickly. At the end of it, all Andy had to say was, “So? What’s interesting about that?” I had been pretty fired up about the possibilities of the web, so was a bit taken aback until I realized that Andy had been building systems to do this for 25 years, so none of it was new to him. The only thing I could think to answer was that you could follow a link from one machine to another.

In fact, the world-wide web didn’t do any of the stuff that they’d been so concerned about for all those years. It didn’t take care of dead links, it didn’t let multiple people easily edit the same document, it had no semantic extensibility and almost no semantic markup, it didn’t handle linking to old versions, it didn’t let you mark up a text in multiple different ways, it didn’t enforce copyright, it didn’t handle payments, and so on. It’s really interesting to take a look at Tim Berners-Lee’s original spec for the web to see what a simple system it really was. His particular genius was that his idea duct-taped the existing systems (ftp, gopher, wais, mail, news, databases, etc.) together, so that you could easily access a remote machine by clicking on a link. Every prior hypertext system had really been an island, requiring people to write stuff and spend time integrating it into the system, not making an effort to bridge the gap with what was already out there. Instead, the web was useful right from the start.

And you could learn all of HTML in about 20 minutes. There were a grand total of 18 or so tags that were actually used (even counting tags that died out like NEXTID, HP1, and PLAINTEXT). Of course, the web really took off once Marc Andreesen added the IMG tag and released Mosaic. What’s really funny about this is, from a system architecture perspective, the solution Berners-Lee presents in response, is cleaner and more general, and would have allowed for plugins, embedded text, 3D graphics, etc. But Marc’s solution broke HTML in a way that let other people realize you could do something cool by breaking HTML further, and paved the way for this glorious, wonderful, multi-billion dollar mess we call today’s web.

That, I think, is why the web was so successful. Compared with the other systems that had been around for years and decades, it was like a backyard dragster beating a Porsche. But the early web did just enough to work, and was usable, while still exposing enough ragged edges that people got excited about hacking on it and making it do cool new stuff. I’m sure it’s for similar reasons that more people use PCs than Macs, Python than LISP, and Unix than MULTICS. And I try to remember this lesson when I sit down to design some new system.