New post announcing Dory

This commit is contained in:
Nathan Fisher 2023-05-24 13:45:36 -04:00
parent 13de85a34a
commit d18c389805

View file

@ -0,0 +1,36 @@
Meta(
title: "Dory a Misfin protocol library in Rust",
summary: Some("Dory is a (WIP) Misfin protocol library in Rust which will implement the protocol in a way that both standalone servers and integrated services can be developed on top of it."),
published: Some(Time(
year: 2023,
month: 5,
day: 24,
hour: 17,
minute: 45,
second: 18,
)),
tags: [
"misfin",
"rust",
"programming",
],
)
---
Misfin is a protocol proposal for a messaging and mail service designed along ideas from the small web.
=> gemini://misfin.org/
I'm intrigued enough by the spec that I started working on a Rust crate which implements the spec. It's early days, but the goal is to implement the spec in such a way that it can be used either by a standalone Misfin server or as part of a larger Gemini (or other smallweb) application.
=> https://codeberg.org/jeang3nie/Dory Dory repository on Codeberg
The name Misfin made me think of the character Nemo from the pixar film. My favorite character from that movie was Dory, hence the name.
I plan to limit the scope of the crate as follows:
* Implement opening connections and sending mail/messages for the sending server
* Implement handling a request by the receiving server and sending a response
* I'm not planning to implement the event loop for the receiving server, as the library consumer should have some choice in how they want to set this up.
* I'm considering making client certificates a requirement. The spec recommends them but does not require them.
* Tofu is handled by a `CertificateStore` trait. It will be left to the library consumer to implement the trait on their own data type, so that you have the option of using anything from a simple HashMap to a database connection.
## Status
Right now what exists is mostly a collection of data types, with a fair bit of the functionality just stubbed in. I started with status codes and parsing requests/responses from their raw data, so those parts are all in place. The Tofu verifier is partway written. I took pains to set up the repository to be easy to understand, and there are lots of doc comments specifying what the various types are meant to be (although I haven't gotten around to examples yet). Basically it's a solid base to build on, but not ready for use. I figured I'd go ahead and put it up publicly in case anyone wants to join in (haha).