Bucktooth: Web and gopher interoperability
------------------------------------------

It is fully possible, and unfortunately common, to mix the heterogenous
frigglesnitz that is today's World Wide Web, with the pure simplicity of
Gopherspace. The programmers of Bucktooth find this a despicable evil and
an unholy union that will bear horribly disfigured progeny.

Despite this graphic warning, most people will want to add web links to their
gophers anyway. In 0.1-pr4 and up, this is supported in a protocol independent
fashion; simply specify any URL and an 'h' item type, like so:

hYour Web Link<TAB>URL:http://www.floodgap.com/

Note that the URL must be preceded by a literal "URL:" and that the itemtype
is h. Smart clients will automatically take the URL portion and use it, but
even if they do not, Bucktooth will generate an HTML page with a Refresh:
header and forward them on automatically. Because of the way the redirect
works, even if the destination protocol is not HTTP, the itemtype is still
always 'h' because the client will be downloading an HTML page.

This notation is very clean, but only works on 0.1pr4 and higher. For the
rationale for this approach, see

quux.org/0/Archives/Mailing Lists/gopher/gopher.2002-02?/MBOX-MESSAGE/34

If you are using another server, or an earlier Bucktooth, you must resort
to more disreputable tricks to achieve your ends. One proven method that will
work on servers other than Bucktooth, and will work on any version of
Bucktooth, is to trick the client into speaking HTTP to a web server's port.
This can be accomplished easily in the gopherext file by creating a fake
HTTP/0.9 request with an itemtype of h. For example:

hThe www.floodgap.com web page<TAB>GET /<TAB>www.floodgap.com<TAB>80

will create a selector pointing to the www.floodgap.com web page at
http://www.floodgap.com/ .

Note that most web browsers are not bright enough to automagically turn this
into a web URL -- they will continue to think they're accessing a strange
gopher server on port 80, which in a sense is true, I suppose. Only Lynx
seems to be smart enough to actually turn this into a real URL.

This will not work on web servers that can't understand HTTP/0.9 (very few),
nor for servers that require extra headers (like the Host: and Connection:
headers in HTTP/1.1). This also does not work for Internet Explorer, which
to be sure is a miserable Gopher client anyway.