All right. Thank you for coming. So I'm Pierre, and I'm going to talk to you about Kazama
and how we tried bridging Activity Pub with Matrix. So we talked a lot about interoperability
even two years ago, and we found it sad that we talked about interoperability for proprietary
platforms, not with our alternative decentralized networks. So we tried doing that. Kazama is
hosted on GitLab. It's using the license HGPL v3, and it's done in Elixir. So we were
shown that there was some stuff that hinted at building it. There was some article on
the Matrix guide saying that you could bridge two decentralized networks. And there also
was a hack and use comment by Matthew saying that there could be an Activity Pub bridge.
And there also was a Matrix client library made by Uhoreg that we wanted to use and also
an Activity Pub client library that was extracted from Playromar and made by the MoodleNet people
and then by people at Bonfire. So the idea is to bridge those networks by creating puppet
users. So Kazama is both an Activity Matrix server. It is an application service like
other bridges, and it's also an Activity Pub server. So we on the Activity Pub site,
we create puppet actors, and they can talk to Activity Pub users. On the Matrix side,
we create Matrix puppet users that can talk to other Matrix users. So we wanted to both
build an application service that you can deploy alongside your home server and also
to have a public bridge so that other people on the Federated Matrix network can talk to
Activity Pub users even if they don't have Kazama installed on their server. So that's
what I'm showing here. And we, as I said, you can also be installed on your home server
and then you have nicely displayed user names. For instance, just one character that changed.
We made a web front end to help people see the bridged addresses. We also show here that
we can display rooms that we'll talk about later. We started by bridging the chat that
had been implemented by Peroma. It's only a one-to-one conversation chat. So we use
the direct rooms of Matrix to do that. We then try to bridge direct messages like on
Mastodon. Those are posts that are only sent to people that are mentioned in it. So there
we used private rooms in Matrix. So there are no end-to-end encryption in Activity Pub.
So for now Kazama only works on unencrypted rooms. It could work on encrypted rooms but
then it would just bridge by deencrypted the messages. Then we also wanted to bridge Activity
Pub public activities by creating public rooms where public activities are just bridged.
It was something that wasn't really well thought out because we thought that it was a good
idea to start bridging public activities as soon as Activity Pub users are searched for.
So we made a relay actor that started following people quite immediately. It turned out that
Activity Pub Fediverse had bad experiences with follow bots, as they say, because there
were people trying to index the Fediverse. So there were angry people that started differing
our staging instance. But there were also nice people who came in our Matrix room and
we thought about ways to make it opt-in. For instance by having the relay bot send a direct
message and wait for a positive answer or by having it wait to be followed to then follow
back. Here is an example with a peer tube video where we can use a reply to have people post
comments on the video. We also did something pretty nice with Mobilizon where you have
groups and then we found that we could have people invite Matrix users and it would create
a private room and as soon as people joined the room then there would be members of the
group and then you could use the same activity types for discussions that happen in Mobilizon
groups. So as a summary we bridge the user search, the profile, we bridge multiple activity
types, post chat message, video and events. Activity pub rooms are still to be finished.
We also started to build Matrix user rooms so people could ask the relay bot to make a
room that they are administrator of as an kind of ad book room and then it will publish
what they say as a public activity pub activity so they could be followed and appear on the
Fediverse. There's also something to be thought again about that because on Activity Pub you
need to have a way to see the activities that are sent from the instance when they were
sent so we made a web page for the activities that are sent but then there's a thing of
also showing replies like that and it's not something that's really nice to also display
activities from other instances so we need to think about it again. As I said the Mobilizon
groups, the private room has direct messages and the direct room has pure match-hat. We
have replies, attachments and mentions. So there is still quite some things to be done
but you are welcome to come and provide feedback or maybe contribute if you would like. I've
also shown as it's a developer room some parts of the application service library that we
made in Elixir so we just need some configuration like the one on the application service configuration
file and then you can use the nice feature in Elixir like pattern matching to just select
the messages that you want to act on and here's an example. So just to finish I'd like to thank
NGI0 and NLNet at FundedF and we are in the process of having yellow to sponsor us some
servers for our public instance and we've got hints on security by radically open security
and then accessibility by accessibility.nl and we've also started to create an organization
to work on Kazama on other projects that are mostly built on metrics so feel free to come
follow us and maybe support us. I think that's it. Thank you. Are there any questions? Are there any
comments? I'm not so much into social media such as Fediverse but I got the attention that there's
much more public conversation going on than is usual on instant messaging so if I got a
somewhat closed room type in matrix and there's an interaction via bridge to via Kazama would it
mean that whole conversation can become a public conversation on a favor side?
No it wouldn't. If there are something that are bridged as public it's only because it's on public
rooms and the other way around too. So if we use private rooms it's only for private messages
and it's... It keeps the same type of... Yeah absolutely. Thank you.
You didn't mention the delete event from ActivityPub so do you support it yet or do you plan to
support it in the future? Yeah I forgot to mention it but we already support the delete event
so we... Deletions are bridged on both sides of networks.
Could you talk about the choice of Elixir? Is it like did you thought that it was a language for
this application or just a different language? It's a language that I love but it's also with
the framework Phoenix it's also a great language to build HTTP APIs and that's something that we
do on both sides of the bridge so it worked out pretty well in the end. Yes. Another question
is it already in such a state that we can just, as you proposed, install it next to our home
server and it will just run or is it still having some rough edges? I think it's not yet ready
but it's really close. I'd really love to start by deploying the public bridge so that people can
start using it and provide feedback as a public beta first so I think it's not yet ready to be
deployed on your own home server plus the fact that we started to work on the features of the
public bridge means that there are still something that could be bridged that are not supposed to
be bridged on a private bridge. So what's the prospect on end-to-end encryption? It's very
cool that it supports unencrypted stuff but I'm a bit curious on the activity pub side. Is there
anything happening there? I don't really much know. I know that people have been talking about
but I'm not sure what the state of it actually is right now.
So in terms of bridging, is it being encrypted and unencrypted because you said that if you have
a private encrypted chat in matrix it will bridge that indirect message in an activity pub
but that's still public. If you can intercept that message or access the server database or whatever
you can still read that. Yeah absolutely that's something that I think is a choice to make.
I think that it's also there are some features that are added if we add support for unencrypted
rooms because it still gets encrypted on the home servers and federated on server on matrix
but it also could give a full sentiment of security so that's something that we really
don't know about and still needs to be decided. Okay no question for that. Thank you very much.