Diving Deeper Into the Small Internet

Written By: Jake Bauer | Posted: 2020-05-13 | Last Updated: 2020-05-13

Yesterday I posted about making my website available over the Gopher protocol. After I posted that, I was alerted to another up-and-coming protocol called Gemini which promises to be somewhere in between the complexity of Gopher and the Web while leaning more towards the Gopher side.

In the morning, I awoke to some new activity in the Fediverse and on HackerNews about a Gemini browser called Castor through which I learned about the finger protocol. I spent probably about an hour or two reading about the two protocols and exploring Gemini-space. My morning was a rabbit hole of discovery.

I really like the idea of Gemini. It aims to combine the simplicity of Gopher with a few of the conveniences of the Web. For example, it supports inline links and requires connections be encrypted using TLS unlike Gopher which doesn’t support inline links and is transmitted over plain text. If Gemini’s popularity keeps growing, I can see it becoming the de-facto standard for the small internet’s alternative to the web where Gopher would exist for compatibility with older devices and browsers.

To host a Gemini server, I found the GeGoBi server which says that it understands Gophernicus-style gophermap files and is able to serve them over the Gemini protocol. Therefore, all I had to do was download the server, run it, and it now serves my Gopher files over Gemini so I don’t have to maintain two versions of the files for now.

I am thinking that, once I’ve finished re-writing the program which compiles my Web pages, I will write a program to translate those pages into Gemini pages and then into Gopher pages so that I can support all three protocols without needing to painstakingly convert each page manually. I’ve never written something like this though, so I imagine it’s going to take me a while to figure out. I’ve also thought about contributing this functionality to pandoc but I’ll wait until I’ve solved the problem first, then figure out how to integrate it into pandoc without having to figure out pandoc, Haskell, and how to solve the problem all at the same time.

Regarding the finger protocol, I’m not sure if I’ll be able to implement that on my server. I currently run everything behind NAT and the Wikipedia page on the finger protocol mentions that it does not work through NAT. It looks like it would be a great alternative to a Now page and a Contact page for the small internet but I’m not sure if I’ll be able to get it working with my setup.

All of these technologies are very exciting. The text-only interfaces of things like Gemini/Gopher, IRC, finger, and e-mail feel really efficient not only in relation to resource usage, but also in how they feel to interact with. I highly recommend checking them out for your websites.

This is my nineteenth post for the #100DaysToOffload challenge. You can learn more about this challenge over at https://100daystooffload.com.