Blog/2026-04-18/The Gemini Protocol

Recently, I've been thinking about the Gemini protocol and how it allows for text-based web pages and so on. It harkens back to an older web when things were simpler and we weren't building applications everywhere. All right, so that seems interesting to entertain.
How
[edit]In this case, I didn't want to release a whole new version of everything so I did the natural work of proxying the HTTP version and then having the rendering done to Gemtext. That worked fairly straightforwardly using the Mediawiki API and some liberal LLM work.
Problems Implementing
[edit]The first annoyance here was that since I use Cloudflare Tunnel in between me and the web, and I use Cloudflare's transparent cache, things get slightly harder. Cloudflare Tunnel only does HTTP for public access and Gemini also relies on TOFU certs.
If I were directly mapping an A record to my own server, I'd just run Gemini on a separate port and be done with it. But Cloudflare is pretty useful to have so I didn't want to lose it just to get gemini access so what I did was that I used a cheap VPS I have running around to run the proxy on and I had to use a different subdomain (which is honestly the worst thing).
Secondarily, Mediawiki does have some restrictions like linking categories and so on, so on this wiki I haven't used the built-in Wiki linking to link categories so I have some hardcoded rewrites of wiki.roshangeorge.dev and so on in the proxy.
Result
[edit]The result is fairly serviceable as a Gemini site, as you can see above in the Lagrange GUI browser. TUI browsers like amfora also look pretty decent. However, having done all of this I feel less sold on the Geminiweb.
Annoyances
[edit]Gemini is just a little too simple for me. This was perhaps inevitable given the motivations of the project owners/maintainers but a lack of inline images and links, and the fact that Gemtext is unnecessarily different from Markdown really bother me. It also annoys me that they don't have table support in the language!
Daniel Stenberg of curl fame has a blog post on other complaints with Gemini which are more relevant to people having to implement the communication spec, but I don't mind wasteful requests and lack of pipelining on this stuff since it'll be blazing fast being primarily text and so my complaints are mostly utility.
I'll probably keep the proxy up because it's low-effort but I doubt anyone is actually going to visit it. In the end, perhaps the right approach is to have a separate endpoint for Markdown-only text versions of my posts and people can use some kind of Markdown renderer to view pages in a HTTP web browser in a pleasant way according to a user stylesheet whenever text/markdown is sent down the wire.
