22 Jul 2025

Gemini, Gopher and and SmolNet

Category notes

Perhaps there are no more reason to be on modern Web internet. It was interesting before it become unusable.

So I’ve to continue journey to alternative so called small Internet (smolnet). If don’t know anything about it then its bad for you. This layer of internet was here before Web. There are a lot of protocols today, but most notable and surived are gopher and gemini protocols. I wrote my first Gopher browser in Borland Delphi 4 somewhere in 1999 without even knowing what it is, by just moving components on the Delphi form builder :)

Lets focus on most used smolNet protocols today:

Gopher

The Internet Gopher protocol is designed for distributed document search and retrieval. This document describes the protocol, lists some of the implementations currently available, and has an overview of how to implement new client and server applications. This document is adapted from the basic Internet Gopher protocol document first issued by the Microcomputer Center at the University of Minnesota in 1991.

|---------------|-------------------------|
| Specification | RFC 1436                |
|---------------|-------------------------|
| Scheme        | gopher://               |
|---------------|-------------------------|
| Port number   | 70                      |
|---------------|-------------------------|
| File format   | Gopher menu, plain text |
|---------------|-------------------------|
| TLS           | With gophers://         |
|---------------|-------------------------|
| Encoding      | ASCII                   |
|---------------|-------------------------|
| Clients       | a lot                   |
|---------------|-------------------------|
| Servers       | a lot                   |
|---------------|-------------------------|

The Gopher protocol is one of the early Internet protocols (released in 1991 at the University of Minnesota) designed for distributing, searching, and retrieving documents over a network. It predates the modern web and was widely used before HTTP/HTML took over.

Unlike the Web, which quickly became graphical and complex, Gopher remains text-centric, hierarchical, and lightweight, which is why it’s still interesting in the context of minimal and alternative networks.

How Gopher Works

This makes it extremely low-bandwidth and easy to implement.

Key Features

Common types: 0 – Plain text file 1 – Menu (directory) 7 – Search query 9 – Binary file g – GIF image I – Generic image

Example of Gopher menu:

TypeCharDisplayName<TAB>Selector<TAB>Host<TAB>Port
1About This Server    /about    example.org    70
0Readme.txt           /readme   example.org    70

Why It’s Still Used

Modern Gopher Clients

Gemini Protocol

Gemini is an application-layer internet communication protocol for accessing remote documents, similar to HTTP and Gopher. It comes with a special document format, commonly referred to as “gemtext”, which allows linking to other documents. Started by a pseudonymous person known as Solderpunk, the protocol is being finalized collaboratively and as of October 2022, has not been submitted to the IETF organization for standardization.

Gemini is a lightweight, text-first internet protocol introduced in 2019 by Solderpunk. It was designed as a middle ground between Gopher and the modern Web — more expressive than Gopher but far simpler and less bloated than HTTP.

Its goals are:

Gemini runs over TLS by default (port 1965), ensuring encrypted connections by design.

Gemini Key Features

A Gemini response starts with a status code (2-digit) and a MIME type. Example:

20 text/gemini\r\n

Gem text example:

# My Gemini Page

Welcome to my capsule!  

=> /about About this site  
=> gemini://gemini.circumlunar.space Project Gemini

Status Codes (like HTTP but simpler):

20 – Success (content follows) 30 – Redirect 40 – Temporary failure 50 – Permanent failure 60 – Client certificate required (optional authentication)

Why Use Gemini ?

|---------------|------------------------------------------------------------|
| Name          | Gemini                                                     |
|---------------|------------------------------------------------------------|
| Specification | https://geminiprotocol.net/docs/protocol-specification.gmi |
|---------------|------------------------------------------------------------|
| Scheme        | gemini://                                                  |
|---------------|------------------------------------------------------------|
| Port number   | 1695                                                       |
|---------------|------------------------------------------------------------|
| File format   | Gopher menu, plain text                                    |
|---------------|------------------------------------------------------------|
| TLS           | Default                                                    |
|---------------|------------------------------------------------------------|
| Encoding      | ASCII                                                      |
|---------------|------------------------------------------------------------|
| Clients       | a lot                                                      |
|---------------|------------------------------------------------------------|
| Servers       | a lot                                                      |
|---------------|------------------------------------------------------------|

Comparison Gemini and Gopher

|------------|--------------------------------------|-----------------------------------------------|
| Feature    | Gopher                               | Gemini                                        |
|------------|--------------------------------------|-----------------------------------------------|
| Encryption | No                                   | Yes (TLS only)                                |
| Content    | Plain text + menus                   | Gemtext (Markdown-like)                       |
| Port       | 70                                   | 1965                                          |
| Complexity | Very low                             | Low                                           |
| Multimedia | Minimal (but anything can be served) | Mimimal (picture can be displayed inside gmi) |
| Use Case   | Directory-style browsing             | Reading focus, makrdown like publishing       |
|------------|--------------------------------------|-----------------------------------------------|

There are a lot of smolnet protocols, you can find a lot of them via links from this article.

What to use them for and why ?

References

https://en.wikipedia.org/wiki/Gopher_(protocol)

gopher://gopher.floodgap.com/

https://en.wikipedia.org/wiki/Gemini_(protocol)

https://geminiprotocol.net/docs/protocol-specification.gmi

https://github.com/makew0rld/amfora

SmolNet

Lagrange

Gemini FAQ

Hint

Donwload Largange because it supports both protocols, and its graphical.

Comments