This week, Beeper had our second meetup after being
acquired by Automattic
earlier this year. Unlike the
last retreat in Porto
which had lots of other Automattic employees in attendance, this was just our
team and was focused on work and planning less than team-building.
Automattic is a remote-only company, so work
retreats are the only time that we can connect with our co-workers in-person and
build stronger personal relationships among the team. The best part is that we
get to go to cool locations for these meetups. You can read about all the
previous work retreats on this blog.
End-to-end encryption is one of the things which brought me to Matrix, and I’m
sure that it’s one of the factors that brought many of you to Matrix as well.
However, Matrix’s user experience with cryptography is often confusing. I
mainly blame the other chat networks for their incompetence. Most other chat
networks don’t even provide any cryptographically-guaranteed security and
privacy. Some networks provide encryption in a way that does not truly leave
the user in control of their keys. Only a few networks (Signal) truly leave
the user in control, and their UX is arguably worse than Matrix.
In Matrix, message security is provided by Megolm. The goal of message security
is twofold. We (a) want messages to be encrypted on the sender’s device and (b)
only be able to be decrypted on devices of users who are a part of the
conversation. As a corollary, we want to prevent other parties (rogue
homeservers, man-in-the-middle attackers, etc.) from decrypting the messages.
Understanding Matrix cryptography requires understanding some basic cryptography
primitives. This article intends to explain those prerequisites in simple terms.
This article is not a rigorous, mathematical description of the cryptosystems
in use. Rather, it is a practical guide to what functionality each of the
cryptography primitives provides. I’ve tried to include links to external
resources if you are interested in learning more about a specific topic.
When we at Beeper started working on the
new Android app,
based on mautrix-go, we initially tried using
goolm as the crypto
implementation instead of libolm. We
almost immediately ran into issues for unknown reasons, and rather than fighting
with cryptography, we decided to just put in the work to get libolm working in
the Android app.
I’m running for the Matrix Governing Board as an Individual Member (see my
Platform) and I am only eligible
to vote as an individual member, but I would like to endorse a few Ecosystem
Member candidates who are well qualified to represent the ecosystem.
Kim Brose
I endorse Kim Brose (HarHarLinks) representing Matrix Community Events as an
Ecosystem Member candidate.
I met Kim in Berlin at the
first Community Matrix Summit
and has been active in organizing many other Matrix community events including
the
2023
and
2024
Matrix Community Meetups at FOSDEM. He is a great community builder and is
consistently welcoming to newcomers at the events. His Matrix pedigree is also
deep and includes running a homeserver for multiple people, contributing to the
simplematrixbotlib, and
contributions to many other projects. He also is a public figure from Nordeck
and presents their work on widgets regularly. Kim would provide a valuable
perspective on the Matrix ecosystem as he has been involved so many aspects of
our community.
On the Saturday after the retreat I did my
own sightseeing and adventuring around Porto. However, as I mentioned in my
post about the retreat, a
bunch of us went on a walking tour of the city on Wednesday, but since it wasn’t
really meetup-related, I decided to combine the info that I got on the tour with
this post, as I think it fits better.
I am grateful that I was elected as an individual member. Thank you to those who
voted for me!
I’m
running for the Matrix Governing Board
as an Individual Member. I work on bridges1 and backend infrastructure2 as
a software engineer at Beeper. You may have met me at
one of the Matrix meetups3 and possibly even seen me giving a presentation at
one of them. I have been a user of Matrix since around 20184 and I have been
heavily involved in the community since around 20205. I’ve contributed
multiple spec clarifications6 and been involved in many MSCs both personally
and through my position at Beeper7. I also have contributed to Synapse8
and the Matrix React SDK9.
I’m making my way across the pond once again, this time for a work retreat. I’m
attending a team meetup in Porto, Portugal.
I ran the
2024 Mines High School Programming Competition
on Saturday, and I had to be in Porto by Monday morning. Thus, I had to leave on
an evening flight on Saturday in order to arrive in time. Unfortunately, the
best flight I was able to get that left late enough on Saturday went through
Munich with a 7 hour layover before the flight to Porto. My return flight goes
through Frankfurt (it’s kinda annoying having to go out of the way to Germany to
get to and from Portugal, but it is what it is).