Thank you, everyone. Thank you so much for having me. I'm Silvan. I've been doing the development and
open source and conferences for a while. Last year I wanted to do it full-time, full-time
open source contributor and I thought well the best place to do it is actually a real
open source project by the government. So I joined the DINUM, which is the French IT state
departments and not state department. French IT management, let's say, as a non-tropical
international kind of entrepreneur but in the public sector and they sent me to another
administration which is NCT. So I will explain what that is. And I want to start maybe
we are in the university, so let's start with the geography lesson of our friends. This is
out front the region closer to here. And your friends is made of more than 35,000 small
towns, municipalities, local administrative regions, each one as a mayor, as a few employees,
as a domain name, maybe, as an email contact address, as, you know, software running
windows, whatever but it's a really, really small, small unit that we have to work on in
France and each of them is independent. The state can actually, cannot actually force them
to use anything. It's written in our constitution. They are free to be administered as they
like. So we have a huge problem and one of the first things I did when I arrived was to do a
daily scan of all the domains, all the emails, and to check this is for instance the map
of the DMACC with the quarantine records on all their contact email address. So you can see
there is a lot of work to do. About 60% of them, all of them, all of them, don't even own
a real domain name. So they might be on free web mail, they might be on Gmail. And this is
like your mayor's contact address is a Gmail address. So you can see how this can be
really true. So this is the mission of the agency I work on, the entity which is co-is
unetator, which really the goal is to bring up all those smaller administrative municipalities
to professional standards, to more secure standards, and to really give them the tools to
add these to themselves, securely. Obviously, with open source, we are part of the broader
last-sweet movements. We are not dealing, but we are kind of a sister-sweet to dealing,
which we call last-sweet territorial, kind of distribution, if you will, of some of the same
tools, some different specifically for those smaller municipalities. And so we have the same
as the SO, we have messages which I am talking about, a lot more projection from last-sweet.
We also, this is also different for instance. We strongly encourage the regional level to
self-host the tools. We don't want to have one single national instance for that. We, you
know, Aldi Lyskima, you know, every larger administrative region, we love his own instances,
so that we can have a real federation of security, of government and of data. Of course,
it's my mythelations. And yeah, I just wanted to, to say, we have come a long way, you know,
since 10 years, I think, open source now is the default for most of you administration. So,
just take a bit to reflect on what we are and we are through work for this. I mean, it
won't happen without, without work. So, this is messages. This is our own email application.
It's a thin beta state, but it's live. We have there the the busy address of our contact
mailbox. This is a real screenshot from yesterday. I anonymized the bit. I hope I didn't miss anything.
Personal information, but yeah. So, it works. So, we think it's a nice UI. It's really made
simple for, you know, for people that might not be very technical. Again, they are coming from
free web mails, they are coming from Gmail when we are lucky. So, we want to, to build for
something that they want us, a lot of questions to configure or to use. And for now, the, you know,
the views that we have have confirmed that. I want to talk, you know, today and not to so much
demos, but talk about the design. But the design choices we made, when building that, we, we know
we, we came, our funding was actually from the French security office. And one of the top
requirements was we don't want any password of any kind anywhere full stop. There is no password
in the system. We have some agents, you know, that have the hardware devices to log in themselves.
Some might have, you know, prior SSO, we have the still password, but even that will be new
of the eventually. The goal is that for the scope of the made application, there is absolutely no password,
which is also true for the rest of the, the suite, but at least for us. Of course, it's a bit
pram because I'm up, it's built on passwords. There is some extensions, but no mainstream clients
support them. So this was really a foundation all the, the ensures. Also, we want to have like a
multiplayer experience on the made boxes. You know, our, the contact addresses of our, of our
tons. We see them, we are super addresses, you know, not so much individual made boxes, but I think
more of like Zendesk or Zamad or, uh, really things that you have, maybe, one, maybe 10, maybe 100
people working together on the same email address at the same time. And this is what's happening.
You know, with the contact at your time, the phone. So, so that shaped the data model quite a bit.
We want to use the UI kit, which made us build a new front end. We need to be very
cost efficient. We have objects to register for the mails. As I said, easy self-esteem. And of course,
we know that, you know, we are building this for all needs, which are kind of specific, obviously.
We totally, you know, uh, we are totally aware that we still want to do open source, we still want
other people to use that, which might mean different configurations, in different instances.
We are definitely open to that as an open source project. Even if we want to make those choices,
it's completely free for people that we use to to make them. And so I want to focus on that.
Obviously, it's the title of the talk. It's what maybe the most, I don't know, controversial,
at least that was the most new for us. In a dropping email, meant that we cannot have had the
blank page, you know, to design. Okay, what would it look like if we went, you know, 100% into that,
into that design? We forget everything we knew. So there's no folders, no persistent connections,
you know, nothing else. We can, we can actually also build a kind of different data model. I mean,
if you're just dropping email to drop email, we could have just shut down, you know, the
part of the server and then we'd be fine. We took that as an opportunity to go further and to build,
we knew that a model centered around the threads, not our messages, you know. So the primary
data model for us is a thread. A thread isn't even linked specifically to a mailbox. It's an
object of its own and a mailbox, several mailboxes actually can also have access to a thread. So
if you receive the email in the wrong contact address, you never actually have to forward it again,
which is not the source of so many issues. You can just swap its pointer to a different email address
and it will be transferred. The access to it will be transferred automatically. This is something
that's obviously very hard to do if you don't start from scratch. Also, you know, obviously not
having I map, you know, I mean, as you can't use our hook at all, which actually for us is a
huge bonus. Of course, it will be also the core of our mission. I mean, like, you know, we are
talking about 70. It's fine to do anything you want to open source. If I then use our
continue to use our hook, you can already last. So for us, the fight goes to that. I think it
goes on sort of replacing Windows, but that's from the talk. But still, it's a way to force them to
use open source to use your tool that it's thought for them and that it's secured for them the
way you want. And so the ability to build a tightly-coupled front end, which comes with that,
no, a lot of new things. We use the same editing component as docs, as you saw before,
which is block. Now, JS, there's another talk about it today, it was them. We use it for the
editor that you can write from it with the exact same experience as all the other lathe components.
Obviously, you can do a little lens, you can do custom self. You can also do rich threads that
we call them, where you can have private messages between users that don't go out. You can bring
into anything you like. I want the thread message, the thread model, which is a big plus to
to innovate, I guess. You can also do real-time. You can also also have to stuff.
Though, we did, when something from scratch, we didn't want a blank page reader. We didn't
want to make the same mistakes or the other, I mean, before. And when we looked at, you know, how
to design the data model on mail, it was more than obvious that JMAP was the right foundation
to build it. As you know, JMAP is a protocol, but it's so spec. What is the thread, what is the
message, what is the field, what is the blob, and all those notions, we actually took them
natively and built the data model around that. Even if we didn't build on day one, JMAP
endpoint to interact with the protocol, we add JMAP objects in the core from day one. And today,
we actually have a PR open, which you can try to use, to actually interact with the server
with the JMAP compatible clients. You will miss some features, but the basic data exchanges
do work already. It's fine. Thank you. Quickly, the architecture of the system,
about using the most components that we can from other last-week projects. So, all the last-week
projects have Django backend that we used it. They are silly workers, we did use that,
post-gress everywhere. All the front ends are built with next. So, we really made the exercise,
okay. Let's look at those, let's look at video, all the last-week types that have been widely
successful. What would it look like if we took the exact same frameworks and breaks,
and we built a map with that. And we ended up on this kind of architecture. So, it's nothing
not so incredibly. There are a bit more stuff when you complexify that are all optional.
No, you can add AI on the side, you can add spam processing, you can add even hooks,
you know, to receive messages. We really, you know, we call that messages and not mails,
because we think even contact forms that you might have on website should end up there,
without a gateway. You should have a native API call with a token or whatever,
to send a message into the platform, which is kind of a window view if you have a Django basis.
We also embed, you know, keyclock, which is, again, optional, but is a way for,
when you create a mailbox, to also create an identity that's linked to it, that can then,
you know, flows through the SSO, and then, again, not just in messages, but, you know, in the
suite of apps, it may as a special place, because it's where I know the identity is confirmed.
So, this is also integrated into the design of the project.
I want to also focus on why, first, making states minimal, what's really important,
you know, when you want to self-host, speak a limited system, you know, we didn't use a benchmark
before going on in that past, you know, you have, I don't know, like, Docker compose with, like,
tens of, maybe, 20 different components, each of them have states, and if you want to back up,
if you want to restore, if you want to crash something and restart it or to scale it or to,
it's, it's a use pen India. So, we read through the aim to try to minimize where the primary state
is stored, so that we have only one single place to back up, there is no cues anywhere,
there is no, you know, intransit sessions that we have to persist, everything actually can be restarted
from postgres, you know, we have an open search on the site, you know, to make sure, but even that,
can be entirely rebuilt from the primary database. It's also because of our scale, you know,
there's a total total total in Gmail scale, you know, for StarWart, and I think that's, that's a
huge thing to have in the, you know, a little source community, for us, for our scope, we don't target
a billion users, you know, there are two million local legends for the, for the, for the municipalities in
trends, all of that can for sure run on a single postgres, but even then we want to, you know,
as I said, self-host on, on bigger administrative regions, so for sure, you know, if we're
going to hire a single postgres, we can run all the metadata about the emails on that as well,
and then offload the bodies on object storage to have big storage for that. But those two are
really the only primary storage, and that's really a huge place when you, when you self-host.
How do we do that, you know, at the, at the inbound level on SNTP, with just, you know,
instead of, we, we still have postfix, you know, it's a nice piece of software, again,
but we don't use it to queue anything, it delivers to the NDA, to the backend,
as the, as the SNTP session is open, no, it does, like, recommending first,
rough checks on the email, then sends it to the backend, which does, like, does this mailbox
exist, and the few more, a few more checks, but very fast checks that can be in line,
and then it drops it to a postgres, and then returns directly to the, to the connected SNTP.
So that means that we can crash postfix, we can restart it, we can scale it to 1,000 postfixes,
and it will be easy, as, as, by. Then we have, you know, a system of workers, I think,
which workers that can do all the processing of the email from from queue, they can check if it's
spam, they can flag it, they can offload it to a three later, we can do anything we want, but the,
the hot pass at the beginning is done entirely in session.
Same for a bound, and then, and there we, kind of, did something, which I think is a bit new,
is that, you know, we do, uh, we direct MX delivery right from the, right from the backend,
of course, we can proxy, you know, to have, to manage IP reputations, but that allows us inside the code,
to have differentiated returns statistics for each of the recipients of a single message, which
means that, you know, you, you don't receive any bounds if one of your recipients fail the message,
you can actually get the status directly, uh, and show in the UI, you know, well, all of those
were sent correctly, but this one failed, and you can actually choose to retry a single recipient
from a message, or maybe to edit it and send it again because you messed up the email,
or you can just dismiss it because it's a permanent error, that's also something,
which is made possible, you know, by a new data model, that, that we enjoy a very much.
Uh, what's next for us, so, uh, you know, everything I showed is on production, or,
OpenPR, as I said, you know, it's still beta, we are still working hard at each, you know,
it's still not, uh, at the level of, you know, maturity as, also, last week project, but we hope it will be,
uh, it will be this year, we are building the missing bridge, you know, when you say no, I'm up,
of course, the next question that comes is what about mobile, we're also building, you know,
mobile apps from, from the, from the get go, we, we build the front end to the package
ball into a reactive app, so it will be the same front end, the same code base, the package that's native
we also have at work on calendar, it's the exact same kind of choices, and the centralize the contact
repository. So we hope to have all of that, you know, ready in production deployed this year,
I want to give another also to some of the first people that are using, you know, this, uh,
this open source project and using it for further on uses, uh, Mosa Cloud, you know, which
of some of you may know is a, is a, is a, a company that sees, you know, hosting and offering
instances of, of some of those open source projects to the, to the, to the public, you can,
you know, you'll be able to go there, create a domain and, and use the, the same, the same
project, but for your own private use or for your enterprise or for whatever, and we are really,
you know, open to get in touch with any other people that may want to start their own suite,
their own web mail, their own, uh, server with those kind of these entrances, and we'll help them
do it for sure. You know, there is, you might have seen the, the last few days, you know,
a few announcements that, that prove, you know, that we think, uh, you know, government,
made and supported platforms and open source, uh, as a bright future to replace, you know, some
of the proprietary software, uh, we think, you know, it's, uh, it's a fight worth fighting and we
hope to, uh, to do it all together. This is, uh, fueling, you know, to join with an open
metric channel where you can chat, we have a contact email, you already showed what it looks like
from the inside, uh, I'll be there all weekend, you know, if you feel free to ask questions,
is on now or later, and thank you in advance. Thanks a lot.
In questions. Thank you, sir. I'm also, it was for, that's fine.
Is there any feature or use case that is specific to the fact that you're, uh, delivering
for, uh, uh, municipalities, small municipalities, because this looks like anything that an organization
could use, whether it's government or not. Is there anything specific or, uh, it's just
legendary. So, yeah, uh, yeah, is there anything specific, you know, for small towns or in
France or into this product, we try not to be too specific, I think we, we took the kind of population,
the kind of users, we took the security, uh, you know, challenges or constraints that we had,
and we did something that, of course, would be useful, not just for us, but for, yeah, for the
wider range of people. So, yeah, I think any organization, we, you know, uh,
reactive share the mailboxes could get a huge value from, from that, you know,
our primary target, you know, is not necessarily to, yeah, we place all the agents,
the personnel, the private web mails, but first, uh, you know, to replace the, the contact,
the share mailboxes that have a lot of concurrent users, we're applying to the same email address,
and the currently we need to use hacks, you know, with labels, with whatever, uh, so that,
that's is a primary target, and I think that's is, uh, what we try to do first, yeah.
Thank you for sharing your architecture, very, uh, very useful. And, uh, that brings a question.
Well, how do you handle, uh, I see that you have a lot of, uh,
single points of failure. You know, how do you handle, actually, here, uh, uh,
relative, uh, fail over on the SC, on the postgres, on redness. So, I think, I mean,
I have just that this is a lot of simplification, just curious, like, what's your take,
because, uh, your architecture, yeah, again, we'll be serving the whole government.
Sure, but actually, the whole government is pretty small, you know, by, by, uh, I'm sorry, yeah,
uh, I can risk it.
It's too good.
Sure, yeah, no, the question is, how can we scale, uh, with, uh, a few points of failure, like in that scheme?
We think it's not to be, actually, you know, a few million people on a single postgres instance,
uh, to the by today's standards, it's fine, you know, again, like, open AI as, uh, 900 million,
people on on on on a scale postgres. So, uh, we think the, the single point of failure
of, uh, I've become quite, quite big. And as I said, you know, uh, we try to keep the primary state in
a single location. So, yeah, the postgres is the big, uh, if that fails, the most of, uh, the infrastructure
fails, but if the redness, the open search, the workers, if anything else fails, actually, the system
stays up and you can read your emails. Uh, uh, the, uh, the, the, the, the fact is that we, we, we, we've
tried to push as much processing to the salary workers and the salary workers, or, you know,
can, can crash, you can scale them up and down, they're fully, you know, a, uh, a state less.
But if they, if they fail, then you're not going to have as, as far as your previous slide,
then you're not going to have the delivery, or, uh, on the message. Yeah, we, we, we, we, we, we, we
have, we have, we have, we have, like, if they crash for a few minutes, we have a few minutes,
delay in email delivery, but then we start again and we will be fine, you know, like, uh, I think
the, the, our past is, uh, the, our parts are the part that families be happy, you know, 100
percent, like the post west server, that's yeah, that's the center, uh, you have to be able
to manage post west, but many cloud services today, you know, give you managed post west with
a incredible time and a locust and backups and everything that you need. So first that is
our primary, you know, points, and you of course, uh, all around, we try to build things that
can crash and and be restarted the, or be scale. Thank you. Thank you. Thank you.
Yes, I'll just, uh, Jima was a future exploration, um, if there are any reason you didn't
actually just, Jima or maybe extent to Jima. Sure, uh, so the question, yeah, I got it. I was going to do it.
Yeah, the question is, why, why didn't we use, like, for instance, Star Wars on the back end, or
like, Jima server and then, uh, and then use that natively, um, you know, we, we had, um, we had
different, you know, prison, we, we have constrained the budget, we have existing technologies,
we have existing back ends, we also wanted, you know, to be, uh, to be very good at shared mailboxes.
So all the, all the design, you know, inputs that, that, that, that we took, we did the, we did
the next intensive benchmark at the beginning and we pushed it, pushed it to reuse, you know,
that, uh, that kind of, uh, back end, which is, you know, entirely open source, uh, which we can tweak
as we want, you know, we, we, uh, as an agency, also we love to support, you know, uh,
tens of, uh, thousands of users, uh, uh, on the phone by email that that won't be very technical.
So we really want to, we 100 percent, you know, uh, servering on, on, on, on the, the, the back end
and the, the things we would be able to fix, uh, and I, I love rest, but there's almost zero rest,
you know, uh, uh, people in the, in the French government or in the French agencies where we,
where we are that, that we, that we would have the manpower in the two, to contribute to that.
So, uh, we were in the Python environment, we just, you know, built, uh, built the Python server
like all the rest, I think that was the primary, uh, for my, we started it.
So, uh, in the German, uh, simulations, we see a lot of specific feature requests for the
functional mayboxes, or shared mayboxes in the, uh,
municive product is also in the state right platforms.
We spend quite a lot effort into better, better, if delegation whatsoever, what is your experience
in, uh, French administration regarding sharing of user mayboxes and functional mayboxes,
and if you also do a lot of feature development there.
Yes, so the question is, uh, uh, uh, how do we support, uh, share main boxes, uh, what the
weapons do we do? So, yeah, as I said, when we started, uh, the, uh, the data model and we
need a project to share mailboxes where the center of what we want to do. So, uh, for instance,
for the editor, we use, uh, blockchain.js, which it's not yet live, but, uh, it's doable in, in
Docs already, which you can actually sort of, you can actually see the cursors of other people
writing, uh, you know, the same document, that, that would be doable inside because we are
using that, that component. So, you have, you have, uh, multiplayer at, at the very low level in
the editor, but you also have multiplayer at the higher level, on the, you know, on the
threads that you collaborate on, on the, on the, on the open ID accesses, you know, we have, we have a
brick that maps any open ID user to any number of mailboxes that they have access to. Uh, so we have,
you know, the, the right management system is, uh, is really flexible because, you know, we don't,
we, we don't have passwords, we don't have, you know, the right way to delegate the access to a mailbox,
is just to add a new ID, uh, you know, user to that mailbox as, as a, as a data record. Uh,
we can, we can, we can really find a manager who has access to what. And as I said, in on that
a model, even the mailbox is not even the top level of, of access is the thread. So, we can actually,
if you receive a thread on a mailbox, you can share it with other mailboxes. And they will see the
same thread. They won't see a copy in the email. Uh, this is for the, the, the, the, the, the, the,
to be able with several, maybe services or administrations to collaborate on the same discussion with
this, with only a single, you know, a single mail, uh, from the exterior for the end user. So,
yeah, first, it was really close to the data manager to search to share threads and not mailboxes
and surely not password. Thank you. Yeah. So, I'm putting myself on the queue with my head of data
credibility enthusiasts. I was wondering, uh, how do you consider the same, like, it may be migration,
or also like, people exercise a ride of, uh, exploring data, even though probably like,
cover the product's particular announcements, um, uh, something people necessarily need,
but I assume this is also supposed to be used probably. Yeah. All types of apps,
is the jammer, maybe I, is the solution you have in mind for that, or is there any other API's
of plans for that? Okay. So, I will repeat your question. So, because you don't have a mic, right?
Yeah. Okay. Uh, so what about export and data portability? Uh, so for sure, it's a, it's a
core feature. Uh, the, one of the first features we did was the import, so we can import inbox,
we can import, uh, I map, can not import jammer, but maybe we, we call it in the future.
Uh, and there is a peer open actually to export also as well, all of your data in the same
inbox format. Yeah. So, uh, it's not so much, uh, yeah, for, well, for, for moving data around,
but, uh, yeah, we have to, uh, to, to be, uh, to be really tight with, uh, you know, with, uh, with personal
data and, uh, and with, uh, with people's data in the environment for sure. So, that that's close
So, so you see any challenges that's right small, because, you know, uh, uh, I understood it's very
flexible to, you know, the side data from some x to y. So, put that all to be data, uh, do you think
that way in the next business? So, we, we, we think that, uh, the, uh, the surface is smaller,
because, you know, we, we control, we, we, we, we know, this is the single place that will be able
to access the, uh, the users. Um, so we think we, we can build, you know, we, we, uh, the, the talk
or the CSS before was a film interesting, you know, we already, I frame, uh,
H single message, uh, like what I like was recommended and we can really be in control of the
environment so I'm sure they might be new straight models, uh, and we, uh, we, uh, we, uh,
impatient to discover them, but, uh, for sure, we'll be able to fix them in a, uh,
a single time for all the users at once. All right. Thank you so much.
So, it's not really nice, of course.