-- Leo's gemini proxy

-- Connecting to gemini.hitchhiker-linux.org:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=en-US

Dory: a Misfin protocol library in Rust

2023-05-24

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.


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).


Tags for this page

misfin

rust

programming


Home

All posts


All content for this site is licensed as CC BY-SA.

© 2023 by JeanG3nie

Finger

Contact

-- Response ended

-- Page fetched on Mon May 20 10:17:11 2024