About a month ago, I opened a Gemini capsule.
For those of you who don’t know what this is (which will be 99.99% of people),
Gemini is an alternative internet protocol.
The https://
you see prefixed to every URL means you’re using HTTPS
(HyperText Transfer Protocol Secure), the protocol used by the web.
Gemini is an alternative to HTTPS, so you’ll see gemini://
in front of every Gemini link.
These protocols are very different;
you cannot visit a Gemini capsule (a Gemini website) in a web browser.
If you’re knowledgeable enough to install a Gemini client,
you can visit my capsule at gemini://lmbx.me
.
What’s Gemini?
Gemini is a very minimal protocol, it was designed to be simple and rigid. Gemini pages are designed to be mostly plain text. Theming is done on the client side, so CSS doesn’t exist. A lot of features from HTML are missing. There is no JavaScript support. Gemini was designed this way intentionally to not let the protocol be used like the way HTML went.
HTML is the opposite of Gemini; it is very extensible and flexible. That means you can do really cool things with HTML, but it also allowed modern websites to become slow and big. Gemini was designed to go against this. By being so minimal and inflexible, it’s only really practical for delivering text and not much else. The protocol does support transporting arbitrary files, but clients are typically designed for text only. If a Gemini capsule includes an image, that image will open separately in your image viewer. On the other hand, a web browser would try to open and support everything.
If you’re someone fed up with the modern internet, Gemini might sound like a good refuge. Below is what an article on my website looks like in a web browser and a terminal Gemini client, Amfora.
As you can see, the Gemini client doesn’t display images. The images are there, but clients show links to images instead of rendering them. Some GUI clients can render images, but support isn’t universal. The Gemini article is much more information dense and minimal. It’s certainly very different from its HTML counterpart.
I deployed a Gemini capsule next to my website to see what it was like. I was always going to use HTML as my main internet profile, but I was curious about the ultra minimal experience. I ported a few articles to the Gemini capsule as a test. Playing with Gemini taught me a few things, and I want to point them out.
Criticisms about Gemini
I can understand why someone would make Gemini. But there’s a limit to how minimal something can get before functionality is affected. I have boomer takes when it comes to modern technology, but I still want a web browser to support images. The Unix philosophy sounds great in theory, but 1 generalist tool can sometimes be better than having 5 specialized tools.
Too much minimalism
Gemini clients not supporting images is the biggest criticism from me. I get it. A lot of websites follow trends, especially if they’re commercial sites: lots of whitespace, web fonts, animations, and images. Sometimes it’s nice to go to Wikipedia and read dense text in stock serif font.
But not supporting images natively being a ‘feature’? That’s minimalism for the sake of minimalism. It’s like a car manufacturer refusing to implement automatic transmission because it’s bloat. Or a phone company that tells users to buy a dedicated camera to take quality photos.
Gemini is ultimately a protocol for sharing information over a network. That information will contain text, and perhaps files like images, videos, or others like PDFs. Those non-text files aren’t bloated if they actually contribute something. An information sharing protocol intentionally excluding ways to share information is not doing a good job.
HTML does it better
Gemini also doesn’t support a lot of text formatting features that HTML does. Here are many examples.
- Numbered/ordered lists, like this one. Gemini only supports bullet/unordered lists
- Nested lists aren’t supported too
- Tables. Very useful for organizing information
- Text decoration. Maybe some clients can use tricks to display them,
but they are not supported officially. This includes:
- Bold, italics, and bold italics
Strikethrough, highlighting, underlining- No colours
- The useful
<details>
element I often use to condense contextual information - Line breaks. You know, these things:
- 4th level headings and smaller. HTML supports 6, Gemini only supports 3
This has been just formatting and legibility features. Gemini doesn’t support server side theming, so CSS doesn’t exist. As a capsule designer, you can’t customize what your Gemini capsule looks like; the client decides that. While this removes the need to fine tune a CSS file to make your website attractive, it also removes a lot of the fun and creativity of website designing. Because Gemini clients determine the looks, all capsules look the same.
Gemini’s intent is unclear to me because HTML is a superset. An HTML website can be as lightweight and privacy-friendly as a Gemini capsule. It can also look creative and be more accessible. Plus, HTML is used by everyone alive while Gemini is a niche within a niche. As a “product”: who does Gemini serve that HTML can’t?
What I like about Gemini
Not everything about Gemini is bad. There are parts that I like and plan on incorporating into my web design.
Cleanliness
Everything is very clean and legible in Gemini. The “source code” syntax is very easy to parse, both for a client and a human. Here’s a comparison.
This is a snippet from an article I posted on my website and capsule. It’s in raw HTML, Gemtext (the format used to write in Gemini), and Markdown for Hugo.
HTML
<p>I’ve done some digging around in the
<a href="https://interstellarprobe.jhuapl.edu/Interstellar-Probe-MCR.pdf" target="_blank" rel="noreferrer noopener">official mission concept study</a>,
and the summary is that the rocket needs to get within about 2M km from the Sun’s surface.
That is ludicrously close.
Anything travelling <em>that</em> close to the Sun will need impeccable thermal shielding.
The <a href="https://solarsystem.nasa.gov/missions/parker-solar-probe/in-depth/" target="_blank" rel="noreferrer noopener">Parker Solar Probe</a>
needs to survive an irradiance of <strong>650 kW/m<sup>2</sup></strong>
during its closest approach to the Sun at ~7M km.</p>
Gemtext
I've done some digging around in the official mission concept study, and the summary is that the rocket needs to get within about 2M km from the Sun's surface. That is ludicrously close. Anything travelling *that* close to the Sun will need impeccable thermal shielding. The needs to survive an irradiance of *650 kW/m^2* during its closest approach to the Sun at ~7M km.
=> https://interstellarprobe.jhuapl.edu/Interstellar-Probe-MCR.pdf Interstellar Probe mission concept
=> https://solarsystem.nasa.gov/missions/parker-solar-probe/in-depth/ Parker Solar Probe
Markdown (Goldmark)
I've done some digging around in the
[official mission concept study](https://interstellarprobe.jhuapl.edu/Interstellar-Probe-MCR.pdf),
and the summary is that the rocket needs to get within about 2M km from the Sun's surface.
That is ludicrously close.
Anything travelling *that* close to the Sun will need impeccable thermal shielding.
The [Parker Solar Probe](https://solarsystem.nasa.gov/missions/parker-solar-probe/in-depth/)
needs to survive an irradiance of **650 kW/m<sup>2</sup>**
during its closest approach to the Sun at ~7M km.
First of all, yes. The Gemtext is all on one line. That’s how it’s supposed to be written, text is automatically wrapped by the Gemini client. A text editor will wrap the long line of text when viewed in the editor, so the text won’t actually look it is on one line.
HTML is clearly the ugliest. It has the most syntax out of the three formats, is the hardest to type, and is really verbose. Custom HTML gives the best flexibility but it really slows you down. There’s a reason why static site generators exist.
Gemtext, despite being on one line, is the cleanest. It doesn’t support inline links, so they all have to be placed on their own line, one by one. This is the “feature” I want to use from now on. Inline links flow nicely with their context and can save a few lines, but they’re easier to see on separate lines. It also looks a bit better, like a formal report with all the citations listed at the end.
Markdown is close to Gemtext but is a little uglier.
The newlines were made by me,
the rendered HTML would look the same regardless of a single newline.
Some “flavours” of Markdown natively support syntax like <sup>
,
so 650 kW/m<sup>2</sup>
can be written as 650 kW/m^2
and still render correctly.
I use Hugo’s Markdown engine, which doesn’t support syntax like this.
Markdown overall sacrifices a little cleanliness for almost all the functionality.
Ad blockers aren’t necessary
The ultimate purpose of Gemini was to cut out abused parts of HTTP, and it worked. The very concept of JavaScript and browser extensions don’t exist in Gemini. There is no junk running in the background and there are no ads. Gemini capsules are simple and feel lightweight, because the protocol prevents bloat. Try browsing the internet without an ad blocker in comparison, it’s a complete disaster.
I can get behind the intention and principles of Gemini, but it just stripped too many things out of what makes HTML good. HTML is extensible enough to make the mess that the modern internet is, but it still allows for lightweight websites at its core. You don’t have to nuke HTML to make a lightweight internet, you just need competent designers. JavaScript adds useful and great functionality, but it’s optional; a simple static blog doesn’t need Cloudflare CDN and Google Analytics.
So going forward, I’m going to use the link syntax of Gemini; each link will on its own line. I’m going to experiment with two styles: footnotes (HTML) or new line (Gemini). Footnotes resemble citations on a formal paper, there are hyperlinks that take you to a citation list at the end of the document. The new line style is simpler; links exist on new lines, anywhere in the document.
For example, this would be a Gemini style link:
Demo link that takes you to the “ad blockers aren’t necessary” header
This is a Markdown/HTML style footnote link:
Example footnote.1
And if I feel like it, I could make a mirror of this website on a subdomain. That mirror could use a CSS file that makes the website look like terminal Gemini clients. So I can get the best of both worlds; the cleanliness of Gemini, and the functionality of HTML.
-
Hello ↩︎