WEBVTT 00:00.000 --> 00:16.000 Okay, so, hello everybody, I'm, I'm Geron Poisson, I'm also known as Gophie on 00:16.000 --> 00:23.000 Internet, I'm an example of developer for more than 15 years, I'm a author and a 00:23.000 --> 00:28.000 little developer of the developer, which is all in one communication tool based on 00:28.000 --> 00:34.000 XMPP, I'm a member of the XMPP standard foundation for 10 years and I'm an 00:34.000 --> 00:42.000 electing member of the XMPP standard foundation council for this 2025 term, which is a 00:42.000 --> 00:47.000 team, which is taking the technical decision in the XMPP standard foundation. 00:47.000 --> 00:54.000 So, my goal today is to show you that XMPP is not only a great messaging protocol, 00:54.000 --> 01:00.000 it can also be used as a layer to make other tools, and it can simplify your 01:00.000 --> 01:05.000 life if you want to make a sketch with it. So, really quick, so Maria, for this XMPP, 01:05.000 --> 01:11.000 XMPP stands for extensive messaging and presents protocol, it was, as is 01:11.000 --> 01:18.000 name say, initially sought for a sort messaging, but since, thanks to the XMPP, 01:18.000 --> 01:25.000 it can do a lot of things nowadays. It was introduced in the late 90s, it's 20 01:25.000 --> 01:32.000 six years old this year, it's widely used, many people use it with a lot of 01:32.000 --> 01:38.000 annoying it, because it's, it's a base in zoom, it's original protocol in 01:38.000 --> 01:44.000 what's up, it's shows in a mini application, a mini video games, it's used a lot, 01:44.000 --> 01:50.000 and it has a good story of a lot of compatibility and protection, if you take 01:50.000 --> 01:55.000 XMPP client, which was met 15 years ago, and without being touch, it 01:55.000 --> 02:00.000 should watch, without modern feature, of course, but it should work with 02:00.000 --> 02:05.000 modern server. So, we will start with instant messaging use 02:05.000 --> 02:10.000 case. Let's imagine you want to make a script with a super useful 02:10.000 --> 02:16.000 box, which it's time to see for them in a chat, it had a reaction with a beer 02:16.000 --> 02:21.000 and a fan fries. So, you want this box to work, of course, with the most 02:21.000 --> 02:28.000 popular chat application out there, which is what the box, and to do that, you 02:28.000 --> 02:32.000 go on the website, and you have to check for the API, if you are lucky, 02:32.000 --> 02:37.000 it's a library, that is available for the programming language you want to use, 02:37.000 --> 02:40.000 then you have to learn the library to documentation, to some 02:40.000 --> 02:43.000 experimentation, see all you get the message, all you do 02:43.000 --> 02:47.000 reaction, etc., etc., and you do an application. Okay, now you have 02:47.000 --> 02:51.000 something working with a laptop, and you want to undo the second 02:51.000 --> 02:55.000 most popular application, the chat application there, which is 02:55.000 --> 02:59.000 a small signal. So, small signal, same thing, you go there, you 02:59.000 --> 03:03.000 change the IPI, there is no library, so you have to go with the IPI, 03:03.000 --> 03:07.000 you have to do the authentication, maybe on the hand-to-hand encryption, 03:07.000 --> 03:14.000 and learn experiment, etc., etc. So, when you did your 03:14.000 --> 03:17.000 second implementation, the first one, the pre-cat is 03:17.000 --> 03:21.000 IPI because this proprietary software, so it's bad, and so you have to 03:21.000 --> 03:25.000 start again from scratch and do a new implementation with a new 03:25.000 --> 03:28.000 application on the IPI. Then there is a sort of application, but 03:28.000 --> 03:32.000 I will stop there because more a fantasy is not realistic to 03:32.000 --> 03:35.000 have three major different and incompatible chat 03:35.000 --> 03:40.000 application you use by many people. So, what the solution to 03:40.000 --> 03:45.000 that, if you have guessed, you can use XMPP, with XMPP and 03:45.000 --> 03:48.000 the gateway, which translate to other protocols, you do 03:48.000 --> 03:52.000 the implementation only once, so you just have to do the 03:52.000 --> 03:57.000 execution and ending on incoming message. Once, and the gateway 03:57.000 --> 04:01.000 will handle the different protocols. What is interesting with that is 04:01.000 --> 04:04.000 if there is yet another application, it just needs to be 04:04.000 --> 04:07.000 implementing the gateway and do not have to change anything in 04:07.000 --> 04:10.000 your script, it will still be working. If there is a new version of the 04:10.000 --> 04:15.000 IPI, the gateway will not change that, and when it's on your 04:15.000 --> 04:20.000 example, if we will work out of the box without having to 04:20.000 --> 04:23.000 change anything from your site, and I have two good news. The 04:23.000 --> 04:27.000 first one is a separate gateway exists, it's called 04:27.000 --> 04:32.000 slidge, and it's ending most of the most popular chat 04:32.000 --> 04:36.000 application, and the second thing, it's not only working with 04:36.000 --> 04:40.000 insort messaging, you can do that with any kind of 04:40.000 --> 04:45.000 things. So, why would you use XMPP for building your 04:45.000 --> 04:48.000 two? I put a lot of text in the, I will be quick because 04:48.000 --> 04:50.000 you need to show that you can check after the text, if you 04:50.000 --> 04:54.000 want the slidge out available online. So, as we have seen, if you 04:54.000 --> 04:58.000 do the implementation, you only do it once. One use XMPP is 04:58.000 --> 05:03.000 coherent system, so you use always the same mechanism, 05:03.000 --> 05:07.000 the same way to use identity-fierce, the same way to 05:07.000 --> 05:12.000 you reuse exist in other specifications, etc. It's 05:12.000 --> 05:16.000 flexible, and XMPP does a lot for you. It's under already 05:16.000 --> 05:20.000 authentication, and to an encryption. The 05:20.000 --> 05:24.000 general tools you can use to my commands or to send 05:24.000 --> 05:28.000 and get the authentication, etc. And the gateway 05:28.000 --> 05:33.000 takes a burden of two. So, if you have the gateway for the 05:33.000 --> 05:37.000 protocol you want to use, you just have to concentrate on the 05:37.000 --> 05:41.000 feature you want to implement with XMPP. And in some case, 05:41.000 --> 05:45.000 you can even improve the feature you have, for instance, with 05:45.000 --> 05:51.000 Atom or RSS. The video of a newspaper, for instance, you 05:51.000 --> 05:55.000 only get you item when you pull the feed. But if there is 05:55.000 --> 05:59.000 an implementation, which is using the moving for instance, 05:59.000 --> 06:02.000 while using XMPP itself, and in this case, you can 06:02.000 --> 06:05.000 get notifications on whether it's new article without 06:05.000 --> 06:08.000 having to pull it by yourself. 06:08.000 --> 06:11.000 A quick call done all the XMPP software 06:11.000 --> 06:16.000 Foundation is organized. The XMPP is under 06:16.000 --> 06:20.000 standards, so XMPP is under Foundation is what 06:20.000 --> 06:23.000 handle the administrative things and the organization of 06:23.000 --> 06:27.000 specification. So you can, if you 06:27.000 --> 06:30.000 want some more of an XMPP because you want a client of 06:30.000 --> 06:33.000 standard of an instance, you cannot pay to be a member, and 06:33.000 --> 06:35.000 there is a vote, it's really rare that somebody is not 06:35.000 --> 06:40.000 accepted, it's really extreme case. But you don't have to 06:40.000 --> 06:43.000 be a member if you want to work with a proper 06:43.000 --> 06:45.000 specification and obviously to use it. 06:45.000 --> 06:49.000 There is a standard mailing list where we discuss, 06:49.000 --> 06:52.000 we have feedback about stuff proposed. 06:52.000 --> 06:54.000 That's really interesting because we have feedback from 06:54.000 --> 06:57.000 people with values, experience, software, 06:57.000 --> 07:00.000 developers, people working on video, people working on 07:00.000 --> 07:05.000 encryption, etc. And with all these eyes, we can have 07:05.000 --> 07:10.000 time good solution which is sustainable. 07:10.000 --> 07:12.000 There is a message before the report, we have today of 07:12.000 --> 07:16.000 XMPP Summit where we need face-to-face, and we can discuss 07:16.000 --> 07:19.000 many things and see the faces behind the software. 07:19.000 --> 07:22.000 The XSF board is administrative, the team which is 07:22.000 --> 07:25.000 taking administrative decision and the XSF 07:25.000 --> 07:28.000 Council is a team taking the technical decision. 07:28.000 --> 07:31.000 So a quick overview, if you have a specific 07:31.000 --> 07:34.000 assure and you can go to the XMPP Summit, just to be 07:34.000 --> 07:37.000 accepted, then there is a cycle while you go to 07:37.000 --> 07:39.000 standard mailing list, you have feedback, you have 07:39.000 --> 07:43.000 specific assure and you can go to the 07:43.000 --> 07:46.000 consider, etc. Until you have a stable and good 07:46.000 --> 07:48.000 specification. 07:48.000 --> 07:53.000 Why else, I show that it's to see that we 07:53.000 --> 07:56.000 maxing to avoid duplication and to keep the 07:57.000 --> 08:00.000 thing as long and sustainable as possible. So if we have a 08:00.000 --> 08:05.000 feature, we try to make it work for long, so if you 08:05.000 --> 08:11.000 base your software on it, you should know that it will 08:11.000 --> 08:13.000 work for a long time. 08:13.000 --> 08:16.000 Okay, there is a criticism that I often hear about 08:16.000 --> 08:20.000 XMPP, there is two main examples, XMPP 08:20.000 --> 08:24.000 extension protocol. It's a specific 08:24.000 --> 08:28.000 addition we do for every feature and it's it 08:28.000 --> 08:31.000 may be difficult for software to understand that. So 08:31.000 --> 08:33.000 first, that's wrong because we have a good 08:33.000 --> 08:35.000 discovery mechanism so we can know which 08:35.000 --> 08:39.000 feature support by other entities and it 08:39.000 --> 08:42.000 work and the XMPP are 08:42.000 --> 08:45.000 actually similar to the UNIX philosophy. So 08:45.000 --> 08:48.000 every example do one thing and try to do it 08:48.000 --> 08:53.000 well and we use other XMPP or other 08:53.000 --> 08:57.000 protocols. For instance, we have 08:57.000 --> 09:01.000 blogging in XMPP and we use Atom which is 09:01.000 --> 09:04.000 existing specification and instead of 09:04.000 --> 09:06.000 reinventing the wheel, we just use 09:06.000 --> 09:09.000 stuff which already exist. And so they play 09:09.000 --> 09:12.000 mostly together and what is also useful is 09:12.000 --> 09:16.000 specification is actually a documentation. 09:16.000 --> 09:18.000 If you want to make something and you don't know 09:18.000 --> 09:21.000 what where to start, you can just check 09:21.000 --> 09:25.000 the specification and you will see 09:25.000 --> 09:29.000 eight work and we have pre-shoes information 09:29.000 --> 09:31.000 that is always security consideration for that so 09:31.000 --> 09:32.000 you can use your phone to control your 09:32.000 --> 09:33.000 robot. 09:33.000 --> 09:37.000 Pop sub is publish subscribe. It's a feature 09:37.000 --> 09:39.000 when you can publish information 09:39.000 --> 09:41.000 in a list and you can 09:41.000 --> 09:43.000 it manage 09:43.000 --> 09:47.000 subscription, notification, it 09:47.000 --> 09:50.000 can manage management and there is 09:50.000 --> 09:53.000 a new feature of hierarchy where you can 09:53.000 --> 09:56.000 have a graph and any kind of things. 09:56.000 --> 09:58.000 And so it's useful for any 09:58.000 --> 10:01.000 thing. For many, many things. 10:01.000 --> 10:03.000 I don't need a notification 10:03.000 --> 10:06.000 to manage. For instance, I've made 10:06.000 --> 10:09.000 the ticket system to manage my 10:09.000 --> 10:12.000 bug and feature request for my project 10:12.000 --> 10:15.000 with the pop sub implementation. 10:15.000 --> 10:19.000 And if tomorrow I plan to make 10:19.000 --> 10:22.000 gateway to GitHub, I can have my 10:22.000 --> 10:24.000 any script that I use with that which will 10:24.000 --> 10:28.000 automatically work with 10:28.000 --> 10:32.000 issue on any GitHub project. 10:32.000 --> 10:35.000 Jingle is one you want to send a lot of 10:35.000 --> 10:37.000 data and you want to have a direct 10:37.000 --> 10:40.000 connection so it does a peer-to-peer 10:40.000 --> 10:42.000 connection whenever possible. If it's not 10:42.000 --> 10:45.000 good, there is assistance for 10:45.000 --> 10:47.000 the server. It's useful when you want 10:47.000 --> 10:48.000 to direct connection and you have a 10:48.000 --> 10:50.000 time network and you want to 10:50.000 --> 10:52.000 open a port or throw us a 10:52.000 --> 10:55.000 fire wall or stuff like that. 10:55.000 --> 10:58.000 And it's good for many things that 10:58.000 --> 11:00.000 need a lot of data and bond-wise and 11:00.000 --> 11:02.000 speed. If you want to bypass 11:02.000 --> 11:04.000 the server because you just need 11:04.000 --> 11:06.000 direct connection. 11:06.000 --> 11:09.000 And so we have seen with chat 11:09.000 --> 11:11.000 example, it's really useful to communicate 11:11.000 --> 11:13.000 with the server. 11:13.000 --> 11:15.000 And it's important to not get 11:15.000 --> 11:17.000 ways or not only for 11:17.000 --> 11:19.000 start messaging. You can have 11:19.000 --> 11:22.000 gateway for FTP for 11:22.000 --> 11:24.000 file sharing, you can have 11:24.000 --> 11:25.000 gateway for web dev, 11:25.000 --> 11:27.000 network for activity pub, 11:27.000 --> 11:29.000 blogging, etc. 11:29.000 --> 11:32.000 So it's what is generic. 11:32.000 --> 11:34.000 Some people say I don't like 11:34.000 --> 11:37.000 XMPP, so the most of you 11:37.000 --> 11:40.000 know how to make an engine to drive a car. 11:40.000 --> 11:42.000 Actually, you only need to make 11:42.000 --> 11:44.000 XMPP if you want to write a 11:44.000 --> 11:46.000 specification or to implement 11:46.000 --> 11:48.000 in a low-level 11:48.000 --> 11:51.000 thing like in a library or in 11:51.000 --> 11:53.000 a client in this case, you 11:53.000 --> 11:55.000 deal with XML. But if you want to 11:55.000 --> 11:57.000 use XMPP as a layer to other 11:57.000 --> 11:59.000 things, you can just choose 11:59.000 --> 12:01.000 software which already 12:01.000 --> 12:04.000 deals with XML for you. 12:04.000 --> 12:06.000 And there are a lot of 12:06.000 --> 12:08.000 software you can use. 12:08.000 --> 12:10.000 Flex XMPP, for instance, is 12:10.000 --> 12:13.000 popular Python module to deal with 12:13.000 --> 12:15.000 with XMPP. 12:15.000 --> 12:16.000 So if you want to make 12:16.000 --> 12:17.000 about comment, just 12:17.000 --> 12:19.000 offline of Python, you don't have 12:19.000 --> 12:21.000 to deal with XMPP. 12:21.000 --> 12:23.000 I've mentioned prosody because 12:23.000 --> 12:25.000 prosody is for 12:25.000 --> 12:26.000 some getaways. I've got 12:26.000 --> 12:28.000 way to entity. So if you want 12:28.000 --> 12:30.000 to work with IoT, 12:30.000 --> 12:32.000 it's translate entity to 12:32.000 --> 12:34.000 PAPSEB. So you just have to 12:34.000 --> 12:36.000 deal with it. 12:36.000 --> 12:38.000 Librarially, it's a common 12:38.000 --> 12:39.000 interface of 12:39.000 --> 12:41.000 the software I'm working on. 12:41.000 --> 12:44.000 It's a internal JSON 12:44.000 --> 12:45.000 representation of 12:45.000 --> 12:47.000 12, so if you want to work with 12:47.000 --> 12:49.000 Ticket, for instance, you 12:49.000 --> 12:50.000 will get a JSON of 12:50.000 --> 12:53.000 the metadata of your Ticket. 12:53.000 --> 12:55.000 So to conclude this talk, 12:55.000 --> 12:57.000 XMPP is great. It's 12:57.000 --> 12:59.000 not a lot for you. It's not only for 12:59.000 --> 13:01.000 PCA. 13:01.000 --> 13:05.000 But you don't manages to 13:05.000 --> 13:06.020 explain it as a 13:06.020 --> 13:08.000 chodzi, your chodzi, but 13:08.000 --> 13:10.000 chodzi, but, I have 13:10.000 --> 13:12.000 going to be using 13:12.000 --> 13:14.000 some kind of 13:14.000 --> 13:16.000 thing like this. 13:16.000 --> 13:17.000 You have this completely 13:17.000 --> 13:18.200 complicated 13:18.200 --> 13:19.560 let's say I want my 13:20.060 --> 13:21.500 future and coding. 13:21.500 --> 13:23.000 That transaction I've 13:23.000 --> 13:27.000 always had previously 13:27.000 --> 13:31.500 and what you can do, so it's something you should consider 13:31.500 --> 13:34.420 if you want to express or anything, not necessarily 13:34.420 --> 13:36.500 instant messaging, but for anything you want, 13:36.500 --> 13:39.700 it's something which is really useful to have. 13:39.700 --> 13:44.900 That's it, for this talk, you can check the project 13:44.900 --> 13:46.900 on this example of the chat room. 13:46.900 --> 13:50.000 I am on MasterDone, so you can follow me 13:50.000 --> 13:51.500 and we have any questions. 13:51.500 --> 13:54.100 This is the website of my project on my blog. 13:54.100 --> 13:56.900 Thank you very much and see you on any questions. 13:56.900 --> 13:57.900 Thank you. 13:57.900 --> 13:58.900 Thank you. 13:58.900 --> 14:08.900 So, I was using accent to be actually each other 14:08.900 --> 14:11.900 for quite a while with friends, professionally, 14:11.900 --> 14:13.900 and my professional, so we all had alternatives, 14:13.900 --> 14:16.900 but it was a great thing I laughed at. 14:16.900 --> 14:20.900 But with a real business customer's mind, 14:20.900 --> 14:22.900 I had big issues. 14:22.900 --> 14:24.900 Not with the product called Excel, 14:24.900 --> 14:28.900 not with the client. 14:28.900 --> 14:32.900 It's at the only, really, really good free 14:32.900 --> 14:33.900 Exhibity client. 14:33.900 --> 14:36.900 I have conversations for Android, 14:36.900 --> 14:37.900 iOS. 14:37.900 --> 14:38.900 There wasn't there. 14:38.900 --> 14:40.900 It was last time, I put it on the 60s, 14:40.900 --> 14:45.900 17 when I had evaluate for iOS. 14:45.900 --> 14:47.900 There was not much around. 14:47.900 --> 14:52.900 And the best thing was the cheats account. 14:52.900 --> 14:54.900 There was one of the models, 14:54.900 --> 14:57.900 and there was two different standards for 14:57.900 --> 15:00.900 this master track knife, the old and the new thing, I guess. 15:00.900 --> 15:01.900 I ran. 15:01.900 --> 15:04.900 Yes, it's man, man for the archive. 15:04.900 --> 15:05.900 Yeah, yeah. 15:05.900 --> 15:08.900 The protocol itself is fine. 15:08.900 --> 15:13.900 But it's very hard to implement it as a customer 15:13.900 --> 15:21.900 because if they want to have mobile, web-based, 15:21.900 --> 15:25.900 client, and on desktop, you're... 15:25.900 --> 15:27.900 Yes, you're right, you're right. 15:27.900 --> 15:29.900 There are different projects we try to exist. 15:29.900 --> 15:31.900 But you're on the Instantness of Incares. 15:31.900 --> 15:33.900 My talk is to use it in more general case, 15:33.900 --> 15:36.900 but if you stick with the Instantness of Incares, 15:36.900 --> 15:38.900 we have software like Snicket, 15:38.900 --> 15:43.900 which try to do software for every major platform 15:43.900 --> 15:47.900 with a brand name, Unique, brand name, everywhere. 15:47.900 --> 15:50.900 It's working quite well. 15:50.900 --> 15:53.900 There is moving, which is a web client, 15:53.900 --> 15:56.900 but it's using... 15:56.900 --> 15:59.900 Not sure, I think it's still working on Android, 15:59.900 --> 16:02.900 and iOS 2, but I'm not sure, I need to be checked. 16:02.900 --> 16:05.900 I think you're real time-lox, 16:05.900 --> 16:06.900 and you're tomorrow. 16:06.900 --> 16:07.900 Yes. 16:07.900 --> 16:08.900 Yeah. 16:08.900 --> 16:09.900 It's behind me. 16:09.900 --> 16:10.900 Mm-hmm. 16:10.900 --> 16:11.900 Which is... 16:11.900 --> 16:12.900 I guess sweet. 16:12.900 --> 16:14.900 Oh, he writes in server. 16:14.900 --> 16:16.900 They took conversations and branded it. 16:16.900 --> 16:18.900 And I think there's not a client brand, which as well. 16:19.900 --> 16:21.900 It's good to hear, 16:21.900 --> 16:22.900 because I have this thing, 16:22.900 --> 16:24.900 to work with the Instantness of Incares. 16:24.900 --> 16:25.900 It's good to hear, 16:25.900 --> 16:26.900 because I have this thing, 16:26.900 --> 16:28.900 to work with the Instantness of Incares. 16:28.900 --> 16:29.900 It was the disaster. 16:29.900 --> 16:30.900 Not XMP screen. 16:30.900 --> 16:31.900 It's stolen. 16:31.900 --> 16:32.900 Yeah. 16:32.900 --> 16:33.900 Yeah. 16:33.900 --> 16:34.900 I get that. 16:34.900 --> 16:37.900 Because it's not able to hire a web developer 16:37.900 --> 16:39.900 each other's screen. 16:39.900 --> 16:40.900 Mm-hmm. 16:40.900 --> 16:41.900 Yeah. 16:41.900 --> 16:44.900 I'm seeing, I've improvised a lot of sources. 16:44.900 --> 16:45.900 There is Dinos. 16:45.900 --> 16:48.900 There is a gadget, which I improvised a UI. 16:48.900 --> 16:51.900 I'm working also on a new desktop content. 16:51.900 --> 16:54.900 IOS, C-Scene, and Monal, 16:54.900 --> 16:56.900 I've improvised a lot of sources. 16:56.900 --> 16:57.900 I'm not using iOS, 16:57.900 --> 17:00.900 but I know that it's very difficult platform to work with. 17:00.900 --> 17:01.900 I think. 17:01.900 --> 17:02.900 I think. 17:02.900 --> 17:03.900 Especially for notification, 17:03.900 --> 17:05.900 but Singapore has improvised a lot 17:05.900 --> 17:06.900 of the last few years, 17:06.900 --> 17:09.900 and you'd check the modern state of XMPP. 17:09.900 --> 17:11.900 It's not like it was 10 years ago. 17:11.900 --> 17:13.900 It's really more modern. 17:13.900 --> 17:15.900 That's still for you issue. 17:15.900 --> 17:17.900 But everywhere I issue anyways.