User Tools

(aka 'the best point military institute')

Site Tools

tools:gopher

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tools:gopher [2026/03/12 19:42] – [Browser Extensions] Humphrey Boa-Garttools:gopher [2026/03/12 22:29] (current) – [Dynamic Gopher Sites] Humphrey Boa-Gart
Line 3: Line 3:
 **Gopher** is an ancient internet protocol for serving something similar to web pages. Like HTTP, it serves pages, media & files, using inline links to connect the pages of a Gopher site. **Gopher** is an ancient internet protocol for serving something similar to web pages. Like HTTP, it serves pages, media & files, using inline links to connect the pages of a Gopher site.
  
-Unlike HTTP, there are no fancy headers. Neither is there style information associated with it. Gopher markup language is a lot more concise than HTML, providing just barely enough functionality to tell the server where on the page to put links & plain text. All styling is decided by the visitor's Gopher browser, just like with [[tools:irc|IRC]]. As a result, Gopher sites are //extremely// fast to load, as they consume a fraction of the bandwidth it takes to transmit an HTML page.+Unlike HTTP, there are no [[tools:http-headers|fancy headers]]. Neither is there style information associated with it. Gopher markup language is a lot more concise than HTML, providing just barely enough functionality to tell the server where on the page to put links & plain text. All styling is decided by the visitor's Gopher browser, just like with [[tools:irc|IRC]]. As a result, Gopher sites are //extremely// fast to load, as they consume a fraction of the bandwidth it takes to transmit an HTML page.
  
 Scripting options are far more limited as well. The Gopher ecosystem relatively resistant to many common methods of browser fingerprinting, as well as ad beacons and advertising in general //(Though it is not entirely private as it does not support TLS)//. This has made the Gopherspace a popular niche destination well into the 21st century for those looking for a simpler, more intentional, and less distracting internet. Scripting options are far more limited as well. The Gopher ecosystem relatively resistant to many common methods of browser fingerprinting, as well as ad beacons and advertising in general //(Though it is not entirely private as it does not support TLS)//. This has made the Gopherspace a popular niche destination well into the 21st century for those looking for a simpler, more intentional, and less distracting internet.
Line 17: Line 17:
 ==== Visually ==== ==== Visually ====
  
-The slickest and easiest solution is to install [[https://gmi.skyjake.fi/lagrange/|Lagrange]]. It's fast, the interface is clean, and it's available for [[https://apps.apple.com/us/app/lagrange-smallnet-browser/id1554714615|iOS]], [[https://flathub.org/en/apps/fi.skyjake.Lagrange|Flatpak]], and a multitude of [[https://git.skyjake.fi/gemini/lagrange/releases|other platforms]]. Even better, it also supports the [[tools:gemini|Gemini]] protocol, which is sort of a modern version of Gopher with a few extra convenience & markup features. The Gopher & Gemini ecosystems are very close to each other, so having them both in the same browser is very useful.+The slickest and easiest solution is to install [[https://gmi.skyjake.fi/lagrange/|Lagrange]]. It's fast, the interface is clean, and it's available for [[https://apps.apple.com/us/app/lagrange-smallnet-browser/id1554714615|iOS]], [[https://flathub.org/en/apps/fi.skyjake.Lagrange|Flatpak]], and a multitude of [[https://git.skyjake.fi/gemini/lagrange/releases|other platforms]]. Even better, it also supports the [[tools:gemini|Gemini]] protocol, which is sort of a modern version of Gopher with a few extra convenience & markup features. The Gopher & Gemini ecosystems are very close to each other, so having them both in the same browser is very useful. It's not uncommon for Gopher/Gemini servers to have parallel [[tools:finger|Finger]] services either, and Lagrange has support for that protocol as well.
  
-If you want more options, check [[https://en.wikipedia.org/wiki/Gopher_(protocol)#Client_software|Wikipedia]], but I'm telling you that Lagrange is the way to go.+If you want more options, check [[https://en.wikipedia.org/wiki/Gopher_(protocol)#Client_software|Wikipedia]], but I'm telling you that Lagrange is the way to go if you want an elegant GUI app that's easy to use.
  
  
Line 40: Line 40:
 First is the popular swiss-army knife [[wp>CURL|curl]]. If you need to start scripting Gopher requests or spidering sites, curl is just as useful with Gopher sites as it is HTTP sites. First is the popular swiss-army knife [[wp>CURL|curl]]. If you need to start scripting Gopher requests or spidering sites, curl is just as useful with Gopher sites as it is HTTP sites.
  
-You can also mount Gopher sites as filesystems! Remember that Gopher was designed over 30 years ago to make it easy to organize basic articles, images & files for public distribution. The way Gopher data is formatted is extremely easy to pump into a mount point. To demonstrate this, I used ChatGPT to whip together a quick example in Go using FUSE, which I have for reference on Github at [[github>HumphreyBoaGart/gophuse]]. It's a bit risky to use //(be wary about mounting untrusted Gopher sites)// but if you're using Gopher to power a filehost, this hat trick makes it really easy to grab files off your server in bulk.+You can also mount Gopher sites as filesystems! Remember that Gopher was designed over 30 years ago to make it easy to organize basic articles, images & files for public distribution. The way Gopher data is formatted is extremely easy to pump into a mount point. To demonstrate this, I used ChatGPT to whip together a quick example in Go using FUSE, which I have for reference on Github at [[github>HumphreyBoaGart/gophuse]]. It's a bit risky to use //(Without TLS, Gopher is **extremely** vulnerable to man-in-the-middle attacks)// but if you're using Gopher to power a filehost, this hat trick makes it really easy to grab files off a trusted local machine in bulk.
  
  
 ===== Hosting Gopher Sites ===== ===== Hosting Gopher Sites =====
  
-{{wst>expand}}+Other popular Gopher server daemons include [[github>StygianBlues/geomyidae|Geomyidae]], [[github>xvxx/phd]] and [[https://gophernicus.org/|Gophernicus]]. I personally prefer Geomyidae since it's lean & more faithful to the protocol. My [[github>humphreyboagart/grackle|Grackle]] server management package actually has a Geomyidae installer built into it, for running a Gopher server alongside normal web sites.
  
 +
 +==== Dynamic Gopher Sites ====
 +
 +It is true that you can only transmit a limited amount of datatypes between server & visitor over the Gopher protocol. However, you can do //virtually unlimited// server-side processing as long as the output follows the protocol's transmission format.
 +
 +Most Gopher servers have support for running **CGI scripts**, like the internet of old used to have to do with PHP scripts. Modern PHP installs use heavily abstracted versions of this now, which are tailored specifically for HTTP, so they don't work with Gopher servers too well. However, modern PHP installs also come with ''php-cli'', a command-lined version of PHP which spits out plaintext data in a form //especially// suited for Gopher. You just make a CGI wrapper for your PHP script, and pass it to ''php-cli'' like this:
 +
 +<file cgi loader.cgi>
 +#!/bin/sh
 +exec /usr/bin/php /path/to/script.php
 +</file>
 +
 +As long as the data can be parsed by a Gopher server, this means you can actually have complex database-driven websites //(within reason)// in the Gophersphere. This trick is equally applicable to the [[tools:gemini|Gemini]] platform as well.
  
  
Line 62: Line 75:
  
   * [[https://ils.unc.edu/callee/gopherpaper.htm|Where Have all the Gophers Gone?]] - A retrospective history of the early Gopher project.   * [[https://ils.unc.edu/callee/gopherpaper.htm|Where Have all the Gophers Gone?]] - A retrospective history of the early Gopher project.
 +  * [[arch>Gopher]] - Gopher resources on ArchWiki.
  
  
  
-{{tag>Tools}}+{{tag>Tools Protocols}}
tools/gopher.1773344562.txt.gz · Last modified: by Humphrey Boa-Gart

Find this page online at: https://bestpoint.institute/tools/gopher