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.