Act One: The Intergalactic Computer Network versus the Information Superhighway
During the Vietnam War, J.C.R. Licklider, head of the Advanced Research Projects Agency, diverted a small chunk of the Pentagon's budget to computer science research.
Here's how it worked. Somebody at Stanford would send in a grant proposal for an AI project and Licklider's office in ARPA would stick on some boilerplate at the end about military applications, send it through the bureaucracy and get the money. The only people who ever read the boilerplate were the student protestors who would get a hold of the grant proposals by filing Freedom of Information Act requests. It was not a perfect system but it kept everyone happy.
This taxpayer-funded boondoggle was driven by a vision of Licklider's, which he called the Intergalactic Computer Network. It was a way of giving every human being access to every other human being, and giving every programmer remote access to enough computing power to run their programs. Within a few years this vision took shape as the ARPANET, which of course became the Internet.
There's another American who secured government funding for what became the Internet, though he did it through the legislative process. In 1991, Senator Albert Gore, Jr. introduced the High Performance Computing and Communication Act.
Gore was also driven by a vision, which he called the Information Superhighway.
The Information Superhighway was similar to the Intergalactic Computer Network in that it was a big public works project. But where the ICN wanted to connect people to each other, the ISH wanted to help businesses move information around, the same way the highway system helps businesses move freight. It'd also help with big data-intensive science like the Human Genome Project.
Connecting individual people to each other was nice and all, but it was just one more business you could run on the Information Superhighway. As far as ordinary people were concerned, the Information Superhighway would just be interactive TV.
Now, on the Internet, in the the 80s and 90s, people wrote all kinds of protocols. Most of the ones on this list were deployed by the time of the High Performance Computing and Communications Act. The World Wide Web is up there, but it's kind of hard to see.
There it is. Nowadays we'd say the name of the application protocol, HTTP, but back then they called it "WWW" because they saw the three web technologies (HTTP, URI, HTML) as one new thing.
When I was in high school I had primitive Internet access through BBSes. I was very excited. I diligently mastered the arcane tools of the Intergalactic Computer Network. And then shortly before I went to college the Web obliterated all the protocols I'd been learning about.
Here are the big Internet protocols today.
What happened? There are fewer big-name Internet protocols now than in 1993. Well, the Web ate those other protocols, just like the Internet ate Compuserve and BITNet and the UUCPNET and a bunch of other networks you've never heard of. It turns out most of the things we want to do on the Internet--have discussions, search databases, share files, look up things in directories--we can do over the web.
What's left? There's SMTP, a very old protocol with a huge installed base. We've got BitTorrent, which has an unusual peer-to-peer architecture. And we've got a bunch of protocols for real-time interaction. HTTP took over everything else, and it's starting to take over email and real-time chat.
And that's not the whole story either, because a whole lot of Internet protocols never got invented. See, the protocols on that first list are Intergalactic Computer Network all the way. FTP, Usenet, IRC. You're sharing information.
That's not because computer scientists don't want your money. Hell, they'll take the Pentagon's money.
It's because until 1991, the year of the HPCCA, you couldn't send commercial traffic over the Internet. The National Science Foundation ran the backbone and they had an Acceptable Use Policy.
So instead, Information Superhighway endeavors like online shopping and stock trading happened through one-off dial-up services with goofy names like Comp-U-Store.
So here's one of those questions you already know the answer to. What happened in the mid-90s when the hippy-dippy Intergalactic Network collided with the capitalist Information Superhighway?
The web didn't just eat other Internet protocols: it ate a whole other worldview, the worldview where the Internet is for buying things instead of sharing information.
In 1972, J.C.R. Licklider and the other ARPAnet people showed up in a fascinating documentary called "Computer Networks: The Heralds of Resource Sharing." Well, it turned out that the ARPAnet was the herald of Resource Sharing in the same sense that the Silver Surfer was the herald of Galactus, Eater of Worlds.
Around the turn of the century, there were two very important responses to its success, which you're undoubtedly familiar with.
There was a theoretical response. Roy Fielding, co-author of the HTTP spec, did his doctoral thesis partially to describe what aspects of the web gave it this amazing flexibility, to eat other protocols and branch out into every field of endeavor.
And there was a practical response. Dave Winer and Microsoft released XML-RPC and SOAP, protocols that ran on top of HTTP and whose basic idea was to let automated clients make HTTP requests that would get things done, the way that web browsers let human beings get things done.
There is a huge amount of drama about this whose flames I do not wish to fan. I bring it up only because it's important for this talk that I say what I think is the basic mistake of XML-RPC and SOAP. They tried to cash in on the success of the Web by jumping on the bandwagon, and good for them.
But they jumped on the wrong bandwagon! They jumped on the HTTP bandwagon. They saw HTTP in terms of the Information Superhighway, as a truck that moves data from one place to another.
HTTP makes an especially useful truck because it barrels through corporate firewalls. Many people who dislike the WS-* technologies because of their complexity still buy into the HTTP-as-truck metaphor, and their focus on HTTP causes problems when they need to explain their preferences and design their web services.
Here's what I believe. The Internet is not a truck. When people in the 90s said "WWW" instead of "HTTP" they were on to something. HTTP is only one of the Web technologies, and it's not the most important one. Early versions of Gopher were almost exactly the same as early versions of HTTP.
What the Web had going for it was two other technologies that had never been seen before. There was an addressing technology, the URI, which killed off the other Internet protocols.
And there was a hypertext markup language, HTML, which made it possible to put something entirely new on the Internet without inventing a new protocol.
I've given you this history lesson because it's easy to draw the lines between these three technologies and the success of the Web at assimilating the Information Superhighway and most of the Intergalactic Computer Network. It's also easy to explain the constraints of the REST architectural style in terms of the three Web technologies. And since those are the technologies you're going to be using to build RESTful web services, there's no space between theory and practice. In Act Three I'll spell out a maturity model that uses the adoption of web technologies as a proxy for the RESTfullness of a web service.