The Gemini Protocol in 2026

52 points by chai


spc476

Obligatory disclaimer: I was the second person, after Solderpunk, to be involved with the Gemini protocol. I implemented the first Gemini server (even before Solderpunk) and I influenced quite a bit of the protocol. Now, with that out of the way ...

TLS. The original idea for Gemini was "a more modern gopher, with TLS" since at that time (2019) people were experimenting with server gopher over TLS [1]. This was also the time of the "Encrypt All The Things!" that Google was pretty much forcing on everyone [2] that Solderpunk decided TLS was mandatory. During the mailing list age [3] there were two distinct groups complaining about TLS: the first group wanted it optional, and a second group wanting to replace TLS with something else, usually a bespoke encryption system the proposer just saw that promised to be simpler/more secure/faster. Of course, only one person in the second group even bothered with implementing their idea, and they later recanted, saying it was probably a bad idea.

Markdown: One could very well use Markdown for Gemini. People seem not to realize that Markdown not only has a MIME type (RFC-7763) but is documented as well (RCC-7764). Since Gemini supports MIME, this is trivial. No client, no my knowledge, handles this.

ANSI escape codes: a bad idea in my opinion. Way too easy to hide text and possibly (at least on MS-DOS/maybe Windows?) to reprogram the keyboard to do bad things. My own simple text client strips any ANSI escape sequences to remove this possibility, but most don't.

Client certificate use: my fault, even if I still think it's a good idea. I'm sad that the use of client certificates never really took off on the web, but key management has always been the hardest part of cryptography. Yes, one can "simply remember a password" but who does these days? Most people use a password manager, which requires storage, much like a client certificate.

Size of Gemini: it's actually larger than gopher.

Another aspect that I think is glossed over is that Solderpunk wanted Gemini to be easy to implement (both the protocol and the document format). In hindsight, I think "ease of implementation" over everything else was a bad idea (and Lagrange, perhaps the most popular Gemini client, itself isn't small, nor easy to implement), but that wasn't apparent at the time. I didn't particularly mind using TLS, but I was using libretls, the library that people should be using for TLS over raw openssl use. As I found out, stuff I found trivial to use (like client certificates) weren't that easy with openssl, but again, that's hindsight.

[1] I'm not a fan of the approach used to support TLS on gopher and it's difficult to support properly.

[2] By marking non-TLS sites with scary warnings.

[3] 2019-2021. The mailing list imploded due to a server crash and it was never restored nor restarted. <editorializing>This was probably for the best, as the community became very toxic towards the very people doing the development.</editorializing>

hongminhee

One thing I haven't seen mentioned: Gemtext's stripped-down markup isn't just an inconvenience. For some languages it's closer to a fundamental barrier.

Japanese ruby annotations (<ruby> in HTML) exist precisely because there's no other reasonable way to gloss kanji with furigana in running text. This isn't a presentational nicety; it's how you make a text legible to readers who might not know a given character. Traditional Mongolian script runs top-to-bottom, with columns progressing left-to-right. Without something equivalent to CSS writing-mode, the text doesn't render awkwardly, it just can't be rendered correctly at all. Arabic and Hebrew need proper bidirectional text handling; Thai has no word separators, so rendering it correctly requires the kind of line-breaking logic that plain text pipelines tend to quietly ignore; Tibetan and Khmer rely on complex ligature and stacking behaviour that falls apart without thoughtful font and layout support.

HTML's <ruby> element, for what it's worth, came from a real internationalization need. Microsoft introduced it for Internet Explorer 5 specifically because East Asian users needed it, and it eventually made it into the W3C standard. That's not the kind of complexity that crept in because advertisers wanted it. It's the kind that accumulated because the web was, at least sometimes, actually trying to accommodate how people write.

I think the Gemini designers were imagining a hypothetical average writer who uses a Latin alphabet, left to right, with no need for anything beyond ASCII-adjacent text semantics. That's a pretty specific person to design around and call it “simple.” Simplicity that only works for a subset of human writing systems isn't really simplicity. It's just a different set of assumptions made invisible by familiarity.