We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Bridging ActivityPub with Kazarma

00:00

Formal Metadata

Title
Bridging ActivityPub with Kazarma
Subtitle
Interoperability and "beyond-chat" Matrix
Title of Series
Number of Parts
542
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
We will notably talk about interoperability between decentralized networks and how we mapped Matrix and ActivityPub concepts.
Bridging (networking)SoftwareMatrix (mathematics)Uniform boundedness principleComputer animation
Bridging (networking)Type theoryMatrix (mathematics)Server (computing)State observerSession Initiation ProtocolCommunications protocolHacker (term)Entire functionUniform boundedness principleWeb 2.0Matrix (mathematics)Cartesian coordinate systemServer (computing)Library (computing)Front and back endsSoftwareService (economics)Address spaceClient (computing)MultilaterationBridging (networking)Hacker (term)Electronic program guideComputer animationDiagram
Online chatMessage passingComputer virusMatrix (mathematics)Software developerConfiguration spacePresentation of a groupAsynchronous Transfer ModeLocal GroupType theoryRootVideoconferencingEvent horizonGroup actionDirected setAvatar (2009 film)Electronic visual displayUser profileContent (media)Physical systemOnline chatInstance (computer science)VideoconferencingBuildingSoftware developerInformation securityService (economics)RobotUniform boundedness principleLibrary (computing)MereologyCartesian coordinate systemDirection (geometry)Process (computing)Bridging (networking)Electronic visual displayEvent horizonMultiplicationMessage passingServer (computing)Matrix (mathematics)Level (video gaming)Group actionProfil (magazine)Pattern languageWeb pageFeedbackEncryptionSystem administratorConfiguration spaceData conversionBijectionType theoryComputer fileSubject indexingComputer animation
Data conversionAbsolute valueBridging (networking)Event horizonSoftwareClosed setFormal languageAxiom of choiceServer (computing)Interactive televisionBuildingUniform boundedness principleMatrix (mathematics)Projective planeType theoryState of matterInformation securityMetric systemFeedbackInstant MessagingSoftware frameworkHypermediaSelf-organizationComputer animation
Computer animationProgram flowchart
Transcript: English(auto-generated)
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 hgplv3 and it's done in Elixir.
So we were shown that there was some stuff that hinted at building it. There was some article in the matrix guide saying that you could bridge two decentralized networks, and there also was a Hacker News command by Matthew saying that there could
be an activity pub bridge. And there also was a matrix client library made by you, Jorge, that we wanted to use, and also an activity pub client library that was extracted from Playroom R 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 a matrix server, it is an application service like other bridges,
and it's also an activity pub server. So we, on the activity pub side, we create puppet actors and they can talk to activity pub users, and 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 usernames, for instance, it's just, you know, one character that changed.
We made the web front-end to help people see the bridged addresses. We'll 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 Playroma.
It's only a one-to-one conversation chat, so we use the direct rooms of matrix to do that. And 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 de-encrypted the messages. And 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. And 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 de-federating 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.
And here are an example with a peer-tube video where we can use a reply to have people post comments on the video. And we also did something pretty nice with Mobilizone 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 Mobilizone groups.
So as a summary, we bridged the user search, the profile. We bridged 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 their administrator offers as a kind of ad-box 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 all the activities that are sent.
But then there's this 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. And as I said, the Mobilizone groups, the private room has direct messages
and the direct room has Pluma chat. 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. And I've also shown as its 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 a 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 that funded us. 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 and other projects that are mostly built on metrics. So feel free to come follow us and maybe support us.
And 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 fairlyverse. But I got the attention that there's much more public conversation going on than is useful on instant messaging.
So if I got a somewhat closed room type in matrix and there's an interaction via bridge to Kazama, would it mean that the whole conversation can become a public conversation on a fairlyverse site?
No, it wouldn't. If there are something that are bridged as public, it's only because it's on public rooms. So if we use private rooms, it's only for private messages.
You didn't mention the delete event of activity pub. 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 deletions are bridged on both sides of networks.
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.
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 closed.
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 home server. Plus the fact that we started to work on the features of the public bridge means that there are still some things that could be bridged
that are not supposed to be bridged on a private bridge. What's the prospect on end-to-end encryption? Like, it's very cool that it supports unencrypted stuff, but I'm a bit curious on the activity pub side. Like, 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 right now. Yes?
Yeah, absolutely.
That's something that I think is a choice to make. I think that there are some features that are added if we add support for unencrypted rooms because it still gets unencrypted on the home servers and federated on server on matrix, but it also could give a false sentiment of security.
So that's something that we really don't know about and still needs to be decided.