What is the Gemini protocol?
Gemini is a new, collaboratively designed internet protocol, which explores the space inbetween gopher and the web, striving to address (perceived) limitations of one while avoiding the (undeniable) pitfalls of the other.
In my opinion, the Wikipedia page is more informative (if a bit technical):
The Gemini protocol is an application layer protocol for distributed hypertext information systems that provides access to simple, primarily textual documents in Gemini space. This is done with contemporary technologies such as TLS, thereby improving privacy and user agency relative to the Web. The protocol is being designed collaboratively and is not currently being standardized as an internet standard.
According to that wiki page, the project is quite new, even for Internet standards, as it was introduced in June 2019.
Last week I was looking for a project to tinker with fs2 streams, so I thought that may be writing a simple Gemini server could be perfect.
That didn’t go well, and I ended frustrated and rage-quiting fs2, but that’s a story for a different post. So I thought, what about Akka Streams? It is a completely different beast, but the docs are better and there is no need to deal with the tagless-final pattern, so I found the API quite pleasant to use.
After a couple of days of coding, I’m getting close to beta quality, and I have learnt a lot in the process.
It was inevitable that I went down the Gemini rabbit hole, and I tried some clients:
- Lagrange: probably the more flashy client, although the SDL rendering makes it feel like a weird desktop app.
- Amfora: a console client. Considering that Gemini is text-only, this one is excellent.
- Ariane: this one for Android. It is probably not as polished as the other two, but is nice to have Gemini in your phone I guess.
What I found in Gemini really surprised me.
It feels like an early Internet, as in a smaller place, with reminiscences of webrings from the 90s. There is less noise and more focused content. I’ve found forums, personal pages, and blogs.
The use of RSS is widespread and looks like is one of the main ways to discover content via aggregators (although there are at least two search engines). Some hosts provide mirrors and proxies to the world wide web, as a simplified version of the same content.
And because the name of the project comes from the second U.S. crewed spaceflight program, it all has its own flavour: pages are capsules, blogs are gemlogs (or glogs), and there is a CAPCOM (from capsule communicator) and a Spacewalk (both aggregators).
I tried one of the clients and, without thinking about it, I ended spending a good time reading random blogs. I mean, glogs.
I plan to continue with my server and, probably, release it at some point when I think it is production ready. And, who knows? I may put some content on the Geminispace.