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:
Then I found out about two things:
- Gemini is a great hypertext protocol that allows people to browse and share content with minimal resources
- KaiOS is an operating system for not-smart-phones, with small screens and lots of keys with numbers on them like it's 2005, but with support for modern things like 4g (as 2g and 3g are being phased out) and unicode
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.
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.
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.
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:
- Using dedicated software: low interoperability with the web, higher barrier of entry
- Using a proxy: limited functionality, impractical use, possibly unavailable (the mozz.us proxy seems to be dead by now)