Gopher Menu

       ----------------------------------------
       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.
       
(HTML) 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.
       
(HTML) 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
(HTML)     (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.
       ----------------------------------------
 (DIR) Back to phlog index
 (DIR) gopher.zcrayfish.soy gopher root
       39 folks think that the hURL hack reinventing the wheel was dumb.
  (?)  Comments are enabled for this post, select here to leave yours
       Nobody has commented on this post.