----------------------------------------
Linking to non-gopher URLs in gophermaps (WIP)
October 04th, 2021
----------------------------------------

I have uploaded to github the urlhandler.mole script I use with
gophernicus to supply links to non-gopher resources on my server...
It is a work in progress.
Check it out at: https://github.com/zcrayfish/urlhandler.mole

Additionally I have attempted to copy the rationale of why I created
the urlhandler, and the main ways of linking to link to non-gopher
resources on gopher... Hopefully it looks ok here on gopher.
An HTML version is available here, it might be easier to read.
------------------------------------------------------------------------

I cannot stand the hURL scheme that was bafflingly created in 2002...
This despite that gophertype w has been in libwww, and some other
gopher clients, since at least 1992. Unfortunately, some clients support
one or the other, but none that I know of support both CORRECTLY.
(invariably, clients I see that attempt to support both cannot load
regular type h files on gopher, or have other severe issues, nearly
always with hURL handling).

I will attempt to illustrate the three ways I can know of to link to
an example website in gopher so that you may judge for yourself.


|type|display name   |selector                  |FQDN              |port
|----|---------------|--------------------------|------------------|----
|h   |Example website|GET /index.html           |www.example.org   |80
|h   |Example website|URL:http://www.example.org|gopher.example.org|70
|w   |Example website|http://www.example.org    |ANYTHING          |1


The issues:

* The `GET /` method **can only reliably link to HTML documents hosted
  by HTTP/0.9 servers**. Most HTTP servers I have run across these days
  upgrade all HTTP/0.9 requests to at least HTTP/1.0, which adds garbage
  headers to anything sent back... Gopher-only or HTTP/0.9 clients
  _might_ be able to receive HTML documents from these servers, but
  could complain about the headers, and text-documents would be even
  worse... Binary files flat-out will not work for the HTTP/0.9 or
  gopher clients using this method with HTTP/1.0+ servers.

  * Some clients that support HTTP/1.0 and higher are still restricted
    to HTML documents using the `GET /` hack. Lynx is one such client.

  * The HTTP/0.9 specification also clearly says that it is to transfer
    HTML only, using it for binaries is out of scope.

  * **This method has been obsolete since 1992
    (https://math.albany.edu/g/Adm/goph-www.html#1.2), for the love of
    god don't use it!**


* The type `h` with selector beginning with `URL:` method (referred to
  as `hURL` henceforth)

  * Requires the server to actually support it, which some don't.

    * Some servers, such as gophernicus, restrict what types of URLs can
      be linked to

  * _should_ only be used to link to HTML files

    * But most HTML capable clients can handle other really basic files,
      such as plain text, JPEGs, or GIFs.


* Type `w`

  * Much simpler than the other two types because the client need only
    deal with the `type`, `display name` and `selector fields`. (the
    `FQDN` and `PORT` fields are not used at all for this type)

  * Can link to any valid URL, the client is simply expected to open
    whatever the default application is for the given URI scheme.

  * Has been around as far back as I am able to browse the libwww
    source, 1992 or before, which made the `hURL` hack absolutely
    pointless.

  * Only requires client support, but some clients might not support it
    due to it not being in the gopher RFC, more of a problem with NEWER
    clients due to the `hURL` distraction

    * Many libwww-based clients do support it however. (e.g. Lynx,
      elinks)

    * Now also supported by the popular Squid proxy/cache server.
----------------------------------------
Back to phlog index
gopher.zcrayfish.soy gopher root
1655 folks think that the hURL hack reinventing the wheel was dumb.
Future direct comment submission has been disabled for this phlog entry.
Comments are still accepted by email, please send to:
zacharygopher@gopher.zcrayfish.soy
Be sure to include the post title in the subject line! Thanks!
Nobody has commented on this post.