Skip to content
HN On Hacker News ↗

Gemini, Gophers, and Fingers. Oh My! Alternative Internets Beyond HTTPS

▲ 147 points 86 comments by ChrisArchitect 4w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this document is fully human-written

1 %

AI likelihood · overall

Human
100% human-written 0% AI-generated
SEGMENTS · HUMAN 6 of 6
SEGMENTS · AI 0 of 6
WORD COUNT 1,924
PEAK AI % 1% · §4
Analyzed
May 27
backend: pangram/v3.3
Segments scanned
6 windows
avg 321 words each
Distribution
100 / 0%
human / AI fraction
Verdict
Human
Pangram v3.3

Article text · 1,924 words · 6 segments analyzed

Human AI-generated
§1 Human · 0%

In my last post, I announced that I created a bash tool for easier blogging in the terminal, inspired by the tildeverse. Today, I want to continue my discussion on visions of alternative Internets that are already being created. I want to talk about Uniform Resource Identifier (URI) schemes. Sounds boring, right? Or at least complicated, but it really isn't. URIs are just the protocols set for browsing the Internet. There are many, some official (as per the Internet Assigned Numbers Authority) and some unofficial. One of the biggest draws of the IndieWeb for me is the decentralization of the Internet. The entire point is to stop the erosion of the Internet from being a handful of bad-faith, extractive corporate social media platforms. But at the end of the day, we're still all using the same Internet, aren't we? The same handful of browsers, the same frameworks and engines. We can take this a step further, and we can interface with the Internet in ways that don't involve going to websites that start with https:// The Colour of What We Call the Internet Chrome alone controls roughly 73% of global desktop browser market share. If you add in Edge, Brave, Opera, Vivaldi, which all are built on Google's Chromium engine, that accounts for over 80% of desktop browsing worldwide. Mozilla, which still maintains one of the only independent rendering engines (Gecko), is the only viable competitor. Everything else is Blink and Google. More and more, the webdevs of the world test and develop for Chrome only. Agriculture teaches us how dangerous and fragile monocultures like this are. It doesn't need to be this way. https:// is not the only way to connect and interface with the Internet. Some that you may know are ftp:// for file transfers, mailto: for email composition, ssh:// for secure shell access, irc:// for Internet Relay Chat, or magnet: for peer-to-peer downloads. The majority of Internet browsers do not play nicely even with these protocols, handing them off to other applications. But what I want to write about today are three protocols that have their own ecosystems, their own communities, and their own aesthetics.

§2 Human · 0%

finger://, gopher://, and gemini://. Two predate the World Wide Web entirely, but one was created in 2019, the same year the first black hole photograph circled the planet. None of them require a GUI. None of them require JavaScript. All three of them run in a terminal. Finger (1971) Let me start with the deep past, when the ARPANET was less than two years old. In 1971, users wanted to know who else was logged into their small networks, and where they were. The existing tool, called WHO, gave a list of user IDs and terminal line numbers which was cryptic, technical, readable only if you already knew what you were looking at. Researcher Les Earnest at the Stanford Artificial Intelligence Laboratory watched people literally run their fingers down the WHO printout, scanning for recognizable names. He named his new program after that gesture. The finger daemon runs on TCP port 79, serving a small, human-readable file about you. Your name. Your email. Whether you're logged in. And the contents of two files: .plan and .project. The .plan file was originally meant to contain a user's current and future plans, a professional status update before status updates existed. But as the informal culture of the early Internet evolved, .plan files became random musings, personal manifestos, and links to things you were thinking about. A broadcast of who you were to anyone who cared to ask. In ways, it was the first social media profile. I have a .plan file in my tilde home directory right now. I'm not going to tell you what it says, for the point is you have to go looking. finger brennan@tilde.pink and you'll find out what I'm working on right now. And yes, of course the verb "to finger someone," is designed to make you snicker. It's opt-in, low-infrastructure presence. A plain text file and a TCP connection. Bombadillo, the terminal-based non-web browser I'll mention more below, supports Finger natively alongside Gopher and Gemini. You can run your own finger server on any Linux machine. The protocol is so simple it fits in your head. Gopher (1991) Now let's move forward twenty years, to another problem at another university.

§3 Human · 0%

In 1991, the University of Minnesota wanted a campus-wide information system. The project became, as these things do, a design-by-committee monstrosity. A group of programmers, Mark McCahill, Farhad Anklesaria, Paul Lindner, Daniel Torrey, and Bob Alberti, decided to go around the committee entirely and built something themselves on personal computers rather than a mainframe, and see if they could have a working prototype done before the next meeting. They released the code without official approval. The committee initially rejected it, and then the rest of the Internet found it. Paul Lindner, dubbed the Gopher Dude for his evangelism, long metal-head hair and all—signed his emails with Babes in Toyland lyrics. Programmer Robert Alberti later recalled that "[Gopher] was the first viral software. All these people started calling the University and pestering the president and other administrators, saying, 'This Gopher thing is great, when are you going to release a new version?' And the administrators said, 'What are you talking about?'" The administration unsurprisingly reversed their decision and gave the project their blessing shortly after. The name is a triple pun. The University of Minnesota's mascot is the Golden Gopher; "gopher" evokes the act of burrowing; and it's a play on "go-fer," an errand-runner who fetches things on request. The protocol is a hierarchical menu system, you navigate a tree of directories and documents. It's faster and more simple than FTP. For a moment in 1991 and 1992, Gopher and the World Wide Web competed as genuine equals. Two totally different visions of how to organize human knowledge on a global network. Gopher lost. In 1993, the University of Minnesota announced it would start charging a licensing fee to commercial users. Tim Berners-Lee had declared HTTP and HTML completely free and open, with no licensing attached, ever. The press started describing Gopher as an obsolete predecessor rather than a living alternative. Within a couple of years, the race was over because of one institutional decision about money. But, Gopher isn't actually dead. It got turned into a newt, but then got better!

§4 Human · 1%

Here are the stats over the past twenty years, as per Veronica2 Gopher search index:

Index Date Gopher Servers Unique Selectors

19 March 2007 86 740,000

3 January 2008 148 1,220,665

2012 approx. 160 approx. 2,500,000

November 2014 144 approx. 3,000,000

15 October 2015 144 3,314,158

25 April 2016 137 4,396,061

15 August 2017 146 5,176,602

May 2018 260 approx. 3,700,000

10 December 2018 297 3,946,750

May 2019 320 approx. 4,200,000

January 2020 395 approx. 4,500,000

18 November 2020 358 5,973,552

18 October 2021 343 5,294,599

11 October 2022 333 5,098,733

17 February 2024 323 5,113,957

19 June 2025 296 5,113,382

29 August 2025 432 5,254,158

28 January 2026 411 5,856,111

In January 2026, there were 411 active Gopher servers serving nearly six million unique selectors. Gopher is maintained by people who choose it, not being propped up by corporate interest backing whatsoever.

§5 Human · 1%

I maintain my own gopherhole manually with a shell script, gopher-build.sh, that lives in my bin/ directory. Navigating it in a terminal feels like handling a card catalogue. Gemini (2019) Project Gemini was started in June 2019 by a pseudonymous developer known as Solderpunk. The name is a reference to NASA's Project Gemini, the human spaceflight program conducted between 1964 and 1966, and the protocol runs on port 1965 to honour that. It has nothing to do with Google's AI, or the cryptocurrency exchange. It's named after part of the space program between Mercury and Apollo, the middle step, the bridge. What made the moon landing possible. Solderpunk designed Gemini as a direct response to watching more and more people rediscover Gopher, finding a refuge from what the web had become. But Gopher, with its age, has a significant problem: no encryption. Particularly after Edward Snowden's 2013 revelations about mass surveillance, running an unencrypted protocol started to feel more and more like bad practice. Gemini's answer is to make TLS encryption mandatory for all Gemini capsules. The Gemini specification fits in a few pages. Requests are a single URL terminated by a line break. Responses include a two-digit status code, a content type, and the data. That's it. There are no cookies, no tracking pixels, no third-party resources, no behavioral analytics. A Gemini capsule cannot phone home and surveil you. There's no JavaScript or cookies or tracking pixels or 3rd-party resources or any other bullshit. Gemtext, Gemini's native document format, is line-oriented. The first three characters of a line determine its type: a heading, a link, a list item, a quote, a preformatted block, or body text. There's no nesting, inline formatting or images. You can't use bold for emphasis or italicize a word for tone. Writing is stripped down to its skeleton, and I think that forces you to be a better writer. I've been using Gemini for a while through Smol Pub, a brutally simple blogging platform which publishes your posts at both https:// and gemini:// simultaneously. For only $5, you have a lifetime license to the platform, which I think is an amazing deal!

§6 Human · 0%

The math of the small web is different from the math of the attention economy. Because I work primarily in Markdown, I built a Markdown to Gemtext converter, which is a great way to get started. You can read my write-up about the project on my smol pub. Blogging? More Like Gemlogs and Phlogs! As I wrote about in my previous post, ttbp, the tilde.town blogging platform, nicknamed FEELS is one of my favourite ways to blog. You run it in the terminal, opening your text editor of choice to a plain text file. You write, then save and quit. The entry propagates automatically to a global feels list, and publishes to both HTML and Gopher simultaneously. I have a public_gopher/feels directory right now that's synced to my gopherhole. I think the naming is important, as this isn't content or articles, they're called feels. It's people writing mundane journal entries, poetry, and reflections. Emotional and human. Electric intimacy of strangers sharing inner lives with anyone patient enough to look. A phlog (a portmanteau of "Gopher" and "blog") is a blog maintained in Gopherspace, updated via a gophermap. A gemlog is the same thing for Gemini. My gemlogs/ directory has its own feed and indexor. Gemlogs follow the Gemini subscription convention, which means it's designed to be subscribable without needing RSS or Atom. Each entry is formatted as: => /posts/YYYY-MM-DD-title.gmi YYYY-MM-DD Post title The date format (YYYY-MM-DD) at the start of the link label allows Gemini clients to automatically detect and subscribe to new posts. The simple, human-readable format works great for this kind of small-scale personal publishing. A Gift to Old Hardware Something important about these protocols that I think is underlooked is that, due to their simplicity, all you need is the terminal to access and create on them, no GUI needed at all. This vastly lowers the hardware requirements compared to the mainstream Internet browser. Loading a modern website built with React (or any of its cousins) requires your browser to download a JavaScript bundle, parse it, execute it, render a virtual DOM, reconcile that DOM with the real one, and then do it all again whenever state changes.