 So, in promo, we have a problem, well, we have plenty of problems, but we have one specifically with social media. We post a lot to social media and we post to many places on social media to cover a wide spectrum of people and to reach a lot of people. So this is a very error prone and long, not long, but tedious process because we have to do it by hand. We do not publish the same message to different platforms, although the content may be the same, the form may change. So what we post to Facebook and Twitter, for example, may have a different phrasing as to what we post to LinkedIn because LinkedIn is more professional, so we can't be so chatty or what we post to Reddit because Reddit users, well, they're quite particular and so they don't respond the same to what we do on Twitter and Facebook, et cetera, et cetera. When we post to Instagram, again, it changes because Instagram is a more visual medium, et cetera. So when we have to post something to social media, there's quite a lot of work involved, and it can take quite long and, as I say, it's quite error prone because you can post something and then you realize you've got a mistake and you have to take it back or whatever, or you post the wrong message to the wrong platform and then you have to take that back and substitute it with the new one, et cetera. That is the first problem we have. We have another problem that is about scheduling, so a lot of platforms have a scheduling feature that allows you to post stuff at a later date or at a later time, so you can post stuff, for example, that you need to post for another time zone that is not yours. You can post it at four o'clock in the morning, but you don't have to stay up, so you can post it, but not all platforms have it, and every platform implements scheduling in a different way, and that is, again, is a bit of a mess. For example, if Twitter has scheduling through Tweetdeck, Facebook has scheduling built-in, Macedon has scheduling built-in also, but, you know, actual, you can't do it from the web interface, scheduling can only be done from a mobile application, so you can't do it from a desktop client, either. Reddit has just included scheduling for mods, but if you're not a mod, you can't use scheduling, et cetera, et cetera, et cetera, and as I say, they're all different, they all use different formats, and so it's a mess. You have to, again, it takes a lot of time, and it is not convenient. We have another problem with social media in that we're talking about credentials here, about accessing stuff. So some platforms do implement users that have different privileges that access different accounts, so you can have a team. So on Facebook, you can have an admin, and you can have an editor, and they have different privileges, editors can only post, and admins can do things like post, but also they can ban people, or they can remove comments and stuff like that. Dect also has a certain degree of credentials and roles. MasterDone has nothing, PeerTube has nothing, Reddit has mods, but that is a different thing altogether. So basically, on many of the platforms we've put, I think Instagram doesn't have any roles either in any shape or form, and it can confirm this. So on those platforms that don't have roles, it's either all or nothing. So if somebody wants to post to MasterDone, for example, they have access to everything, they could delete the whole account if they wanted instead of posting, they could do all sorts of things. This, of course, is also a problem. We have looked into existing solutions, and they do exist. There is a famous one called Tootsuite, which you would probably have heard about. Their logo is a little out, and there are many more. There are whole dashboards for posting to social media, but they don't really help us because of several problems they have. So the first one is represented graphically here. None of them are free in any sense of the word. So you always have to pay for them, or you get a very watered down version that only lets you post nothing, not what we want, and they are also all proprietary, which comes with another problem. And that is that they are a bit spied. Part of their business also means harvesting the data that really should be for you, about your users and about what you post and so on, which does not marry well with any of our principles. The other problem they have is that, okay, I didn't know how to represent graphically a service, so I just drew a dot. So they ignore the existence of the Fediverse completely. They have the typical things. They have anything that becomes popular in this proprietary goes. So they have Twitter, they have YouTube, they have Facebook, they have Instagram, TikTok, et cetera. But there's nothing like Macedon or diaspora or anything like that. So when we post to these places, we have a special interest in promoting our stuff on the Fediverse because that is sort of like the ecosystem of social media platforms that we can most identify with. And the final problem that these services have is that they are very inflexible. So you get what you get if another platform comes along that you are interested in, you have to wait until they implement it, or if they don't have no interest in implementing it, then you just don't get to post there via their service, and that's it. So these things exist, but they would not work for us very well. And the fact is that we have been going after this, solving this problem for literally years, and we have never found a service that would help us. So, enter our solution, and I'm going to play a video. I hope you can hear it. If not, Adam, please tell me. If you can't hear it, I'm going to transfer. This is always a bit dodgy. I'm going to transfer the screen control to the video player. This is Manaf, my colleague running a demo of what he developed during a season of KDE to solve this problem. This is a proof of concept, but stuff works. So let's see if you can hear it. If not, Manaf can explain later what's going on all live or whatever. So let's see. Here we go. Make that full screen, and here goes. So good evening, everyone. Hi, I'm Manaf, and today I'm going to give you a short demonstration of the social media app I've been building. And what I'm putting was that the promoting needs to spend a lot of time pursuing two different platforms. The content was same or similar. So I wanted to work on this application that would let you post in just one place. And it would then post accordingly to the other platforms. So the app itself is built on top of fast update. So if we could just also show you how to actually run the app itself. So step one is to export the parts for the credentials, which are all the social media credentials. So we need that environment to be even set. And then we can run the main server. Yeah, so we know that we have the server ready. Let's head to localhost8000, maybe. So currently there is no client. I work on the server. I am currently working on a CLI client. So meanwhile, let's just head to slash docs, which is the documentation endpoint for the Swagger UI. So please, Swagger UI will let you test and work in case it's similar to. Oh, sorry, Paul, you need to unmute yourself. The song is coming from the mic. Sorry. OK, so let's just hit the post. So the platforms that are currently supported are Twitter, master, and Android. So first of all, let's just post to all platforms. I'm just going to type all. The thing is that we have a test image in the main directory as well. So I'm just going to say test.png. The text is, let's say, the text is going to be never going to give you the time. So now I'm not adding a time right now. But you could add a date, timestamp over here, and you could specify what date and what time to post. So currently, if you don't add a time, it gives you a buffer of two minutes. And after two minutes, it goes automatically. So let's enter the master on base URL. So my master on account is registered with master.com. This separated tutorial to post to is Python is a log. The Reddit text is never going to give you the time. Never going to give you the time. So now let's just execute this. So say start the scheduler to using this to start the jobs. And then it gives us an ID for each of the jobs. Now if I go to skid start, let's just start. It says scheduler started. Now if I do, there's another endpoint that I can call the scheduler. It's skid game. So you can do this to get what the jobs are currently. As you can see, we have the ID and the date line. So it's 536. For the next couple of minutes, let me talk a little bit about the text tag that is used over here. And then we can see the post actually happening. So the primary text tag, as I have mentioned before, is fast API that powers all this entire packet. Other things that you can do with this are basically you could potentially, of course, you have a ping endpoint to just check if the server is running properly. And then you could also look at the user's endpoint to see your user information which I'm not going to do right now. And you can have post to the token endpoint for authentication. So it's 35. Let's wait for one more minute. Another thing which you could do, which I'm not going to do right now, but you could potentially go and just add the, you could call the cancel endpoint with an ID. So you could just paste this idea over here and cancel the job. I want to demo on three, so I'm not going to cancel the job. And after, so with fast API, we have AP scheduler, which is advanced Python scheduler for handling all the scheduling. So one important thing that we wanted to have with this app was that it could have some scheduling built into it. So it has a server and a client. The server runs 20%. The client just schedules the post on the server. And it doesn't matter if your laptop gets destroyed or whatever, the server is still there and the post is still going to happen. So it's statistics. Let's see if the post has happened. So there are a bunch of logs here telling us that initially first it's both to master down, then to Twitter, and then to write it. And we have the response for everything over here also. So now let's just go and see the post, actual post. So we have this post on writing. Then we hopefully, yes, 48 seconds about this post. We have 50 seconds about this post on master. So this is how the algorithm works. Currently there is no actual client for this. I am working on a simple CLI client that is just going to pass the ML5. And it's going to schedule all the posts for you. Yeah. So this is pretty much it for the demo. Thanks for coming. OK. OK. So that was the demo. Thank you. I mean, thanks, Mana, for recording that. I have watched that demo like three or four times. And I always get excited when I see the post actually pop up in the social media platforms. Although I already know that it's going to happen. But anyway, anyway, so this solves several things. It solves the problem of multi-posting. So let me qualify that. It's not because Mana has done a bad job or anything like that. As you can see, it works. The thing is that at the moment, and this is what Mana was able to develop in the time I located in the season of KDE, at the moment it posts only to three of the platforms that we regularly post to Twitter and it posts to Master Don, right? We have tried Facebook, but Facebook is very, very complicated. We'll figure it out sooner or later. And so on. So multi-posting works. And also scheduling works. Scheduling already works completely well, as you have been able to see. And as Mana said, what happens is that you can have a server out on the internet running 24-7 and you can send the stuff to the server and the server will be in charge of scheduling it, not each individual platform. So the scheduling happens at the server level, not on the platform. So we don't have to worry about all the different ways scheduling has been implemented in each of the platforms. Then this is not implemented yet. This is the question of roles. So what we want to have is to be able to have teams access in the server with different privileges. So that you will have an admin who will be able to assign roles. You will have an editor who will be able to post, but not assign roles, for example. And things like that. That is not done yet, but it is in our future. We are, as you saw from the video, it does have a login. So it's not open to anybody. But at the moment, it's very much like one only user. But hey, again, when we get this implemented, it will solve a lot of problems because each platform, Facebook, and Twitter, and Reddit, et cetera, implements roles in a different way again. So we will have only one way, and it will be done by the Cockatoo server. Next. This is private. You can run it on your own server, or you can run it locally. And you can just connect to it locally. So although, of course, we haven't stress-tested it for vulnerabilities or anything like that, we haven't done anything like that. It is already a bit better than sharing all your stuff with the platform that you pay for. So because you can run it locally, and it only gets the stuff you want it to get. And before I go on that, I've missed apparently a slide. It is also flexible because it's plugin-based. So each of the platforms it posts to is implemented in a plugin. So as new social media platforms appear, or if you want to post to a niche platform, you would have to develop, obviously, you would have to develop a plugin for that, and just plug it into the Cockatoo server, and you will have it implemented. And now, how hard it is going to be to write the plugin for that platform will depend on the API of the platform, of course. But for things like the Fediverse, it's pretty easy because we document everything. Everything is open, et cetera. For Twitter, apparently, it wasn't very hard either. Facebook, we did have a problem, but there you go. Yeah, so it's time to meet our mascot as the title of the talk said. This is called Cockatoo. Because Cockatoo are noisy little birds that and we make noise on social media. And that's why it's Cockatoo, and also because Cockatoo start with a K, of course. And the mascot is called Carmen, which is a nice little Cockatoo, and it was designed by somebody on the Krita Artist Discourse Forum. He was very, very kind, and he created all this, and he created our logo, and he created a little icon. And they are very pretty and very funny. Now, now comes what we need from you folks. So to continue the process, of course, Manav is going to continue developing, but it would be good if we had some support from other developers. So for example, I divided them into what we want short-term, mid-term, and long-term. Short-term, we need a client, mainly a proof of concept client. Manav tried to develop a CLI client for this talk, but he didn't have time. So we want, first, that's something that we can just use from the command line just to test it. And we also need the rest of the plugins for the rest of the platforms we support. So as I say, Facebook, we haven't got a plugin. We haven't got a plugin for Instagram. We haven't got a plugin for LinkedIn, and we haven't got a plugin for Hack & News, either, and we haven't got one for diaspora. And those, I think, are all the platforms that we regularly post to, and we need a plugin for each of those. That's the short-term. Then we would need, this is not in any particular order of importance, but we would need to implement the roles and privileges, of course. As I mentioned before, at the moment, it is one user gets the login and does all the posting. And we would want to be able to assign teams to posting, because that is what we actually have in promo. We have actually a team of people who have access to the social media platforms and they are who post. We would also want to implement accounts. Now, this is different from implementing roles and privileges. I, for example, personally, I manage three accounts for KD. I manage the KD, three accounts for KD on Twitter. Sorry. I manage the KD community account. I also can post to the Academy account and I can also post to the Labplot account. So we would also want to implement that, that one user could have several accounts. So several people should be able to post to one account and one person should be able to post to several accounts, ideally, right? So that's another thing. It would also be cool to have a convergent client. I don't know if the Tocoton people are here, but if they are, you know, convert, if you can convert your MasterDone client into a Cocotoo client, that would be really, really cool so that we could have a graphic client. I don't know what that would look like because as I say, this is not a one-to-one thing. You don't have one message to one account like you would have in your Tocoton. You have potentially several messages to several platforms. How that would look instead of a big long list of fields and stuff like that may be something node-based. I don't know what it would look like. This is, I think, an interesting challenge. We also want to create the API documentation so that people outside from our immediate, but outside even from KD, can develop plugins for their own platforms. And we want to set up a server. We want to set up a server for the KD community so that all projects can post using this system to all the social media accounts they have. This would be really, really cool thing to have. Long-term, well, it would be interesting to turn it into an end-user package. So package the server with maybe a watered-down server with a client so that people could just have it installed locally on their desktops or on their mobile phones or whatever, and they could manage several of their own accounts, not maybe getting rid of the team stuff, maybe getting rid of the multiple roles stuff. So it's a watered-down version and it works on a phone so that you can just put it out like an app. People can manage several accounts, there's several social media accounts from one place. It would be nice to have a dashboard to see how posts are going. This is a typical thing in the other proprietary solution. So you post and it also tells you how it's doing, what sort of engagement it's getting, how it's doing compared to other posts you have made, et cetera, et cetera, that would be nice. I mean, it's not a priority. It would also be, this engagement feature is just being able to respond to when people comment or reply, et cetera, to whatever you tweet or whatever you post on Reddit, et cetera, directly from that. Again, not super urgent, not a super priority, but nice to have. And finally, make it into a service that the whole world can enjoy. That would be a great thing to be able to do. So that's it. And I think we have 10 minutes. Is that correct, Adam? Yes, we have 10 minutes. So we have, that's the end of the presentation. And you can find the code there, right? That is Manav's personal repository on Event. So questions. Okay, thank you very much, Paul. Thank you, Manav, for the presentation, the demo. We don't have questions yet from the audience, but personally, I would like to ask a bit about the mascot. If I can. I really like, sorry, what was the name again? Carmen. Carmen, the- Carmen, the Poco 2, all with K. Okay, amazing. So will it join the other big mascots of KDE as a- Exactly. We followed IK's lead. He, when he was making Kiyogi, he went to also to the Blender Artists Forum and us. And, wow, the people there, they are so, they are so kind and they're so talented. I mean, it was no question. After a day, we had like five different mascots in different styles. This is the one we like most, because it's really cute and funny. Yeah, it's a very nice mascot. Yeah, so I'm not seeing questions right now. So- This always happens to me. Everybody goes to the other room. Everybody is watching the cute sex talk by Lars. You should, this is, you should probably, when something rubbish is happening in the other room, not something good. First of all, there's never rubbish on Academy. No, that's true. Second of all, we do have viewers and they were enjoying the talk, I'm very sure. They're just probably not sure what to ask the tool. It's a new tool. I think there's a lot of technical things you could ask Manav, there's tons of technical things. Yeah, I think for the technical stuff, maybe Manav can hang out in the Academy tax room and in that case, so we can just chat about that or in the just Academy attendees general chat as well. Okay, thank you very much both of you for this presentation. Good luck with using Kato and upgrading it with new and new features. And thank you. Let's hope somebody saw this. Paul, I'm pretty sure people did. I'm pretty sure people did. Thank you very much. All right, bye-bye.