Transcript
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
activitypub.org 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.