I jumped in the Gemini bandwagon, if you don’t know about it yet, Gemini is a new protocol which fills the space between gopher and the web, it can distribute arbitrary files, and it’s a awesome to serve text files in the form of blogs (or gemlogs in the gemini jargon). There’s been a lot of adoption lately and I figured I would jump in too!
The protocol is simple enough that any single person can implement a server and a client in a very short time. 1 There’s a requirement of TLS usage and the recommended authentication method is in the form of Trust on First Use (similar to the way SSH authenticates) which makes the use of self-signed certificates viable and takes away all the cruft of having to request certificates from a certificate authority.
There’s a minimal markup format inspired from markdown (though way simpler) called text/gemini included in the specification which is the HTML of the gemini world. The format is line oriented, and has only a few line types.
Here’s a little snippet of the format:
Normal text Lines without spaces in between will not be joined together. # Heading 1 ## Heading 2 ### Heading 3 => gemini://link.link User friendly name * Unordered lists > Quote lines Lines starting with "```" will toggle preformatted text
There’s also no styling markup in the spec, the client is completly responsible for the style of the page. Also, since the server specification can handle any file type, the there’s nothing stopping a client from receiving a text/markdown file and rendering that.
This project started in a very interesting time as well. The web as it is now is bloated, unmaintainable and completely monopolized by Google Chrome. Firefox will be dead in the near future. No company or person can start a new browser from scratch, the web spec is pretty much a living document which only chrome can keep up with.
With that feeling of helplessness in the web space, many people are working on Gemini to make it a good, less bloated, space for people to serve content, not to replace the web, but to be a more minimal alternative to it.
I plan to post more about gemini in the future.
This post is also available on my gemlog. You will need a client to access it.
Gemini specification ↩︎