New post announcing Dory
This commit is contained in:
parent
13de85a34a
commit
d18c389805
1 changed files with 36 additions and 0 deletions
36
content/gemlog/dory_a_misfin_protocol_library_in_rust.gmi
Normal file
36
content/gemlog/dory_a_misfin_protocol_library_in_rust.gmi
Normal 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).
|
Loading…
Add table
Reference in a new issue