Conf42 Open Source Showcase 2020 - Online

- premiere 5PM GMT

Bringing ActivityPup to knowledge management with XWiki

Video size:


XWiki is a wiki-based platform focused on storing knowledge in a structured manner, and is extensible. After an introduction to XWiki, we’ll focus on how ActivityPub can help you supercharge your collaboration by connecting XWiki to other platforms.​

ActivityPub is an open, decentralized social networking protocol which provides a federated server-to-server API for delivering notifications and content. The integration of such protocols greatly ease platform intercommunication, allowing content to flow through different platforms over a structured protocol.This talk aims to provide a glimpse at the possibilities offered by the integration of ActivityPub within knowledge-oriented platforms, focusing particularly on XWiki, which recently developed its own ActivityPub integration.


  • Clem Oba will talk about bringing ActivityPub to knowledge management with X wiki. We'll talk about the features that we currently provide as part of this project. And in the end, I will give some resources about how to further experiment with this integration.
  • activitypub is a decentralized social networking protocol which we saw the first activity around 2016. The idea behind this protocol is to help create social enabled federated applications. One big milestone of the activitypub protocol is of course that it was recommended by W three C in early 2018.
  • Xwiki is a wiki engine that can contain structured data. Currently we have around 700 extensions that are provided by the community. This makes it so that X wiki is used for many different applications.
  • The project was funded by the NLNet foundation. It's developed the integration between Activitypub and X wiki. The main goal of this project is to enable decentralized knowledge sharing. In a demo, we can see how this works.
  • The activitypub application allows administrators to follow a whole wiki. With the possibility to share documents between wikis, what we are trying to do is really to help the collaboration and the sharing of information between two sources of information. The next steps of this implementation are to integrate with third party platforms.


This transcript was autogenerated. To make changes, submit a PR.
Hi everyone. So my name is Clem Oba and welcome to this talk about bringing ActivityPub to knowledge management with Xwiki. So, as the title says, today we are going to take a look at basically how we can use a protocol that is mostly made for social interaction in order to integrate with a software that is dedicated to knowledge management. So let's go over very quickly, but let's go over the agenda, the things that we want to cover today. So in the first part of this talk, we will have a quick overview of what is activitypub. If you don't know what is Xwiki, give a bit of context about this integration between the two. The integration of ActivityPub within Xwiki. We'll talk a bit about the features that we currently provide as part of this project. And as part of that, I hope that we'll be able to make a demo that will work and then we will talk a bit about, well, where we want to bring this project. In the end, what are the next steps that we want to do in terms for integrating with the activity per protocol Xwiki. And in the end, I will give some resources about, well, if you want to go further experiment with this integration, try to see if it works for your use cases you will have some links to use. Okay, so just before we start, who am I? My name is Clemor. As I said, I'm working at Xwiki SAS, which is the main company sponsoring the Xwiki project since 2016. I've been open source for quite a while now. I'm working mostly on Xwiki of course, but also now the projects such as passboard open facts for them. And so if you want to contact me, you have my Twitter handle and also my email. So let's talk very quickly about activitypub. Activity pub is a decentralized social networking protocol which we saw the first activity around 2016. The idea behind this protocol is really to help creating social enabled federated applications that will allow different actors to communicate between each other, but in a federated manner. One big milestone of the activitypub protocol is of course that it was recommended by W three C in early 2018. So now we have a living standard on which we can iterate. And it's actually very interesting so that we can build applications that will work on a stable version of this standard. Going a bit more in depth about the specifics of ActivityPub. So here is a very good schema that comes from orgs, the official website, which explains very basically how the protocol works. So you have multiple actors, which is a digital girl here, that have the possibilities to either send messages or receive messages, and you can send messages to basically anyone on a different instance, on a different software platform than the one that you are using. And if the software platform at the other end handles the message that you want to send, well, it will get it delivered, basically. So currently, activity pub, so we don't have very much implementations of the protocol in a lot of solutions. However, we were starting to see it. So for example, we have NextCloud, which implemented its federated file sharing architecture based on ActivityPub. So it's quite interesting actually, because it's one of the first actors that is related to document sharing that did that. We also have Mastodon, which is completely based on ActivityPub actually, which uses the protocol really for its initial purpose, I would say, which is basically sharing messages between users. And more recently we've seen Peachube coming up, which is a software that was developed by a french non for profit organization, which is called Framasoft, which aims to be kind of a drop in replacement to YouTube, but in a decentralized manner. You have the possibility to set up your own instance and share your videos across instances using a federation. So if you want to see more implementations of ActivityPub, actually what would be interesting is to look at the implementation report of ActivityPub trucks, which lists all the implementations that are well known and kind of stable that you might find in other open source software. Now, moving on. Xwiki. So, Xwiki, it's a wiki engine. So a bit like what you would see with media Xwiki, which is the wiki engine for wikipedia. The main difference that we have with other Xwiki engine is that it has the possibility to contain structured data, which is not something that will be very much of interest as part of this conference. However, it's interesting if you want to store multiple documents that contain the same kind of information. So for example, if you want to store meeting notes, you might want to say, okay, my meeting note will contain a title, a description, can author a date where it was done, maybe a list of users that participated to that meeting. And you have the possibilities to very easily create kind of pages with forms, with input fields that correspond to what you need. So this is one part of Xwiki, and another part is the extensibility of the software. So currently we have around 700 extensions that are provided by the community that will allow basically Xwiki to be very adapted to what you would need if you want to connect it to a third party software, if you want to change the behavior of your wiki to match what you want to do. Basically that can be done through extensions, and it makes it so that Xwiki is used for many different applications. It can go from the most basic knowledge management platform, so very wiki, well, very documentation like. It can also help for addressing long tail applications which are notifications on which you can. I would say you don't have a lot of budget to implement a custom solution that will be developed made by developer. However, you have some time and you can kind of automate some part of this application for storing some kind of information. Here in Xwiki, we provide some tools to help you do that. And we can also use it, of course, for more business specific use cases. And so what's interesting is that as part of this talk, we'll be talking about an extension of Xwiki which does the integration of the activitypub protocol within Xwiki. It's not something that is provided by default on the software. It's something that you have to go into the administration of your wiki and download the extension and install it. But the download and installation phase is quite quick, actually. So now let's talk a bit more about our project. Let's give a bit of context. So this project was developed and it was funded by the NLNet foundation, which provides some funds to funds which are called NgI Zero and NGI Trust, if I'm not mistaken, which help to fund innovative Internet projects. And it's as part of this project that we got to develop the integration between Activitypub and Xwiki. The main part of the integration was done by Simon Yurli and Manuel Luduk, which are two Xwiki committees working on the project for quite some time. And the main goal of this project is actually to have a glimpse of what it takes to enable decentralized knowledge sharing. It can be documents, it can be any kind of information, not especially based directly on your user to user interaction, but more based on an interaction between a source of knowledge and another source of knowledge that we will try to interconnect through the activity protocol and more technically. So the idea was also to be able to have cross wiki intercommunication through this protocol, which is currently done, and we will see it in a couple of minutes, be able to follow the activity of a user from one wiki to another, be able to follow the activitypub also of a full wiki. So by full wiki. I mean, if you have, imagine that you have a public wiki that is accessible from everywhere and you want to get notified when there is a change that is being done on a given document. That's the idea. And also another goal was to start working on the integration with third party platforms. So third party platforms mostly because one of the key goals that we have with this project, as I said, is be able to ease the flow of information between one source of information and the people that will use this information. And that's what we are trying to achieve. So if we look at the functionalities that we have currently and that we will see in the demo just after what we provide currently, is the possibility to have messaging between users. So the possibility to have one user that sends a message, well, from one wiki to another, which is basically default implementation of activitypub. What activitypub was made for initially, then the possibility to share documents. So from one instance I can share a document to another instance so that a user can see it, maybe a follower can see it, for example. We also rely on the notification system of Xwiki. So what we will see is that we have plenty of rooms for defining whether or not you want to get notified about some events on the fediverse. And as part of the document sharing feature, indeed, we also have the possibility to view a remote document. There is one functionality that I did not mention here, which is also important, is that we now have the possibility to follow what we call a Xwiki sas that I talked about in the previous slide, which is the possibility to basically be informed of the news that happened on a specific week. So let's switch now on a demo, I'm going to switch in full screen so that you can get a clear view of my screen. So for this demo, of course, I will need two Xwiki instances. They will be side by side so that you can see them. And I'm going to try also to reduce, yes, the size of my browser window so that you can get a bit more content. On the left side, you will have one wiki which is called Xwiki one coband fr, and you will have a second wiki which is Xwiki two coband fr on the right side. And I will try to keep this disposition during the demo. As you can see that the wiki on the left has a blue bar and the wiki on the right has a black bar on the top. We are logged in with two users here. And one thing that I did as part of the preparation of this demonstration is that I have installed the activity pub integration on my wiki. So if I go in the administration of the wiki in the extensions, I have the possibility to search in all extensions and search for activity publish. Okay, and here we have the integration which is well already installed here, but you can install it from there. Once this integration is set up, we already have a couple of information that are brought in the wiki administration through the activitypub section. And here we have some information about what should be the follow policy of a wiki. Should we accept or reject follow request by default, knowing that the user itself that will get this is a setting that will apply only when you try to follow a wiki. If you want to follow a specific users, we will have a different workflow for that. We can define a manager, a group manager for the wiki of course, and how we handle notifications at the wiki level, going more into a standard user provide. So this is the profile of Alice. If I go in the notifications part of my profile, I can see that I have a couple of options that appeared that appeared with the installation of the extension. And here I can tune how I want to get notified about a new action on activity pub. I can choose to be notified by email. For example, here I've left only notifications within Xwiki that are enabled by default so that we get all the information from the web UI. However, you can still define what you want to receive by email and we can see also the kind of notifications that we will get. So announcements, creation of documents, follow requests, message and update requests. Finally, we have another tab which is the activitypub tab, which allows to manage what are the followers and the persons that this user is allowing. And so this is actually one of the first elements that we'll look at it from there. I can say okay, let's start following Bob, which is in the other Xwiki. I'm going to take the user identifier of Bob, which is also in this profile. Let's copy it and let's paste it here. Okay, so let's select it and click on follow. Takes a bit of time. Now we've sent a following request to Bob, so let's refresh the page on Bob's site. And now we should be getting a small notification. Okay, so one direction received. So no, Alice is now following. Well, let's say that Bob wants to follow back Alice. He just wants to check if it's fine with her. So let's write a new message to Alice it message sent. And we'll get a notification button. So I get one message, and I have the content of my message that is here and the author of the message here. I can also get the message listed here in the received message section of my. So let's admit that we got this conversation sorted out. So Bob can now follow Alice. And there we go. Now the two are following themselves. What's also interesting is that, so now when Alice wants to send a new message, it will have the possibilities to define to who the message should be sent. It can be a specific user. So for example, Bob, as I said, but it can be also all the followers of Alice, and it could also be like public. I want anyone that has access to the message to get it. And this is implementing the concept of collections with an activitypub. Okay, so the message feature in itself is something that is very oriented through, well, I would say axed through social features. Now, one of the things that we tried to implement within Xwiki is the possibilities to, for example, share a page with a different entity in another wiki. I'm just going to clear my notifications here and there. Very good. So, so for example, if I'm on, if I, if I'm on any page of the Xwiki, and I will take the home page here, for example, what we have is the possibility to say, okay, here is my document, I want to share it with one specific user. So let's say Bob once again share it. And now what we see is that we have this share event that comes up in bud interface. And actually, so we see that a document was shared. If we click on the document, we will get to the document on the other instance, which is something that, so sometimes you may have access to the document, sometimes not. And if you want to have a direct access to the page and not go in the other instance, you can directly click on it and you get an HTML preview of what the page that we share was. So now, as I said, we have the possibility also to follow a wiki or try to interconnect wikis between themselves. So the idea is that here I am in a group that is the administrators of the wiki, which is also marked as the group managing the activity bug wiki actor. So I have the possibility, for example, as Alice, to say, okay, I want to control activitypub as part of the current wiki. And what I get is an interface that is very much like the one that we saw in the user profile previously. But here that will allow me to manage how I'm communicating from the wiki itself. So for example, when there is a document that has been modified or something like that. So there is actually one element that I did not showed you, which can be of interest here. So I'm editing a page as Alice. Okay, I've just saved and now Bob gets a new event about a page that has been modified by Alice and we get the message this is just one element, so it's not really related to what I was starting to talk about, which is the possibilities to follow wiki. It's just based on the fact that Bob follows Alice. And so as such he gets notified when there are some changes in the wiki. So let's try something else. So for example here I'm going to switch as the current wiki actor and I'm going to go with a different user on activity on the second wiki. Let's log in as another administrator and let's go for current wiki. And now what I want to say is that as an administrator I would like to follow a whole wiki. So every modification that can be done on the exweky one command fr so I can send a follow request here you can see some tries that I did just before this presentation and now. So here I'm still connected as Alice. If I'm editing well, let's say same, let's edit the sandbox page. Then at that point this administrator user should also be notified. Yes, notification took a bit of time to come up here, and so here we have the notification itself. It okay, so here what you saw is kind of a glance of what we can do currently. And what's kind of interesting is that with the possibility to share documents between wikis, what we are trying to do is really to help the collaboration and the sharing of information between two sources of information that might be very distinct. So if we go in the next steps of this implementation, what do we want to do afterwards? Mostly try to integrate with third party platforms. So for example, with the examples that I showed in the beginning of the talk, we have nextcloud and Matomo that are coming up. Matomo is quite a good example because it has quite an interesting activity of integration. And also nextlode will fit in this idea of being able to share knowledge using a distributed and decentralized protocol. One other thing that we want to do, because it's still currently in kind of a research project, is trying to improve the reliability of the application, making sure that events are correctly getting to their destination, make sure that we don't have any bugs, basically. And finally, we could have new actors, so new ways to. Well, different ways to follow different part of a wiki if we want to follow only a certain type of events coming from a specific part of a wiki, for example, or that come from a specific set of pages. If you want to get a bit more information about this application and did this integration, I would highly suggest that you get and take a look at the slides here and click on the link about the activitypub application documentation. I'm going to show it to you here. You will get a lot of information about, well, what is currently supported, what is not supported yet, what are the endpoints that we also propose as part of the application, and also a couple of instructions on how to set up the application, which is quite good if you want to trade by yourself. And then we also have a link to the protocol itself if you want to try. Okay, well, thank you for the time spent on this presentation. If you have any question, don't hesitate to ask me. You have my contact information in the second slide, well, in the third slide of this presentation. Thank you and have a nice day.

Clément Aubin

Developer @ XWiki SAS

Clément Aubin's LinkedIn account Clément Aubin's twitter account

Awesome tech events for

Priority access to all content

Video hallway track

Community chat

Exclusive promotions and giveaways