Blizanci

Blizanci is a Gemini server, written in Erlang

Source code on Github

Objectives

Other features

Servlet architecture

Each request gets its own process (in the Erlang sense of lightweight process, not the UNIX sense of process).

For asynchronous content generation, other processes may need to be created. Accordingly, all valid requests are potentially routed (by the aforementioned per-request process) to a servlet. The servlet code works out whether a response can be made available immediately, and if so, the function call to handle the request returns a response that can be encoded and sent to the Gemini user-agent. But in the alternative, the call can return a "defer" message and spawn a new process. The per-request process handler, on seeing the "defer" value, simply waits, and sends nothing to the Gemini user-agent. The spawned servlet process then asynchronously passes messages back to the per-request process.

Servlets are used for:

Code quality

The code was subjected to a fairly thorough peer review a few years ago, but there has been a good deal of development since.

There are not a lot of unit tests.

Roadmap

Blizanci's current roadmap

Trivia

The name is simply a translation of (one of the senses of) "Gemini" into Serbo-Croatian.

https://twitter.com/ivanhoe011/status/1613464011257040898

Proxied content from gemini://gemini.ucant.org:1965/meta/blizanci.gmi (external content)

Gemini request details:

Original URL
gemini://gemini.ucant.org:1965/meta/blizanci.gmi
Status code
Success
Meta
text/gemini
Proxied by
kineto

Be advised that no attempt was made to verify the remote SSL certificate.