Bridging ActivityPub with Kazarma
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
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 | 10.5446/61691 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Bridging (networking)SoftwareMatrix (mathematics)Uniform boundedness principleComputer animation
00:47
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
02:59
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
08:04
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
13:09
Computer animationProgram flowchart
Transcript: English(auto-generated)
00:05
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
00:24
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.
00:46
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
01:05
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
01:23
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,
01:45
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
02:03
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
02:21
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.
02:45
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.
03:04
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.
03:21
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.
03:43
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
04:02
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.
04:20
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.
04:46
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.
05:04
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.
05:20
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.
05:42
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.
06:01
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.
06:22
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.
06:44
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
07:01
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
07:25
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.
07:40
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
08:02
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.
08:21
And I think that's it. Thank you. Are there any questions? Are there any comments?
08:43
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.
09:00
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?
09:22
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.
09:43
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.
10:03
So deletions are bridged on both sides of networks.
10:22
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.
10:42
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.
11:02
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
11:22
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?
11:44
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?
12:15
Yeah, absolutely.
12:21
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.
12:43
So that's something that we really don't know about and still needs to be decided.