# Gopher

Gopher est une norme de communication numérique conçue en 1991, concurrente du HTTP utilisé dans le World Wide Web et désormais désuète. La norme Gopher permettait de distribuer, chercher et récupérer des documents sur le réseau Internet, et de se connecter sur un serveur Telnet. Quelques utilisateurs développent toutefois font vivre ce protocole, mettant en avant sa simplicité et sa faible consommation de données. Contrairement à HTML, la mise en forme est librement effectuée côté client.

## Historique

Lancé en 1991, Gopher est utilisé pour accéder au portail Internet de l'université du Minnesota. Ses créateurs sont Mark McCahill, Farhad Anklesaria, Paul Lindner, Daniel Torrey, Adam Huminsky et Bob Alberti. Gopher est le nom d'un rongeur Goldy Gopher (en), mascotte de l'université.
Gopher permet de consulter l'annuaire téléphonique de l'université, lire des textes en ligne, télécharger des fichiers binaires, faire des recherches par mots clés et des connexions à des serveurs Telnet. Un logiciel Gopher est aussi créé. Il ne lit que les données textuelles, et évolue vers le mode graphique, Gopher+.
Le succès de la norme Gopher et du logiciel consacré dépasse le cercle de l'université et gagne la totalité du monde universitaire relié à l'Internet, puis les administrations gouvernementales. Gopher devient une norme Internet en mars 1993 ; sa version évoluée, Gopher+, en décembre 1994 par la RFC 1738.
Gopher est en compétition avec les logiciels et normes WAIS et Archie, ainsi que le HTTP et le Web créés à la même époque. Ce dernier, utilisant le langage HTML, arrive plus tard mais supplante les autres normes à partir de 1995. Depuis les années 2000, la norme Gopher est encore utilisée par quelques passionnés.
En 2019 est lancé le projet Gemini comme une alternative à Gopher.

## Licence

En mars 1993, l'université du Minnesota décide de demander des redevances sur l'utilisation du serveur, à l'inverse du CERN où est développé le Web (avril 1993). Il est possible que la licence payante soit la cause de l'effondrement de Gopher. Dans son mémoire Internet Project Gopher, The Rise and the Fall of Gopher, Robert Alberti conteste ce point de vue et montre que le déclin de Gopher coïncide plutôt avec l'adjonction de la balise image (<IMG>) dans le HTML, qui jusque là affichait uniquement du texte (tout comme Gopher). Ce n'est qu'en 2000 que l'université de Minnesota libère le code source et les place sous la licence publique générale GNU.

## Logiciels pour Gopher
### Navigateurs supportant Gopher en mode graphique

* Mozilla Firefox avec le module OverbiteFF, OverbiteWX ou OverbiteNX (ce dernier nécessitant un logiciel installé sur le même ordinateur pour fonctionner) pour Firefox 56 et supérieur
* SeaMonkey avec le module OverbiteFF
* Konqueror avec l'extension kio_gopher
* Camino
* Internet Explorer avant la version 6, et la version 6 en réactivant le support dans la base de registres, prend en charge le protocole Gopher.
* WebPositive sous Haiku peut utiliser Gopher par le Service Kit depuis la révision hrev47571.

### Navigateurs supportant Gopher en mode texte

* Lynx : mode semi-graphique.
* ELinks : mode semi-graphique.
* www : mode ligne de texte. Le plus ancien des navigateurs Internet disponibles.
* snarf : permet de télécharger un fichier situé sur un serveur Gopher, depuis un terminal.

### Logiciels supportant Gopher en mode texte

* Elpher : extension pour l'éditeur Emacs, installation via MELPA.

### Logiciels pour créer un site Gopher

* Aftershock — écrit en Java.
* Bucktooth — serveur Gopher moderne écrit en Perl.
* Geomyidae — écrit en C. Domaine public.
* GN
* GoFish
* GOGOPH Server — serveur gopher moderne écrit en Java basé sur Netty (JBoss), GPL.
* GOPHSERV — cross-platform, GPLv3, FreeBASIC.
* Gopher Cannon — Windows 32 et 64 bits, gratuiciel, écrit en .NET 3.5.
* Goscher — écrit en Scheme.
* mgod
* Motsognir — écrit en C, multiplateforme, GPLv3.
* PyGopherd — Serveur Gopher+ écrit en Python.
* PyGS
* gophrier — écrit en C, GPL.
* Gophernicus — supporte AIX, GNU/Linux, MacOSX, BSDs et Haiku ; écrit en C, BSD.
* Flask-Gopher — Module supplémentaire pour le framework Flask en python, permettant à Flask d'utiliser le protocole Gopher

## Passerelles entre Gopher et Web

Des sites Web permettent d'afficher des pages Gopher depuis un navigateur Web : Floodgap Public proxy, Gopher Proxy proxy. Certains sites Gopher fonctionnent en double mode, Gopher et Web. Un proxy, comme squid, peut faciliter l'accès au monde Gopher depuis un réseau local.