diff --git a/content/blog/2024-fosdem/index.md b/content/blog/2024-fosdem/index.md new file mode 100644 index 0000000..f3e4a46 --- /dev/null +++ b/content/blog/2024-fosdem/index.md @@ -0,0 +1,57 @@ ++++ +title="Aerogramme in the modern email track at FOSDEM'24" +date=2024-02-05 ++++ + +*FOSDEM is the European conference for FLOSS developpers. It was the first time Aerogramme was discussed publicly. +If you missed the presentation, a recording and the slides are available.* + + + +--- + +## Recording + +
+ +
+ +## Transcript + +*(slide 1)* Aerogramme is a multi-region IMAP server, in this talk we will discuss what a "multi-region IMAP server" means and why it's important. + +*(slide 2)* +Let's start with some context, my name is Quentin. I have a PhD in distributed system, +and this talk will be a lot about PhD distributed system because something I know. +I try to work as much as possible for a collective named Deuxfleurs where we try to build a low-tech Internet. +If you want to know more about our project, check yesterday talk about Garage. +Aerogramme is part of Deuxfleurs' strategy, and a very nice thing, this project is supported by NLnet. + +*(slide 3)* +First, the problem we want to solve: we want to make other people available when it would be otherwise +impossible (due to geographical distances for example). We can achieve this goal only if the underlying system is working: +so we will talk a lot about availability and reliability. + +*(slide 4)* +Today's talk is about 3 main ideas: 1) we should not trust the cloud & hosting providers as they can fail. 2) there is some space to explore alternative IMAP server designs and 3) and finally I will try to convince you that such new designs can work in the real life + +*(slide 5)* +In the title talk, I speak about "multi-region", and so we must define first what is a "region". +On the slide is depicted the Google Cloud Platform (GCP) region in Paris: it's made of 3 datacenters. +Last april, the whole region, the 3 datacenters were unavailable for 3 weeks. +The outage lasted for 3 weeks for some services, and it was due to a fire in one datacenter. +And due to tight connections between the 3 datacenters, the 2 others ones were unusable due to a software problem. +3 weeks without emails, you imagine it can make your life very hard if you need to do some important stuff, like seeking a new job. + +*(rest of the transcript is missing currently)* + +## Links + + - [Download Slides](https://fosdem.org/2024/events/attachments/fosdem-2024-2642--servers-aerogramme-a-multi-region-imap-server/slides/22665/aerogramme_vmnrj3Q.pdf) + - [Aerogramme Talk Page](https://fosdem.org/2024/schedule/event/fosdem-2024-2642--servers-aerogramme-a-multi-region-imap-server/) + - [Modern Email Track](https://fosdem.org/2024/schedule/track/modern-email/) + - [2024 edition main page](https://fosdem.org/2024/) + diff --git a/content/blog/2024-predictability-and-correctness/fetch-full.png b/content/blog/2024-predictability-and-correctness/fetch-full.png new file mode 100644 index 0000000..bf6a2c0 Binary files /dev/null and b/content/blog/2024-predictability-and-correctness/fetch-full.png differ diff --git a/content/blog/2024-predictability-and-correctness/index.md b/content/blog/2024-predictability-and-correctness/index.md new file mode 100644 index 0000000..b8a7392 --- /dev/null +++ b/content/blog/2024-predictability-and-correctness/index.md @@ -0,0 +1,58 @@ ++++ +title="Aerogramme 0.2.2: predictability & user testing" +date=2024-02-22 ++++ + +*Let's review how Aerogramme performances became more predictable, why it's important, and showcase how user testing helped surface bugs.* + + + +--- + +This minor version of Aerogramme put the focus on 2 aspects of the software: predictable performances & collecting user feedbacks. +In the following, I describe both aspect in details. + +## More predictable performances + +![Fetch resource usage for Aerograme 0.2.1 & 0.2.2](fetch-full.png) + +![Search resource usage for Aerograme 0.2.1 & 0.2.2](search-full.png) + +*TODO AWS SDK* + +## Users feedbacks + +*Dovecot AUTH continuation inlining* - When a username + password is short, +the Dovecot SASL Auth protocol allows the client (here Postfix) +to send the base64 inlined, without having to wait for the continuation. +It was not supported by Aerogramme and was preventing some users from authenticating. + +*Pipelining limits (reported by Nicolas)* - Pipeling limit set to 3. +Avoiding DoS resources. But failing some honest clients like Mutt. +Bumped to 64, will be watched in the next months. + +*SASL Auth subtleties (reported by Nicolas)* - Authorization can be empty, or can be set to the same value as Authentication. +Second case not handled but required by Fair Email (thx Nicolas) + +*Thunderbird Autodiscovery issues (reported by LX & Nicolas)* - K9 stable does not support `%EMAILLOCALPART%`. +K9 beta (6.714) does not support some values marked as obsolete in the `authentication` field: `plain` is not supported anymore, `password-cleartext` must be used instead. +Content-Type is important also, if a wrong one is sent, content is silently ignored by some clients. + +*Broken LITERAL+ (reported by Maxime)* - It was not possible to copy more than one email at once to an Aerogramme mailbox. +It was due to the fact we were using an old version of imap-flow that was not correctly supporting LITERAL+. +Upgrading imap-flow to the latest version fixed the problem. + +*Broken IDLE (reported by Maxime)* - After updating imap-flow, we started noticing some timeouts in Thunderbird due to IDLE bugs. +When IDLE was implemented in Aerogramme, the code was not ready in imap-flow, +and thus I used some hacks. But upgrading the library broke my hacks for the best: now +imap-flow supports IDLE out of the box, and thus Aerogramme code is now cleaner and more maintainable. + +Some others quality of life feedbacks not reported here have been made by MrFlos & Nicolas, thanks to all the people that took part in this debugging adventure. + +## Download and test the new version + +``` +docker run registry.deuxfleurs.org/aerogramme:0.2.2 +``` + +[Download](/download/) - [Changelog](#) diff --git a/content/blog/2024-predictability-and-correctness/search-full.png b/content/blog/2024-predictability-and-correctness/search-full.png new file mode 100644 index 0000000..50a2384 Binary files /dev/null and b/content/blog/2024-predictability-and-correctness/search-full.png differ