Something got me thinking about the gopher protocol last week, and I thought it would be fun to implement something like Net::Gopher::Server. It’s given me an excuse to read Network Programming with Perl, which has (so far) been quite good. I’ve been reading the gopher RFC and a lot of old USENET threads about Gopher+ and other extensions, too.

Since about 1996, my home page has said: “I didn’t believe for a minute [in the early days of HTTP] that HTTP would replace … Gopher.”

I am now ready to admit that this was an incredibly stupid thing to believe – not because the web was inevitable, but because gopher sucks and HTTP is much, much better. I advise anyone who wants to see a bad idea to look at RFC 1436, specifically section 3.8

Gopher is supposed to be extensible because you can add new one-character codes for new types. Types are things like “a uuencoded file” or “a CSO phone-book server” or “a tn3270 session.” So, imagine that every URI schema and MIME type required its own code, and that there are only 124 available codes.


Written on March 20, 2005