In the early 1990s, the nascent Internet was commonly, and often sensationally, referred to as the Information Superhighway despite the very acute feelings of vicarious embarrassment that the usage of this term aroused in young people of the time. The first protocols for the Information Superhighway were things like FTP, SMTP, and POP allowing for file transfers, mail sending, and mail receiving respectively. Another early protocol was IRC allowing for real-time chat, and naturally, there was NFS for folks who wanted networked filesystems.
While all of these early protocols were great, there was a rather painful problem with them. Users of, for example, an FTP server would need to be familiar with the particular data hierarchy in use on the FTP server before being able to effectively traverse the server and find whatever it was that he/she desired. The first solution to this problem was provided by Alan Emtage at the McGill University School of Computer Science who created Archie, a searchable index for the discovery of FTP servers first released on the 10th of September in 1990.
Farhad Anklesaria and Mark McCahill in the Microcomputer Center at the University of Minnesota were working on their own solution to the same problem faced by Alan Emtage at about the same time. In their case, however, the solution wasn’t a search engine but instead a hierarchical menu system and internet protocol. With their system, a client would connect to a server and be shown a menu in which each menu entry was either a file or a link to another menu. This wasn’t an official project endorsed by the university and provided with resources, but was rather more a passion project done in whatever time the two had available and with whatever resources they could find. The bulk of the university’s committee tasked with creating a campus-wide information system (CWIS) was focused on mainframes and elegant solutions in search… two things that Anklesaria and McCahill truly didn’t care for much at all. In this case, they used humble Macintoshes as both server and client. When the two had worked out the basics, they realized that they had something quite special. They needed a name that would be palatable to the committee while also being sensible, and so Anklesaria coined the name Gopher after the school’s mascot, which had the fortunate homonym of gofer (one who fetches).
With much of Gopher in a working but rough shape, their goal changed to finishing things up quickly and getting it into a state that would be usable by just about anyone. For this work they brought in Bob Alberti, Paul Lindler, and Daniel Torrey. With more people helping, the project became far more intense. I get the sense that this group was very much enjoying the development process as they’d often stay at the Shephard Labs building where they worked for more than twenty four hours at a time. Work was usually accompanied by copious amounts of pizza, beer, and metal (the first servers to which I found any reference were named Anthrax, Danzig, and Mudhoney). Despite being created on a Macintosh, the pentad knew that they needed to write the client software for the most modest of systems, dumb terminals, which were still in widespread use both around their campus and around the world. The system also had to allow for content to be made quickly and cheaply, and to be served and maintained cheaply and easily. True to the mission, Gopher needed to act as a gateway for other protocols, resources, and services and this function was allowed for in the design and implementation. After expanding the development team, work was completed in three weeks. The first system deployed with a server was a Macintosh SE/30 placed in a closet in the hallway between the Microcomputer Center’s office and showroom.
Despite Gopher solving many, if not all, of the issues faced by network users at the university, it wasn’t an immediate hit. About the meeting for the presentation of Gopher Alberti recalls, “… literally the worst meeting I’ve ever seen. I still remember a woman in pumps jumping up and down and shouting, ‘You can’t do that!’” From the sound of it, the primary issue was that it removed control of the network and control of the network’s contents from the school’s administration. Gopher was seen as subversive. The Gopher team was told to stop their work immediately and permanently.
Of course, that isn’t what happened. The computer center’s director, Shih Pau Yen, was a supporter of Gopher and he provided interference and cover. Meanwhile, the Gopher developer pentad continued their work in secret and on their own free time. They then released Gopher to the world over FTP in April of 1991. It seems to me that they loved the defiance, and that many others at the university did as well.
The software was a hit. Gopher users from around the world began calling the university and asking about new versions. This quickly resulted in the ban on Gopher being lifted. Allegedly, it was McCahill who coined the term “surfing” in relation to the Internet due to his own hobby of windsurfing. Bookmarks in relation to saved addresses likewise arose around this time. A few months later, Tim Berner’s Lee released the World Wide Web. The slowness of the web to spread in these earliest days in comparison to Gopher comes down to hardware and resource availability. The Web required a far more capable machine than did Gopher. Additionally, Gopher had the advantage of prestige. Senator and then Vice President Al Gore visited four GopherCons between 1992 and 1995 along with representatives from the corporate press, the World Bank, and other highly powerful and influential global entities. In 1992, Lee approached McCahill and asked if he’d want to collaborate on a sort of Gopher and Web hybrid. Perhaps unfortunately for everyone today, the two just didn’t get on when they met, and McCahill didn’t find the Web all too interesting given that it was mostly a thing for NeXT machines in his estimation.
For many students at universities around the world, they could now easily access an abundance of information on VT100-compatible terminals connected over serial to their campus’s UNIX machines; glowing CRTs acting as gateways to a world of interconnected computers giving out information for free. From Gopher, a surfer of the Internet could access FTP, WAIS, Usenet, and other resources easily and in a very uniform way. For those lucky enough to have a Macintosh at the time, there was TurboGopher, but clients proliferated quickly on all major platforms.
In a preview of what was yet to come, supporting services came into being. With the example of Archie for searching FTP, Veronica (Very Easy Rodent-Oriented Net-wide Index to Computerized Archives) was developed by Steven Foster and Fred Barrie at the University of Nevada at Reno as a search tool for Gopherspace and released on the 17th of November in 1992. Jughead (Jonzy's Universal Gopher Hierarchy Excavation and Display) followed from Rhett “Jonzy” Jones at the University of Utah the following year allowing users to search within a single server. There were many servers to search too with nearly seven thousand (estimated, I’ve seen reports of more and of fewer) having been online in the latter half of 1993.
While the University of Minnesota had initially been overtly hostile to Gopher, after it became a success, they wanted to monetize it. At GopherCon 1993, it was announced that Gopher servers would need to pay for the privilege of using the protocol. From the perspective of the Gopher team, this made sense. They didn’t just do the development and hosting, they also did tech support. When people called with questions, they were the folks answering the phones, and many of these calls were actually just users with demands for more features meaning still more work. It was a six person team at this point, and a little pay would have gone a long way to making Gopher more sustainable. Well, that didn’t work out. People were angry and many felt betrayed. They weren’t quiet about any of it either. Still, Gopher traffic increased despite licensing having been a failure.
In 1994, fast modems and inexpensive PCs combined to make the World Wide Web more accessible. Web traffic surpassed that of Gopher around the middle of the year. Gopher might have had a chance to continue competition, but the University of Minnesota had a bit of an emergency in 1995. Due to some bad book keeping, the NIH placed the university on a probational status. This put millions of dollars in grant money in question, and effectively all of the school’s software developers were put to work writing new accounting software for the university. Ironically, this software was web-based.
The reality for Gopher was that while traffic was growing at almost one thousand percent per year, the annual growth for the Web was over three hundred times greater, and this shows in even the University of Minnesota employing web technologies. If one were to attempt to identify a single failure of Gopher in competition with the web, it would be the licensing costs. No such fee existed for the World Wide Web. This monetary difference only got worse with time as Apache running on one of the BSDs or on Linux became a default for cheap web servers in the middle of the 1990s. On the client side of this, Netscape brought a ton of innovation to the WWW. Netscape as a zero dollar cost browser combined with BSD and Apache as a zero dollar cost server solution rendered any protocol for which a license fee existed non-competitive. This coming at a time when Gopher was getting nearly zero attention from its owners was doomed Gopher to irrelevance.
Today, Gopherspace isn’t completely dead. There is an active Veronica search engine online with a web proxy allowing access to over three hundred servers. Wikipedia is also accessible via Gopher.
I personally really like Gopher as a protocol. Making a Gopher hole (think website but gopher) is extremely easy and doesn’t require much compute. This means that one can host a phlog (think blog but gopher) on almost anything with a network connection. A single page on a Gopher server is often contained within a file titled gophermap
. The gophermap at the root of the Gopher server is what would be loaded when hitting example.com
at port 70.
iABORT RETRY FAIL
i
i+-------+
i| ABOUT |
i+-------+
i
iA tech history publication
i
i+---------+
i| CONTENT |
i+---------+
i
0A post to the site a_post.txt
i
So, in the example, you have i
which is used to indicate an informational message, and this is likely the single most common type despite being non-canonical. A 0
links to a text file. Other types exist for binary files, telnet, submenus, images, movies, sound files, and so on. While this is all incredibly simple, there is some complication due to variations on formatting supported by various Gopher servers. Some are sensitive to tabs, spaces, and punctuation while others are only sensitive to the starting character and some other character used as a menu entry delimiter.