Abandoned project: Orbiter

In summer 2021, I was getting into the gemini protocol. To summarize, it’s a retro leaning communication protocol publishing work on the internet. It uses a constrained communication protocol to limit the possible uses of pages and browsing requirements for clients to create a more homemade communication space. The protocol is simple so creating a server or client is essentially a weekend project for an experienced software engineer. I was also inspired by a few interesting services accessible over gemini.

Astrobotany is a game/garden server that you can login to on gemini and interact with. It uses the interesting in-band client certificates support of the protocol to allow authenticated access to your garden space. A interactive game available on a protocol that is mostly used for blogs. Flounder is another inspiring project. It a site that let’s users edit their blog on https and serve their content on https and gemini. It’s an interesting combination of https write functionality and gemini read. From both of those projects I wanted something that was somewhat interactive on the gemini side, using client certificates for private access, but also a place to publish content for a private audience. I’ve been on the friends-and-family scoped communication projects kick for a while and this is another project aiming at that space.

Orbiter became the working name of this new project. It was envisioned as a gemini hosted shared message board. Users authenticate by providing a client certificate. A password can be provided using the “sensitive input” protocol feature (more on that later) as a backup authentication method or for establishing the client certificate association. From there you can read the latest posts and add simple comments in reply. Posts are received, not through a corresponding http web page, but through email. Conceivably the whole editing and reading experience could happen using very low-tech protocols and applications. Emails received would have to be plaintext only and expected to be in gemtext format to be rendered correctly. I didn’t realize it at the time, but I was basically describing a gemini hosted private email message list archive without the email forwarding part.

Now we run into the problems. Sending email is pretty straight forward, but receiving email is less so. IMAP/POP3 MTA server integration is a harrowing operational space. To get something off the ground I decided to have the MTA provided by a paid service (a dedicated address in fastmail) and just implement a specialized MUA on the server itself. Ensuring the input formatting was acceptable was also difficult. No great way of giving feedback to the author that their input was acceptable and presented as they expected. All the technical cruft of email editors could subtly mess with your intended text in unexpected ways, so some means of fixing posts would be an inevitability. However, I figured that could be a beta level feature for iteration on later. Next I found through testing various of-the-shelf gemini clients, that the client certificate support was rather spotty. It seems that many authors of clients leave that for future iterations due to the complex ux and low usage of client certificate features. I also made a few mistaken assumptions about how the server I thought I was writing would interact with other services and proxies, but those are technical mistakes that has little to do with the design of the project.

The final nail in the coffin for this project was a clarification of what the gemini protocol was for. Drew Devault published a clarifying article about the purpose of the gemini protocol, what it’s for, and what it protects against.

Gemini is a read-only protocol for hyperlinked content distribution.

Emphasis on read-only. It’s for publishing content, not for developing apps on. Doing otherwise is mostly asking for bad time. I have come to agree with that statement, but hadn’t fully realized that until that point. That change of perspective made it clear to me that the technology and design was not the right approach to the problem. If I were to go back and try something similar, it would be to look at message list archive hosts and see if there was a way to extend them to host the list over gemini as well. An interesting idea, but less of a need for me personally.

And so orbiter enters the great hall of abandoned projects as a reminder or as a warning.


last-modified: 2024-03-17 21:37 CDT