 All right, so next we got Jerome. He's going to tell us what's beyond messaging on XMPP. Take it away Hi everybody and first of all, thank you for being Present at this time. I know it's difficult on Sunday. So thank you. My name is Jerome Poisson. I'm working during day on The free software for journalists in a Czech company and by night I become XMPP developer And I work on XMPP client So I have we have 20 minutes together and I will try to convince you that XMPP is not only an instant messaging protocol And it can do a really large panel of things Let's start with some common criticism XMPP I've seen some kind of XMPP bashing lastly like during the last few months or years and This Argument are coming quite often so XMPP supposed to be to hold or it's bad because it's XML or it's supposed to be not web technology friendly and It's supposed to be too extensible So let's start with the first one which I don't really understand but people think that something when it's old We have to throw it out Actually, it's quite the opposite in my opinion XMPP celebrate this year is 20 20th birthday and it's still here. It's still working It's stable. So it's actually more Good sign and it means that it's it's rock solid and you can use it. I have written some technology which we would have to throw before XMPP because are too old So I guess if we get rid of this technology, we will have some trouble without HTTP or TCP IP Okay, maybe for some of them it will be good JavaScript for instance Okay, the second one is XMPP is bad because it's XML and XML is not jyzone and jyzone is really so great so I Took this example directly for the RFC standard and as you can see there is no much useless data actually and It's quite usable I'm working with it not every day and I can tell you it's No problem to work with it Today we have really good XML parser. I'm using Python as I said XML, which is really performant Also, we have some encryption Extensions so on the wire is not big So that's good and most of all in XML There is something that doesn't exist in namespace in a jyzone and which is really great It's the namespace namespaces and it's used actually for the extensibility and it's really a major feature of XML XMPP is supposed to be not web technology friendly. This is absolutely false the first proof of that is that there are web technologies which are Explained in the standard for instance, there is a RFC which explains how to use XMPP with Web sockets there is some extension which explain how to use web RTC with XMPP is done by some clients And We have some pure browser pure JavaScript module without Even needing to have a server which are working great We are some web only client convert or GSXA and even if you use the backend the backend will do most of the XML things and Will communicate with JSON for instance a web socket with the front end so it's XMPP is absolutely web technology friendly and there is no issue to use it with web technology Okay, the last one which is actually the main subject of of today is XMPP is supposed to be to extensible actually XMPP is Managing different use cases So there's chat messaging but there's also blogging file sharing video and this is very different field And that's the reason why we need extency extensibility But we have a really good discovery mechanism if you talk to a server or to another client We can detect the feature which has which are only owned lead by the other entity and adapt to the feature We We have seen that it has been useful also for evolution 20 years ago. Nobody will imagine that today everybody will use XMPP on a mobile on a mobile phone with new constraints on battery life on unstable network and XMPP has shown that it has been able to be used and it's working really well nowadays on Mobiles and we have a really large ecosystem which can work together. There are a lot of XMPP clients which are working together and Also, the community has been done some move to try also to mitigate the issue of different features Every year there is a compliance suite like if you want today to create a new XMPP client You have a list of the most important XEP to XEP is for XMPP extension protocol is an extension of XMPP so the list of major ZEP you have to Implement to have a modern modern client and also lastly we have seen a compliant Tester for server you can run it on your server You will have a mark and like the major XEP that you have or you are missing and the step to fix that Okay But the extensibility of XMPP is this major strain and actually it's the reason why I am personally using XMPP So the idea is like X ZEP so X extension is doing one thing and is doing it well So if it's ring some bell, it's the same thing as a unique technology as a unique philosophy And so far it has prompt to be quite a good philosophy So once there is a new extension, somebody is proposing it and we are discussing it On a standard mailing list and it's public and we have different people with different background server video chat, etc with pertinent remarks and We hopefully are trying to select the best technical option each time for our new feature So it's actually WONK to see XMPP as a whole thing and just an instant messaging thing But it's actually a collection of different technology which are coherent Which are collaborating and working together gracefully. So this is really the way you should see XMPP It's not something like unique, but it's really a mix of different things collaborating So let's have a look at two of the major XMPP extension. The first one is jingle Jingle is known for being used by for video conferencing. It's what is behind jigsimit for instance if you know it But it's actually a way to establish a stream session When you have two devices, it's to create a stream and if it's possible It will be peer-to-peer if it's not possible. You will find another way to create the stream It's also a way to manage the stream. So if you are On a phone and your connection you'll change your connection for Wi-Fi to 3G or 4G Jingle allow you to adapt it and You have also other things like encryption like you can have you can say I want this stream to be encrypted and And yeah, it will manage this. So it is used so of course for video, but also for file sharing It's using games if you want to communicate between your client and server, etc The other one is Pepsub. Pepsub is short for publish subscribe It's a way actually to send data to a service the service will Will manage it and if you can subscribe to this service and this means that you will be notified if something change For instance the data has been modified deleted or a new data is present So you will get notified for that. So you use the term nodes and items if you compare to It's kind of the database of XMPP. So if you compare to SQL Not will be the table and items will be the role if you compare to something like MongoDB Not will be the collection and items will be the document. So it's actually a kind of decentralized database Based on XMPP. It's an observer pattern There is funding of permission system So you can you have a role and depending on the role, you know if you can read or write On a on a node and that's really helpful and it's also extensible So if you want to do search for instance, you can use another extension Which is called message achieve management and you can do full-text search for instance or search We use it on blogging to search for tags for instance. So yes, that's also something really useful So some example of how you can use XMPP So the first one is file sharing when I'm talking about file sharing I'm not talking about just sending a file on on a chat room, but about sharing like a world directory to some devices so Imagine that you you are with with your phone and You take pictures during the day and or a video and you go back home and you want to transfer this video to your desk Computer you have nothing to do XMPP will handle everything you have one client on the desktop one on the mobile phone And you can access your picture downloaded if you need or the video The other way it would be it will be peer-to-peer if because you are in your local Area network, so it will establish a peer-to-peer connection and your data will not go to like server on another continent like it will be the case for Dropbox for instance It will go directly from one device to the other device The other way to use it is using components In this case it's something similar to owner next-cloud or dropbox like you put you push your files on a on a service and it will be available for other people or other devices and Yes, that's new extension about using omemone encryption with jingle So in this case you will have and to an encryption in addition to what I have said An extension of file sharing is using it for photo album So we still use the base that's the point of XMPP. We always reuse Technology existing technology. We try to not reinvent the wheel. So for photo album It's a specific specialization of file sharing and we just use a fighter saying, okay I just want video or just want images We use another extension which manage some nails. So instead of downloading a wall several gigabytes a megabyte image You will have a small small one and We are using blocking that we see just after to see to use commands so this is screenshots of Photo album under by XMPP with some commands So because it's XMPP. It's decentralized. It's federating and It's neat About blogging It's a combination of another standard which is atom. I guess you know it. It's something similar to RSS it's used to describe a blog and Yes, because we try also to use other Standard ones that exist and we just combine that with a pub sub you can see it see it sorry on the XEP 0277 and Yeah, it's quite easy. It's quite functional. There are two clients nowadays doing it like move him and Salute to other one on which I'm working So this is a screenshot of blogging once again decentralized and federating Forum is another extension of blogging when you use pub sub to Have a hierarchy The way you and after you go so what you want and after you go inside the forum and you set Your nod in a way that anybody can Can publish inside and This is a screenshot of forum made with XMPP Okay, another one is ticket ticket is actually just Associating another extension, which is called data form, which is a way to putting data type on Your item for instance you're saying this field is a title for it's a string this field is a priority Priority it's an int this field is the dates, etc. And you use a one ticket One item per ticket. So this is a screenshot of our Ticket funding. So we have bad report and future request. It's because for some Ideological reason we are not on github. So We do this and it's once again decentralized and federating and I'm not sure if there is any other but decentralized ticket handler at the moment and Also, the system is really flexible. So it could be used for other things like your shopping list for instance You just changes the fields you want to use Or To-do list it could be used for to lose actually any kind of list and If you take ticket and you just extend it a little bit you can have much request So what is my request? It's just a ticket where you have one of the field which is used to have a blob which will be the All the patch you want to merge to a project. This is a screenshot a screenshot of Merge weaker of Merge request done by XMPP. So we have the basis of a decentralized code for Made on XMPP, which I think it's quite cool Another thing is event Event is the same thing as in meter for Facebook. You just have an image a date Some information and people can go and use pubs up again and say I'm welcome. I will not come maybe I will come and Yeah, that's it. You know what it is. So this is a screenshot of events the design is not wonderful, but yeah, you see you have the list of Guest and and the image Okay, this is the last one so we are not talking about jingle and pubs up anymore But just two other quite cool extension you can think you can do with XMPP first one is HTTP authentication The idea there is you go on a website. You don't want to create an account. You just enter your job ID, which is your identity identifier On your phone you will get Message in this website want to authenticate with a code to check. Yes. No, and that's it. So that's quite quite easy It starts to be handled by a couple of clients. So If you make a website, it would be nice to use it. The other one is universal remote control The idea is we have another extension which is managing generic commands a Kind of XMLRPC or something similar, but based on XMPP and we just associate this with MP which is a free desktop specification which is done to Control a media player like VLC and PV or etc So if you have a mobile you can just get on your coach and control your media player Thanks to XMPP something a bit similar to KD Connect That's it for the talk now. We have some room if you have any question some useful links. So the first one is a List of official extension So if you want to look deeper into the one I've mentioned or other one you can check there You can find the links to the libraries I've mentioned In this there. This is a link for our project. So this is official website some demo I kind of add the bad idea to apply to Update just before first day. So it's kind of broken right now But in couple of days, it should be alright. And this is my personal blog. I'm talking a lot about experimentation we are doing with XMPP and Take some some some some technical background and explaining how we do also if Bionations you are living in Germany or around or able to move in March We will have a sprint in Berlin and even if you are absolutely new to XMPP you are more than welcome and If you want to learn a bit more about it or to try to do something with that It's a good occasion to do that. So, thank you for attending and if you have any question We have time for some questions if anybody has a question I'll pass on the mic anybody With the XMPP so as a background I need some more quit XMPP now. I'm more would see but that was long time ago for the Mobile apps are there some Optimization to save the library because you presented some Extensions here, but you know in the way of like this push notification Mechanism that you can use or you know some optimization for the mobile words to put it Yes, we have different extension for mobile the first one is push because On some platform like iOS you have to go through the Apple push mechanism So it's way with privacy in mind. So you don't send the message. You just say there is something new Please wake up my client and I will under the we are soft We have also Something which is called stream management It's a way to say if you are in a subway for instance your connection is getting bad It and it will try to reopen without doing the wall connection things we have Client state indication when you say when you don't see your front-end This app is sleeping. So just send me really major messages and beside that. I don't want to waste the boundaries And so yes, we have these kind of things and it's really efficient. If you try some mobile client It's really efficient nowadays Okay, so thank you for attending