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.
Awesome.