WEBVTT 00:00.000 --> 00:11.000 Hi, everybody, so our next presenter is Django Ducey, who's going to talk about some of 00:11.000 --> 00:17.720 the exciting new developments in some of the oldest technology on the Fediverse, the Activity 00:17.720 --> 00:20.720 Pub API or C2S. 00:21.720 --> 00:27.720 Thank you very much. 00:27.720 --> 00:29.720 Hi, everyone. 00:29.720 --> 00:31.720 I'll just introduce myself. 00:31.720 --> 00:37.720 I'm Django Ducey, struggling with the slide thing here, but we're going to get that working. 00:37.720 --> 00:39.720 There we go. 00:39.720 --> 00:43.720 I'm a web developer for a co-lab cooperative. 00:43.720 --> 00:47.720 I'm also an instructor of web design at Nate. 00:47.720 --> 00:50.720 I know they're in Alberta, Institute of Technology. 00:50.720 --> 00:58.720 I got to the Fediverse, at least the Activity Pub Fediverse in around 2018, and with 00:58.720 --> 01:01.720 my WordPress experience, I was like, what can I do? 01:01.720 --> 01:07.720 So I started contributing to Mathiasa's project, the Activity Pub plugin for WordPress. 01:07.720 --> 01:14.720 And I contributed around some other projects over the years. 01:14.720 --> 01:29.720 So yeah, the elephant in the room, I'm going to hat tip to the project. 01:29.720 --> 01:38.720 They've basically built their project with a product in mind. 01:38.720 --> 01:43.720 And what this meant is that they departed from the Activity Pub client portion of the 01:43.720 --> 01:45.720 protocol. 01:45.720 --> 01:53.720 They ended up building a rest API, which allowed a whole ecosystem of apps and 01:53.720 --> 01:57.720 web apps to develop. 01:57.720 --> 02:02.720 In my opinion, the humble opinion, this was a brilliant strategy. 02:02.720 --> 02:06.720 A lot of normies, they need their apps, right? 02:06.720 --> 02:11.720 It's a easy way to get on to social and it's sort of an unexpected experience at this point. 02:11.720 --> 02:18.720 So when I joined, I was really excited to try out all the different third party apps that 02:18.720 --> 02:22.720 existed. 02:22.720 --> 02:27.720 But there has since been some tectonic shifts in the space. 02:27.720 --> 02:33.720 Blue sky and threads over the last two years, three years. 02:33.720 --> 02:41.720 I entered the microbiology space and essentially have slowed down the growth of the Fediverse. 02:41.720 --> 02:49.720 So we can't really rely on more waves of people migrating off of X. 02:49.720 --> 02:53.720 So what's beyond microbiology? 02:53.720 --> 02:57.720 Well, we have traditional blogging. 02:57.720 --> 03:02.720 WordPress is how one of the most popular server types on the Fediverse. 03:02.720 --> 03:07.720 So that's really exciting. 03:07.720 --> 03:15.720 With reports of rampant censorship on US tectoc, there's currently an appetite for alternatives 03:15.720 --> 03:18.720 in sort of short videos. 03:18.720 --> 03:27.720 And loops is a place to take some of that interest in some of that growth. 03:27.720 --> 03:33.720 It can also come from like professional networking or mastodating. 03:33.720 --> 03:39.720 But does the mastodon API make sense for any or all of these? 03:39.720 --> 03:42.720 Probably not. 03:42.720 --> 03:48.720 Looking at some of the projects on the Fediverse, we have photoblogging. 03:48.720 --> 03:52.720 So pixel fed ended up using a sort of mastodon compatible API. 03:52.720 --> 03:57.720 Two went and developed their own API as did let me. 03:57.720 --> 04:02.720 And, you know, mbin and pie fed for those familiar with the project. 04:02.720 --> 04:06.720 I've also used this API. 04:06.720 --> 04:13.720 Mobiles on and Jancy have also developed their own APIs. 04:13.720 --> 04:19.720 So there's kind of a thing where there's redundancy, right? 04:19.720 --> 04:24.720 And they're developing their own APIs when activity pub actually came out with client 04:24.720 --> 04:29.720 to server as part of the spec. 04:29.720 --> 04:31.720 But it wasn't with problems. 04:31.720 --> 04:37.720 Eugene commented to help her mastodon content that the spec is probably bear bones. 04:37.720 --> 04:40.720 No notifications separate from home feed. 04:40.720 --> 04:43.720 Everything is mixed together in the inbox. 04:43.720 --> 04:48.720 No search, no on a complete, no domain blocking, et cetera. 04:49.720 --> 04:51.720 So is it even workable? 04:51.720 --> 04:55.720 Can we even do anything with the client to server API? 04:55.720 --> 05:01.720 Well, Arnold Schriever, also known as Circle Builder on the Fediverse, 05:01.720 --> 05:08.720 started a delightful list of servers that support the API. 05:08.720 --> 05:11.720 Missing from here, I didn't have the icon is bonfire, 05:12.720 --> 05:17.720 really excited about their support for the API. 05:17.720 --> 05:24.720 One of the main problems has been connecting apps to the projects. 05:24.720 --> 05:27.720 Some didn't support OAuth at all. 05:27.720 --> 05:32.720 Some were using custom mpoints. 05:32.720 --> 05:34.720 So what about clients? 05:34.720 --> 05:40.720 There's very few really and status as an Android client that's actually kind of old. 05:41.720 --> 05:44.720 Her has supported it for a while. 05:44.720 --> 05:47.720 Supports Pluroma. 05:47.720 --> 05:49.720 Steve Bate, I don't know if he's here. 05:49.720 --> 05:52.720 You develop a client called flows. 05:52.720 --> 05:56.720 There's also anigmatic by someone named Justin Thomas. 05:56.720 --> 05:59.720 So there is a little bit of movement. 05:59.720 --> 06:06.720 Problems and opportunities really from the Eugene quote earlier, 06:06.720 --> 06:09.720 he mentioned trying to build a timeline. 06:09.720 --> 06:12.720 It's true that notifications, at least the kind that we're used to, 06:12.720 --> 06:15.720 where you get something and it's unread until you've read it. 06:15.720 --> 06:20.720 And then once you've seen the sort of message, 06:20.720 --> 06:25.720 it doesn't show up as unread. 06:25.720 --> 06:28.720 Well, happens when you fetch from the inbox, 06:28.720 --> 06:31.720 is you actually get a bunch of activities. 06:31.720 --> 06:35.720 And this can kind of be a challenge to work with, 06:36.720 --> 06:39.720 because maybe you only want to show the creates and the updates. 06:39.720 --> 06:43.720 You can't really show a delete activity. 06:43.720 --> 06:45.720 But when you get all these activities, 06:45.720 --> 06:47.720 you also get likes. 06:47.720 --> 06:51.720 And so there's an opportunity there to build out custom algorithms, 06:51.720 --> 06:56.720 based on who you're following and what they're interested in. 06:56.720 --> 07:01.720 So you can create a sort of four-year feed. 07:01.720 --> 07:04.720 For my part, I'm building a progressive web app, 07:04.720 --> 07:07.720 tentatively named Sprout for the moment. 07:07.720 --> 07:10.720 And I'm sort of working through, 07:10.720 --> 07:12.720 interrupt with all those, 07:12.720 --> 07:16.720 the different platforms that are supporting the client to serve API. 07:16.720 --> 07:20.720 And generally trying to push boundaries of what we can do with it. 07:20.720 --> 07:24.720 And sort of talking about some of the bugs, 07:24.720 --> 07:26.720 some of the issues. 07:27.720 --> 07:32.720 The activity pub task force has started in September. 07:32.720 --> 07:34.720 There's a bunch of user stories and issues there. 07:34.720 --> 07:39.720 The goal of the task force is to create a base profile, 07:39.720 --> 07:44.720 so that, yeah, developers, clients, 07:44.720 --> 07:48.720 developers of clients and servers will have something to work with, 07:48.720 --> 07:51.720 something not be left in the jar. 07:51.720 --> 07:53.720 So yeah, meetings are next. 07:53.720 --> 07:55.720 Every third, third, third, third day. 07:55.720 --> 07:58.720 Come join as much as for users, 07:58.720 --> 08:01.720 not just for developers of front end and back end. 08:01.720 --> 08:05.720 Users are very welcome to share stories of what they would like from an app, 08:05.720 --> 08:08.720 from a Fediver app. 08:08.720 --> 08:11.720 Thank you. 08:11.720 --> 08:26.720 So, tradition all now for the 10 minutes or else we have one question. 08:26.720 --> 08:27.720 Thank you. 08:27.720 --> 08:33.720 How does that deal with radically different content types you can get from, 08:33.720 --> 08:36.720 from the different services if you have a service, 08:36.720 --> 08:39.720 that's a bit of a technical stick. 08:39.720 --> 08:40.720 Client. 08:40.720 --> 08:41.720 Yeah. 08:41.720 --> 08:42.720 That you could connect. 08:42.720 --> 08:44.720 Mass it on the wall, loop, 08:44.720 --> 08:45.720 or whatever. 08:45.720 --> 08:49.720 They have very different styles of content. 08:49.720 --> 08:51.720 How, how, how. 08:51.720 --> 08:52.720 Yeah. 08:52.720 --> 08:55.720 So, I mean, it's going to depend on your server, 08:55.720 --> 09:00.720 what activities it's going to be able to process, 09:00.720 --> 09:04.720 and what shows up in your inbox really. 09:04.720 --> 09:06.720 It's going to be a web client. 09:06.720 --> 09:09.720 I looked at the vocabulary, all the different content types, 09:09.720 --> 09:12.720 and I just created stuff for it. 09:12.720 --> 09:14.720 So, I can, we can handle it. 09:14.720 --> 09:16.720 I guess one of the things that we're looking at is, 09:16.720 --> 09:22.720 like, how do you specify compatibility for posting different content types, 09:22.720 --> 09:23.720 right? 09:23.720 --> 09:26.720 So, if a diploma does the yet support events, 09:26.720 --> 09:29.720 but eventually, you know, 09:29.720 --> 09:32.720 if somebody's trying to post an event, 09:32.720 --> 09:35.720 what should happen, what should be the error type or? 09:35.720 --> 09:37.720 The other thing, sorry, I mean, 09:37.720 --> 09:39.720 to jump in, because I'm passionate about this topic, 09:39.720 --> 09:43.720 is that activity pub comes with fallback representations, 09:43.720 --> 09:45.720 built into the object, right? 09:45.720 --> 09:48.720 So, we have summary to have a text representation. 09:48.720 --> 09:50.720 We have image or icon that you can use. 09:50.720 --> 09:54.720 So, if you get a blurbow, you don't know what it is, 09:54.720 --> 09:57.720 it's still got the summary and the icon, 09:57.720 --> 10:00.720 and you can kind of represent it and use it in your interface. 10:00.720 --> 10:01.720 Thanks. 10:02.720 --> 10:05.720 Great, thank you, Evan, Paul, and Django for your short talks. 10:05.720 --> 10:06.720 Appreciate it.