WEBVTT

00:00.000 --> 00:15.480
Okay, so I hope you all are here because of the WordPress talk, because we shifted around a bit.

00:15.480 --> 00:24.640
So as Andy already said, my name is Matthias Pefelli, I work at Automatic as an open web

00:24.640 --> 00:32.800
Wrangler, I'm maintaining the activity plugin, and I'm a WordPress user since WordPress exists.

00:32.800 --> 00:38.160
So I even started with the predecessor of WordPress, and I'm maintaining a lot of other

00:38.160 --> 00:44.440
plugins, but that would blow up the talk I would say.

00:44.440 --> 00:51.000
Some facts about WordPress, it was founded in 2003.

00:51.000 --> 00:59.440
As a blogging platform, now you would call it a CMSA, it powers almost 43% of all websites.

00:59.440 --> 01:07.880
Huge potential for the Fediverse, and there are around 60,000 plugins that might also

01:07.880 --> 01:10.200
be federated sometime.

01:10.200 --> 01:14.160
It's open source and runs on the landscape.

01:14.160 --> 01:20.800
Because there was a shift around, I wasn't sure if I had to talk about the Fediverse

01:20.800 --> 01:28.320
and the open social web now, is everyone aware of that, the concept, someone unaware?

01:28.320 --> 01:29.320
Perfect.

01:29.320 --> 01:36.080
Okay, let's talk about WordPress and the Fediverse.

01:36.080 --> 01:37.080
Why WordPress?

01:37.080 --> 01:38.080
Why the Fediverse?

01:38.080 --> 01:44.160
That's very simple, and I'm very bad in marketing, so it's simply I'm using WordPress,

01:44.160 --> 01:53.120
and I was frustrated about the direction social media took back in the days to more

01:53.120 --> 01:55.480
wallet garden concept.

01:55.480 --> 02:05.480
So I searched for alternatives to keep the spirit of the blogosphere alive, a decentralized

02:05.480 --> 02:12.040
system, ping-bags, track bags, having comments on other ones systems.

02:12.040 --> 02:21.160
So I decided to have a look at the Fediverse, and that started way before activity

02:21.160 --> 02:23.080
pop was even a thing.

02:23.080 --> 02:31.160
So I think it was 2011, when I first got in contact with the predecessor of activity

02:31.160 --> 02:41.880
pop, old status back in the days, in the glorious status, identica times, and the first prototype

02:41.960 --> 02:53.040
allowed users to follow WordPress users, federating content, and federated comments on that content.

02:53.040 --> 03:01.280
That got another boost, when Macedon entered the scene, they drove a lot of momentum

03:01.280 --> 03:08.760
to the Fediverse, they had quite a good timing when Twitter did some bad decisions, but

03:08.800 --> 03:14.920
there were great movement, and I was really motivated to have a look at the Fediverse

03:14.920 --> 03:25.920
and WordPress again, but that escalator quickly, so about a year later Macedon decided

03:25.920 --> 03:36.240
to abandon old status, and after some weeks of frustration, I felt motivated enough to follow

03:36.240 --> 03:44.080
that direction, and tried to implement activity pop for WordPress.

03:44.080 --> 03:52.000
And then there were another boost, automatic got a way out of my work, and out of nowhere

03:52.000 --> 03:58.600
contacted me, if I would love to work for them on open web stuff, including the activity

03:58.680 --> 04:09.360
pop plugin, which gave a lot of momentum on the plugins called WIS and contribute at WIS.

04:09.360 --> 04:18.360
That's the activity pop plugin, it's maybe some fundamentals about the plugin that maybe

04:18.440 --> 04:23.840
helps to understand why we took decisions we took.

04:23.840 --> 04:37.320
We don't want to have to make WordPress a social network, so WordPress is a blogging platform,

04:37.320 --> 04:43.440
and it should stay a blogging platform, so we decided to instead of making WordPress a social

04:43.480 --> 04:50.440
network to adapt social interaction possibilities for WordPress, but the WordPress way,

04:50.440 --> 04:58.200
to integrate it as natively as possible, and it should work out of the box, a simple

04:58.200 --> 05:08.200
plugin play installation, and we also, because of this, 60,000 plugins, we also hope

05:08.200 --> 05:16.280
to provide an internal API for other developers to hook into the core functionality of

05:16.280 --> 05:23.880
the activity pop plugin to then federate their own content.

05:23.880 --> 05:29.360
The installation is quite easy, you simply go to WordPress backend, search for activity

05:29.360 --> 05:35.400
pop and install the plugin, then you get a little onboarding process that should help you

05:35.480 --> 05:40.680
understand how the plugin works in general.

05:40.680 --> 05:45.360
We do not force you to do any settings, as I said, it should work out of the box.

05:45.360 --> 05:51.960
The only thing you should take care of is WordPress normally works in a shared hosting

05:51.960 --> 05:58.160
environment, and there are a lot of other plugins that do stuff, so there's a possibility

05:58.160 --> 06:04.800
that hosting and other plugins work against the activity pop plugin.

06:04.800 --> 06:15.200
These checks, check the fundamental endpoints and functions that are really necessary

06:15.200 --> 06:22.480
to run WordPress, so you only have to take care about these if you can, these are things

06:22.480 --> 06:25.920
that the plugin itself cannot fix.

06:25.920 --> 06:27.800
That's it.

06:27.800 --> 06:42.000
Now you are able to publish federated blog posts, under the hood, but there is a bit more.

06:42.000 --> 06:48.800
Under the hood that means, because we want to stick to, as I said, to the WordPress UI

06:48.800 --> 06:59.320
as much as possible, we decided to go with the classic blogging editor and find ways

06:59.320 --> 07:05.000
to understand the blog posts or the content they use as publishing, so there is an

07:05.000 --> 07:11.760
autism that runs in the background that analyzes the content you write based on the length

07:11.760 --> 07:22.320
of the post, do you use a title or not, and decide what could be the best possible

07:22.320 --> 07:28.760
federated activity version of that to then federated like that.

07:28.760 --> 07:34.360
We also try to hook into core WordPress functionality, like for example WordPress has the

07:34.360 --> 07:41.720
concept of post formats, where the user can decide if it should be federated as a node

07:41.760 --> 07:47.800
or as a full article, and that's also the possibility to choose media types.

07:47.800 --> 07:55.240
For example audio video, and the plugin assumes then if you use the video content type

07:55.240 --> 07:59.400
or the audio content type, that this media should be in the focus.

07:59.400 --> 08:08.480
So if you use audio, for example, when you publish a podcast, then it highlights the audio

08:08.560 --> 08:15.080
and shows a nice little audio play on Macedon, and there are other examples for a short

08:15.080 --> 08:18.680
note or the full content.

08:18.680 --> 08:27.440
The nice thing about that is we do not have to care about the 500 characters of Macedon.

08:27.440 --> 08:36.640
When it is not possible to directly hook into core functionality, we try to extend the settings

08:36.640 --> 08:41.880
that are already there and try to keep the UI and UX.

08:41.880 --> 08:47.440
That's for example the extension for the editor.

08:47.440 --> 08:53.880
You see here on the right side, where the user can decide blog post, if it's a public one,

08:53.880 --> 09:01.360
a quiet one, who should be able to quote that post the number of attachments and things

09:01.360 --> 09:05.280
like that.

09:05.360 --> 09:07.840
There's a lot of magic happening in the background.

09:07.840 --> 09:15.680
We decided to provide a preview option, hooking into the core preview possibilities

09:15.680 --> 09:21.600
to add a fabulous preview version so that the user can see what will be federated.

09:21.600 --> 09:29.600
This we decided to use the biggest one on the market or to mimic the biggest one.

09:29.600 --> 09:36.400
It's possible to hook into that so if you have event plugin and you want to federate events,

09:36.400 --> 09:47.320
you can replace that preview with an event preview, mimicking mobile phone for example.

09:47.320 --> 09:57.720
There's the common support for inline semantics like attributes or hashtags and the plugin

09:57.720 --> 10:04.280
also maps these semantics to the core representations of WordPress.

10:04.280 --> 10:15.720
So if you use a hashtag inline, then it will be stored also as WordPress tag and vice versa.

10:15.720 --> 10:18.720
With comments, it's really fine and straightforward.

10:18.720 --> 10:23.840
We can add these as comments on WordPress.

10:23.840 --> 10:34.080
The only difference that makes it a bit complicated is that WordPress was not built with social

10:34.080 --> 10:42.080
network or federation in mind so there's still the local common form and we decided

10:42.080 --> 10:46.040
to have different read possibilities.

10:46.040 --> 10:57.280
So if a comment read started on the fediverse, it will be fediverse only to not have separated

10:57.280 --> 11:03.080
communications so that it started on the fediverse and then it went on on the block and

11:03.080 --> 11:04.880
the same for local comments.

11:04.880 --> 11:11.080
If a thread starts local, then it stays local.

11:11.080 --> 11:19.760
It was a bit tricky to map shorter reaction options like boosts and likes because there's

11:19.760 --> 11:23.640
no real point on the WordPress site.

11:23.640 --> 11:32.300
So in the end we decided to use comments to store these but take them out of the common

11:32.300 --> 11:36.840
query and use different UI for them.

11:37.080 --> 11:49.800
Because we use the comments WordPress type for everything, we are able to reuse the moderation

11:49.800 --> 11:57.080
queue of WordPress so every like reaction or comment runs through the moderation process

11:57.080 --> 12:04.520
so you can have spam filters looking through all of these and we added an addition with

12:04.520 --> 12:14.920
block lists of several types and also a possibility to subscribe to block lists.

12:14.920 --> 12:23.760
And for the bit richer content WordPress provides, I wanted to say the new editor but

12:23.760 --> 12:34.560
it's also about 70 years old I think but the actual editor allows to add blocks or has

12:34.560 --> 12:45.720
the concept of blocks every row in the editor is a block even if it's a paragraph, a block

12:46.040 --> 12:55.160
or something like that, a table and we extended that to add some social additions for example

12:55.160 --> 13:04.400
a reply block that allows you to write replies as a reply to another block post or to a note

13:04.400 --> 13:14.040
on the Fediverse and to add some common things like follow us list or follow us lists.

13:14.040 --> 13:19.040
For that you simply have to create a page and use that block.

13:19.040 --> 13:27.040
There are also blocks that provide profile cards and follow buttons.

13:27.040 --> 13:33.040
These can also be used in templates if the template supports blocks.

13:33.040 --> 13:40.040
Or does it look like normal profile should look like on the Fediverse I would say nothing

13:41.040 --> 13:47.040
out of the ordinary. There's one addition that might be special for WordPress.

13:47.040 --> 13:54.040
You can configure the plugin so that the block itself is an actor and that acts as a group then

13:54.040 --> 14:01.040
which allows you to be followable if that is a word on the Fediverse

14:01.040 --> 14:08.040
and then it looks like community and all of the block posts will be listed as threads.

14:11.040 --> 14:20.040
For the developers we have the common WordPress thingy filters and actions almost.

14:20.040 --> 14:28.040
So there are a lot of options to directly hook into the inbox process to process inbox

14:28.040 --> 14:39.040
we quest directly to add things to the outbox to filter the activities and additional attributes before we send them out.

14:40.040 --> 14:48.040
We have persistent inboxes and outboxes that means even if you miss an activity you can bypass the inbox of the outbox

14:48.040 --> 14:55.040
and federating your own content as plugin developer is as easy as storing something in the outbox

14:55.040 --> 15:01.040
and the activity plugin takes care of the federation then.

15:01.040 --> 15:17.040
And there's the common API endpoints. These are also extensible and we take care of the plugin takes care about the signature verification.

15:17.040 --> 15:26.040
If you are interested if you are a WordPress developer and interested in building something on top of the activity plugin

15:26.040 --> 15:39.040
these are three plugins that already do that maybe that's nice reference but aside from that these are quite nice plugins that are also.

15:39.040 --> 15:48.040
Of well you for end users the event page for example purchase the biggest hand WordPress event plugins to activity pub.

15:48.040 --> 16:15.040
An ever method on apps implement a method on API for WordPress so that you can use a method on apps to publish something to WordPress and friends is kind of what we didn't want to build for WordPress it's a community overall community thing that also federates and through the activity plugin.

16:15.040 --> 16:28.040
There are also challenges if you build directly or if you directly extend WordPress and work inside of WordPress and the WordPress ecosystem.

16:28.040 --> 16:44.040
And that is mainly shared hosting because activity pub can be generated a lot of load so it's very tricky to handle that load properly to find a way to federate stuff in bugs.

16:44.040 --> 16:55.040
So that the server does not go down. There are a lot of other plugins as I already mentioned that interfere with the activity pub plugin from time to time.

16:55.040 --> 17:20.040
Then there's a very limited way to use the WordPress database so it is technically possible to extend that with custom tables but that is not the common sense and there might be service that prevent that so we decided to go with these and that.

17:20.040 --> 17:26.040
For us to be really creative when it comes to storing events and remote users.

17:27.040 --> 17:42.040
And WordPress has still the differentiation between comments and posts which makes it really difficult for to store incoming posts from the very goes because it's always you have to go.

17:42.040 --> 17:51.040
There's always up the threads to find the first post store that has a post and the common thread then as threads.

17:51.040 --> 18:03.040
And there's also something that is very special to WordPress that's domain changes that's a very common thing in self hosted sites that's not very common on the federates yet.

18:03.040 --> 18:10.040
There are some creative ways to use move for a domain change but that's not very well supported yet.

18:10.040 --> 18:28.040
And there's some general things the user so in the WordPress world the federated communication is not that common so we train users a lot to no longer be aware of the the old days of the blogosphere but.

18:29.040 --> 18:41.040
Using word for simply for publishing the activating anything that allows social interactions like comments and fully rely on.

18:41.040 --> 19:02.040
And third party social media to use cross posting to federate what to share their content so the most asked questions in the first year of writing the plugin was okay I installed the plugin how can I connect that to my master blown account.

19:02.040 --> 19:11.040
Another one is WordPress is no social networks so we do not have the network effects of normal social networks there is no.

19:11.040 --> 19:21.040
Local timeline so it's it's very lonely when you first install it and you have to really.

19:21.040 --> 19:29.040
Work on building an audience you have to really push that out and that is really hard work.

19:29.040 --> 19:37.040
But if you give it a try it can be really amazing that is one of our blocks or that's the official blog of the.

19:37.040 --> 19:48.040
The activity plugin and it went from zero comments to around 100 comments proposed only by connecting it to the federates so it's really.

19:48.040 --> 19:54.040
A magical thing bringing back interaction to to the blog again.

19:54.040 --> 20:01.040
And it's all yours it's under your domain you hosted your own it you can do whatever you want.

20:01.040 --> 20:11.040
What comes next one big thing we already started is the reader you might have seen that I mostly talked about the publishing part.

20:11.040 --> 20:21.040
But we are actively working on the subscription parts so that we can provide the full activity activity part experience in the end.

20:22.040 --> 20:35.040
It's already working you find that in some hidden some at once at advanced settings and it's still there's still some glitches but I think that would be the main part for the next year.

20:35.040 --> 20:49.040
And I'm also excited personally excited about to other projects like the the starter packs because I think that is also something that helps block users to.

20:49.040 --> 21:02.040
Get seen or the content get seen and the fast project by Macedon to have a decentralized discovery service system.

21:02.040 --> 21:05.040
So that's it thank you.

21:06.040 --> 21:20.040
Any questions.

21:21.040 --> 21:25.040
It's a work press to.

21:25.040 --> 21:30.040
To help you.

21:33.040 --> 21:45.040
It's the work press community prepare to to pick up the changes for the extensions so to improve the products for this obvious nice.

21:46.040 --> 22:00.040
I think that depends if that is really use case and or if we can make that a use case I think it's still very niche and compared to to other big plugins.

22:00.040 --> 22:06.040
I would I would hope that this changes some of the.

22:06.040 --> 22:18.040
WordPress court database tables or how WordPress thinks of internal object types differently for example that there's already the concept of.

22:18.040 --> 22:26.040
Posts being a sub post of another one so that's technically possible but it's not used.

22:26.040 --> 22:30.040
So I would hope that.

22:30.040 --> 22:36.040
Maybe one day this work would positively influence the project.

22:36.040 --> 22:37.040
Yeah.

22:37.040 --> 22:38.040
Thanks.

22:49.040 --> 23:04.040
First of all I want to say thank you Matthias for bringing back comments to my blog since 15 years there were so many comments and the times of the productivity power plug in and the question is.

23:04.040 --> 23:14.040
What would you recommend when we did a blog and using a sub domain or development domain and you want to keep your followers safe.

23:14.040 --> 23:16.040
What can we do then.

23:16.040 --> 23:20.040
So that refers to the domain change thing.

23:20.040 --> 23:28.040
That's really a problem so and I have not yet a solution to that but I hope that maybe.

23:28.040 --> 23:43.040
The reactivated social web working group might have might work on something to fix that in the future but that's one of the biggest issues right now that we cannot.

23:44.040 --> 23:46.040
Fix with.

23:46.040 --> 23:50.040
More RAM or bigger database.

23:50.040 --> 23:52.040
Yeah.

23:52.040 --> 23:58.040
But so there are some hidden features to trigger moves.

23:58.040 --> 24:03.040
Maybe we can have a talk later.

24:03.040 --> 24:12.040
So one of the rules around for them is use of the university spaces that we need to have folks seated in the room so that.

24:12.040 --> 24:17.040
Fire regulations and so on are kept for crowding and stuff like that.

24:17.040 --> 24:21.040
I know it sounds counter but that's the rule.

24:21.040 --> 24:26.040
So thank you any more questions I can bring a mic to you.

24:42.040 --> 24:52.040
Maybe first the round of applause to this person because he built the event bridge plugin.

24:52.040 --> 24:53.040
Thank you.

24:53.040 --> 24:58.040
I think you won't like that question but you mentioned it and I find it quite interesting.

24:58.040 --> 25:04.040
Can you give a short reference what becomes an activity profile in WordPress?

25:04.040 --> 25:10.040
What can what it becomes an actor or profile on a WordPress website?

25:10.040 --> 25:19.040
So normally it's every WordPress user that has the right to publish something.

25:19.040 --> 25:23.040
And on top of that there's the block actor.

25:23.040 --> 25:31.040
And we have some hidden application actor that is doing the querying stuff.

25:31.040 --> 25:36.040
But it's just that answer the question.

25:36.040 --> 25:48.040
So I think in the end it all comes to the possibilities you have in WordPress.

25:48.040 --> 25:57.040
So as a sad WordPress is very limiting in extensibility database wise.

25:57.040 --> 26:07.040
So it's really hard to introduce new actors in the same way that WordPress users are stored.

26:07.040 --> 26:21.040
Especially if you use a bigger systems like WordPress multi site because if you create something like an application user as a real user then it is known on all blocks.

26:21.040 --> 26:41.040
So yeah that can definitely be improved but maybe someday we have an improved handling of the database generally so.

26:41.040 --> 26:46.040
We're going to do some defragmentation here we've got some gaps in the middle that will help to.

26:46.040 --> 26:52.040
If folks are staying in the room for the next talk if you could just shuffle along that would be awesome.

26:52.040 --> 26:54.040
The tires can I ask a question.

26:54.040 --> 27:02.040
Yeah so one of the things I think really contrast strongly between activity pub and some of the social web.

27:02.040 --> 27:10.040
Excuse me social network integrations that you see with WordPress is just the fidelity in terms of the content that you're sharing.

27:10.040 --> 27:23.040
Right so when you're posting out to like Facebook or LinkedIn or whatever you get you know an image maybe a garbled version of the lead maybe a title and that's it.

27:23.040 --> 27:35.040
Is that a selling point at all for WordPress authors that you know you can see the full article on the Fediver versus like a garbled mess in LinkedIn.

27:36.040 --> 27:43.040
That's a tricky question because it depends so over the years.

27:43.040 --> 27:54.040
Social media managers were trained to use exactly that pattern and they kind of used to love that to be very explicit with.

27:54.040 --> 28:03.040
I want to share exactly that and it looks exactly like that on social media and it was a hard one to explain.

28:03.040 --> 28:15.040
The big companies in Germany that this does no longer play a role it's for my perspective it's more you provide everything you have and the receiving club from decides what to show.

28:15.040 --> 28:20.040
So the WordPress plugin always provides a summary.

28:20.040 --> 28:31.040
The full content and some attachments and then it's on the receiving party to decide if they want to show the full content only the summary.

28:31.040 --> 28:45.040
And I personally really like that pattern but from the perspective of a sort of so familiar manager this is often uncontrollable and yeah that might be the issue there.

