Subject: A gopher introduction
From:    gnat@kauri.vuw.ac.nz (Nathan Torkington)

Gopher - The Internet Resource Discoverer

Gopher was developed at Minnesota University.

This gopher introduction was written by Nathan Torkington (reachable
through e-mail as Nathan.Torkington@vuw.ac.nz).  Distribution without
profit is authorised, commercial use must be authorised by Nathan
Torkington.

$Id: gopher-tmt,v 1.5 92/10/11 19:32:00 gnat Exp $

Gopher is a system for providing information over the Internet.  It
gives users a consistent, simple menu interface to information and
hides the method used to retrieve it.  In addition, gopher also allows
seamless links between information providers.  To do this it uses a
recently popularised computer science concept, that of the
client-server model of computing.

The client-server model is a commonly used method of providing
services over a network.  The end-user uses a client program to access
information by communicating with a server program.  Typically the
server and client are running on different machines and communicate
over the network.  You need not have a server of your own to be able
to use the client.

Information providers will wish to run a server.  Servers give the
menu structure to clients, as well as providing documents on request
and allowing full-text searches (in conjunction with either the
public-domain WAIS software or the full-text database software that
comes with the NeXT).  WAIS stands for "Wide Area Information Server"
- for more information, see the article on WAIS.

It is the gopher client that users will use to traverse gopher's
menus.  Items in these menus are of three major types - the type of
the menu item determines what will happen when that item is selected.
In general, selecting an item will either give another menu, give a
document to view, or let a user search a remote database.  It is the
fact that the user need only view the gopher world in these three
terms that makes gopher accessible to everybody.

Gopher clients are available for System V and BSD releases of Unix,
the X Window system, GNU-Emacs under Unix, Macintosh Hypercard and
Application, VMS, VM/CMS, and IBM PCs with packet-driver software.
Gopher servers are available for Unix, VMS, Macintosh, VM/CMS, and
MVS.

The fundamental concepts in Gopher are the menu, the link, the
document, the outside connection and the index.  Menus are the way
that users navigate through "gopher-space", the world made up of the
menus and information available through gopher.  A menu is a list of
items which the user may choose one from.

Items in a menu may turn out to be links to another menu.  This new
menu need not be located on the same server as the original, and this
enables information providers to avoid duplicating effort.  This also
means that gopher users can access information from any of the
numerous gopher servers around the world without needing to know where
the information is coming from.

A user's search through gopherspace should ultimately terminate in
either a document or an outside connection.  Documents are simple text
files, images, sound files, programs, or whatever else the information
provider wants the user to be able to have a copy of.  Outside
connections are network connections to services or programs which
cannot be integrated into gopher (most library catalogs currently fall
into this area).

Indexes are the type of document that allow full-text database
searching.  The full-text database is designed explicitly to search
documents on any word that appears in them.  When an index item is
selected, the client asks the user for words to search for.  These
words are then passed back to the server which does the search.  The
client then sees (hopefully) a menu of documents, each of which
contain the words searched for.  These may be retrieved like normal
documents.

To try out gopher without compiling anything, you have to be on the
Internet.  The following is a brief guide to the curses-based Unix
client.  You will need to know how to use the 'telnet' program to
connect to other computers.

Telnet to consultant.micro.umn.edu and giver your username as gopher
(no password is required).  Enter your terminal type (most will be
vt100).  You will be connected to a client program, and given a menu.

The text at the top of the screen (probably something like "Internet
Gopher Information Client v1.1") is the name of the gopher client you
are currently using.  The next line (something like "Root gopher
server: gopher.tc.umn.edu") tells you which server you are currently
connected to.  You don't need to know this; it is present only for the
curious.

Beneath the name of the server is the real menu.  You can move up and
down the menu with the cursor keys (if your terminal supports them) or
by control-n and control-p.  The --> shows which item on the menu will
be selected when you press Return.  Typing a number and pressing
return moves the --> cursor to the item of that number.  The question
mark (?) key gives help.

Most terminals only let gopher display up to 18 menu items at a time,
but gopher allows menus larger than this.  To move forward and back in
pages of menus (the client prints something like "Page 1/2" in the
bottom right hand corner of large menus), use the less-than ("<") and
greater-than (">") keys.

This gopher client shows what type the item is.  Items which are links
to menus have / after their name (for instance "Fun & Games/").  Items
which are indexes have <?> or <idx> or <cso> after their name.  Items
which are outside connections have <tel> after their name.  Items
which are documents have nothing after their name.

When a link has been selected, pressing "u" goes back one level.  Try
it and see.  Press "Q" when you are finished experimenting.

If you want to compile the gopher client software on your local
machine, the source is available from boombox.micro.umn.edu in the
directory /pub/gopher - see the article on using anonymous FTP for
help.  Full source for all clients and servers are available, and the
programs may be moved to more operating systems.  The source code is
freely distributable, for anyone who wants to improve, adapt or port
the code.

The Usenet group comp.infosystems.gopher exists to discuss gopher, and
people there will probably be able to answer questions about using or
installing gopher.