Codepunk Logo

CODEPUNK

Dreaming of Gopher's Past with the Gemini Protocol

by Michael Szul on tags: apotheosis, cyberspace, podcast, podcasting, gopher, gemini, world wide web, tildeverse
Enjoy this article? We do it with no ads, no tracking, and no data collection. Feel free to:

This is an expanded, written monologue of the Apotheosis pocast episode of the same name. You can listen to the audio version above.

I miss the Gopher protocol.

That's an odd statement to make because the Gopher protocol wasn't successful long-term and it had quite a few drawbacks, but the Gopher protocol was an Internet protocol built on the idea of sharing information in a search and hierarchical manner. Although it shared some of the horizontal nature of web surfing, it certainly adhered (at least on individual Gopher sites) to the horizontal nature of file systems.

The demise of Gopher was a crash-and-burn process of the University of Minnesota trying to lock down the intellectual property of Gopher at a time when the World Wide Web (over the HTTP protocol) wasn't just hitting its stride, but was capturing the attention of Internet adopters as an avenue for a more powerful presentation layer. Even if Gopher had remained open, it would have likely stood no chance against the combination of Internet technologies that allowed markup to be interpreted by web browsers as structured and beautified text and images.

On March 18 [1992], in a conference room of the hotel [in San Diego], [Tim] Berners-Lee presented one possible breakthrough: the World Wide Web. It was evening. Many of the 530 conference attendees had already gone to the bar or to dinner. To the curious who stayed behind, Berners-Lee explained that the Web could be used to connect all the information on the internet through hyperlinks. You could click on a word or a phrase in a document and immediately retrieve a related document, click again on a phrase in that document, and so on. It acted like a web laid over the internet, so you could spider from one source of information to another on nearly invisible threads.

Two other programs with the potential to expand access to the internet — WAIS and Prospero — were discussed in the same session. In the reports of people who saw the presentation, the Web did not come across as the best of them, or even as particularly promising.

The next day, in the light of the afternoon, McCahill and Anklesaria presented the Internet Gopher. It was simple enough to explain: With minimal computer knowledge, you could download an interface — the Gopher — and begin searching the internet, retrieving information linked to it from anywhere in the world. It was like the Web but more straightforward, and it was already working.

At this time, Gopher was already in use by many universities, institutions, and experimenters. The straight-forward protocol and simple interface required little introduction, and Gopher began growing and expanding at an exponential rate.

The number of Gopher users expanded at orders of magnitude more than the World Wide Web. Gopher developers held gatherings around the country, called GopherCons, and issued a Gopher T-shirt — worn by MTV veejay Adam Curry when he announced the network’s Gopher site. The White House revealed its Gopher site on Good Morning America.

As the popularity and install based on Gopher grew, so did the expectations of the University of Minnesota, and less than a year later the Gopher protocol and its enthusiasts experienced a deflating event.

At GopherCon '93, Yen announced that for-profit Gopher users would need to pay the U a licensing fee: hundreds or thousands of dollars, depending on the size and nature of their business. Many users felt betrayed. In the open-source computing spirit of the day, they had contributed code to Gopher, helping the team keep up with the times. Now they were being asked to pony up.

Gopher was maintained by six individuals and never received additional funding beyond that. The team itself abhorred the decision and was dismayed by the reaction from the community. The University of Minnesota, meanwhile, was contemplating eliminating the team and outsourcing their computer operations. Although this incident didn't end Gopher's reach or growth, it certainly slowed it enough at a time when the World Wide Web was making increasing in-roads. When the World Wide Web (and browsers) began supporting images and modem speeds increased, it put Berners-Lee's protocol on an increasing trajectory.

Let's also not dismiss the role that easily available (and downloadable) pornography played in pushing the Web even further.

Gopher's reign was short (3-4 years at most) and by 1994 traffic on the World Wide Web surpassed the text-only Gopher protocol and never looked back.

Gopher Client photo © MinnPost

Today, Non-Internet nerds know what the web is and they know what email is. They certainly know what the Internet is. But those my age who were into computers will likely remember Gopher, Usenet newsgroups, Finger, and Bulletin Board Systems (BBS). There were multiple protocols racing throughout the Internet creating unique experiences for disseminating information. How many of you are still scouring through newsgroups?

The web (and HTTP) took control and as e-commerce became the fundamental rallying cry of the Dot Com Boom, those attempting to make money off the Internet, didn't have time for competing protocols. The web served the need for design-oriented marketing, so all the investment went there. We lost the other protocols to the junk piles of academic experimentation and with that loss, prostrated ourselves at the feet of advertising and marketing.

This consolidated web experience also drove us to consolidated communication—birthing multiple "social networks" that eventually re-branded themselves as social media in order to sell the network to the advertisers. Now, a handful of companies own most of the communication on the Internet—selling your every move—when the Internet was intended as a communication revolution long before it was an information revolution. Information is only important when it is shared between people. The instant and easy communication across the globe on a network of packets was the true revolution of the Internet age.

You can still spin up a Gopher server today. In fact, the legion of veteran Internet geeks have been busy creating toy technologies to revisit or reinvent their favorite early Internet technologies.

Gopher's popularity at the time—and the reason why so many Gopher servers exist on so many different technologies—lies in the ease of the protocol. You can write a simply Gopher server with very little effort:

import { Server, Socket, createServer } from 'net';
    
    const server: Server = createServer((socket: Socket): void => {
      socket.setEncoding('ascii');
      socket.on('data', (data: string): void => {
        if (data === '\r\n') {
          console.log('Serving index page.');
          socket.write('0About server' + '\t' + 'About' + '\t' + '127.0.0.1' + '\t' + '70');
          socket.write('.\r\n');
          socket.end();
        }
        else if (data === 'About\r\n') {
          console.log('Serving about page.');
          socket.write(`This is an implementation of the gopher protocol using TypeScript.\r\n`);
          socket.end();
        }
        else {
        console.log(`Unknown request: ${ data }`);
        }
      });
      socket.on('end', (): void => {
        console.log('Ending Gopher connection.');
        socket.end();
      });
    });
    
    server.listen(70, '127.0.0.1', () => {
      console.log('Server running at 127.0.0.1:70');
    });
    

Mostly, the Gopher protocol relies on ASCII text, tabs, line breaks, and numerical bullets. Creating a working server based on these minimal requirements requires little effort.

Still, despite the modern love for Gopher (and how it's reminiscent of a simpler time), there are several drawbacks, mostly dealing with security around the protocol.

This has led to the creation of another protocol—Gemini—that has been growing in popularity as a modern Gopher alternative. Gemini is meant to solve multiple issues:

  • Light-weight markup for vertical and horizontal exploration and hypertext
  • Use of non-ASCII character sets
  • Use of MIME types instead of Gopher item types
  • Better navigation and resource linking
  • Domain-based virtual hosting
  • Better text formatting
  • Better security through TLS encryption

Gemini describes itself as:

Gemini is intended to be simple, but not necessarily as simple as possible. Instead, the design strives to maximise its "power to weight ratio", while keeping its weight within acceptable limits. Gemini is also intended to be very privacy conscious, to be difficult to extend in the future (so that it will stay simple and privacy conscious), and to be compatible with a "do it yourself" computing ethos. For this last reason, Gemini is technically very familiar and conservative: it's a protocol in the traditional client-server request-response paradigm, and is built on mature, standardised technology like URIs, MIME media types, and TLS.

There's push back against the Gemini protocol (and not just because it requires a long name before the :// of a URL). Many see it as an unnecessary attempt at a protocol that tosses HTML and HTTP elements in the direction of Gopher. Sure it improves security over the traditional Gopher server, but rendering rich content delivers reduced-value HTML-lite pages. The Gemtext markup, meanwhile, is criticized for being a Markdown clone with less efficient anchor tags.

This is the point where a traditional business analyst living in a financially extractive economy would review Gemini and declare it dead in the water. Where is the money to be made?

But from a technological and cultural perspective, burgeoning and amateur protocols represent the same philosophy as open source browsers. Mozilla warned long ago that Firefox was essentially the last browser not corporate controlled. Microsoft gave up on their EdgeHTML rendering engine and adopted Chromium in their Edge browser. This reduces the competition in the browser market, while putting control of how you view the Internet (the rendering of web pages) in the hands of the few. And these few create value and acquire revenue through tracking, advertising, and data collection. Is it appropriate for HTTP and the World Wide Web to be the dominate Internet protocol where web page rendering is controlled mostly by Chromium, which is shepherded by a company that controls the majority of Internet search traffic and makes 90+% of their revenue off of advertising? Who is the product in this situation? I think you can guess.

"If one product like Chromium has enough market share, then it becomes easier for web developers and businesses to decide not to worry if their services and sites work with anything other than Chromium," wrote [Mozilla CEO Chris] Beard.

"That's what happened when Microsoft had a monopoly on browsers in the early 2000s before Firefox was released. And it could happen again."

Consolidation in corporate America (and the global economic world in general) leads to monopolies. On the Internet, consolidation leads to limited choice and a controlled experience. Experimental protocols like Gemini (regardless of whether you care for Gemini) are good because these are coming from people still fighting the good fight of networked experimentation, Internet freedom, and technological exploration. In many ways, these emergent protocol experiments align with retro-computing initiatives like the Tildeverse, where elder states-people of the Interwebz have been rebuilding the age of home directories on a shared server with some Tildeverse offerings including Gopher and Finger protocols, early text-based blogging, and even web rings.

Chatbot engineer Ben Brown recently launched his own Finger server at HappyNetBox, announced it on Twitter, and immediately acquired several hundred users.

As we contemplated previously, this could just be a bunch of middle-aged programmers having a collective midlife crisis and yearning for the "better years" of our youth, but I would be willing to hypothesize that it's more an awakening and realization that the promise of the Internet of our youth has been seized by a handful of modern aristocrats, and we've lost the "freedom" that those early years of exploration exposed to us. This nostalgia that we feel is now being acted upon by those of us who exist in positions to make choices that shape the future of technology and regain that collective, collaborative space.