Writing

Feed Software, technology, sysadmin war stories, and more.

Tuesday, September 18, 2012

My first httpd server was really intended to serve Gopher

The first web server I ever ran wasn't really a web server. It was something which really existed first and foremost for Gopher, and apparently had HTTP support bolted onto it. Remember Gopher? The way it worked wasn't too far off.

Gopher ran on port 70. At the simplest level, you'd connect to it, fire off a path, and it would send you a reply with the contents. That's it. You didn't have all of these GET and POST things and other "verbs" which would come along in HTTP.

So now imagine the "0.9" flavor of HTTP. You'd connect to port 80, send "GET /path" and would immediately get the contents. When you send a request without the usual "HTTP/1.0" or whatever version on the end, the server does not wait for you to tell it anything else. Instead, it immediately serves a response. Try this against a modern HTTP server even today. It should still just work.

Given that Gopher and this early flavor of HTTP were pretty similar, it's not much of a stretch to see how the same server could handle both. I saw this as a feature and decided to use it when it was time to put up a server. We wanted to support both kinds of clients, so why not?

My users weren't totally thrilled by this server, however. Due to its Gopher heritage, it had the restriction that it would only serve up files which were in the "menu" file. Normally, this was a good thing, since that allowed you to define exactly what would go out in the Gopher menus. However, the HTTP side of the world didn't roll that way. People wanted to be able to drop batches of files into directories and have them just work.

In other words, with this server, you couldn't just drop IMG SRC=... into your page and have it work. You also had to go into the menu file and add that image so that it would be allowed to serve it. Otherwise, visitors to your page would get a broken image instead. This "doing stuff in two places" thing was excessively annoying.

Then again, it was 1994. I guess just having a web site running in those days was no small feat. Within a year or so, we had moved things over to NCSA httpd and then to the Netscape httpd. (Yes, they used to make a server, too.) This made things behave more like what people expected, and that was that.

As for Gopher, I think we realized that nobody really cared and just shut it down. Nobody complained.