Gemini client devlog 0: Goals


I'm trying to build a Gemini client for KaiOS.


As I grew up, I was taught not to waste stuff. Waste is dirty, expensive, and harms the planet. Waste is bad. I try not to be a wasteful person: I don't buy stuff I don't need, I eat the food I have on hand before it goes by, I don't have a car, I barely eat any meat... Yet, it is borderline impossible to avoid enormous quantities of waste when it comes to modern technology, specifically personal computers, phones, and internet. I won't go into details, but recommend reading this great article by Nikita Prokopov that matches pretty well my own thoughts:

Software disenchantment

Then I found out about two things:

I like what these things are trying to do. And it seems to me that they should fit pretty well together.

Browsing the web is a pain on KaiOS, because websites are to resource-intensive for the modest hardware running KaiOS, and they are not fit for the tiny screen of said devices.

On the other hand, Gemini, by being a very lightweight protocol, should run in a blink on a KaiOS phone. Also, by letting the client do all the formatting, the tiny screen is not an issue that will be overlooked by virtually all content producers, but one I can have control over and try to do right.

KaiOS app...

KaiOS apps are basically a standalone website, with HTML pages, CSS stylesheets, and JavaScript scripts.

This means that writing a KaiOS Gemini client mainly consists of embedding a JS library to handle protocol and gemtext, and embedding it in a HTML wrapper, with a bit CSS to try and make it look good on a 2.4-inch VGA screen.

I looked around the web and couldn't find any existing JS Gemini client, so I settled to write my own.

This is the hard part, as I have no experience neither with JavaScript nor with lower-level internet stuff for protocol handling. However, I'm confident this is doable, as Gemini was designed for simplicity.

I'm not too worried about the HTML/CSS side of things, as it will be very minimalistic. The (optional) harder part would be to implement user settings, allowing the user some control over the behavior and looks of the final result.

And more!

But that's not all. If you have ever looked at browser extensions, they are basically structured exactly like a KaiOS app, which means that it would require minimal work to port my app to a browser extension, allowing to browse seamlessly between the regular web and the Gemini space. Neat!

As of writing, there is currently one addon for Firefox that offers Gemini browsing capabilities, but it is quite limited and only redirects to a proxy such as:

I feel like a decent browser addon lower the barrier of entry and help people to get interested and involved in the Gemini space, as the current solutions are either: