 Yeah, I'm Daniel. Thank you all for coming. I'm going to tell you a little bit about further instant messaging with Java XMPP Well, that's a pretty shitty situation we have We have dozens of incompatible instant messaging apps that all do pretty much the same thing But I can't it's a change them with each other And depending on where you live you're basically forced to Use at least one of them. So depending on your region you are either used to Force to use WhatsApp like we in Europe or in China. I guess that's we chat and Depending on what circles of friends here in your even can't force to use more than one of them for example when you're traveling and The situation wasn't really any better like 15 years ago We had other proprietary apps that just got replaced by a new set and Well, that kind of makes you wonder wouldn't it be nice if there was a standardized protocol that all those are instant messaging apps could use? Well, actually there is and has been for 18 years and it's called XMPP which is short-term for the extensible messaging and presence protocol and That's actually an ITF standard and But but the ITF standard is only the core protocol and like the name suggests is extensible and those extensions are Published by the XMPP standards foundation Yeah, so my my slides actually taught called a Jabba XMPP. So what's the difference between our Jabba and XMPP and So XMPP is the protocol and Jabba is the ecosystem of federated instant messaging Service so you can kind of like compare that to the web and HTTP Where HTTP is the protocol and the web is these ecosystem of well, well, basically websites you can access Or you can make the same analogy with email and SMTP SMTP is the protocol and email see network of federated Service and see comparisons into email don't end there Users in Jabba identified by username at domain and usually users on one domain can talk to users on another domain So XMPP was actually a fairly widely deployed at some time on most famously Google use it in their product called GTalk and Google even participated in advancing The standard and created their own protocol extensions However, a lot of them have have abandoned the XMPP services and switch to something else Most recently a slack has announced that they are going to shut down their XMPP gateway in month or so So what happened? if you can't believe them the most common reasons they gave is that XMPP doesn't really fit their needs and Lex features and If you look at the situation from pre 2015, this was Actually kind of true. We were in a situation Where the protocol hasn't really managed to adapt to the changing requirements So I have to remember the core protocol was developed 18 years ago and that time we Didn't really have mobile devices. We didn't really Had to worry about battery constraints People weren't really using multiple devices at the same time or People weren't switching between Wi-Fi and 3g networks and The core protocol itself can't handle that there well, but well thankfully it's an extensible protocol and you could in theory create extensions to solve those problems and When I got involved with XMPP in 2014 we actually had Extensions to solve most of those problems, but they weren't very widely implemented and through them or from a pure user perspective a lot of the XMPP clients had a very outdated or Yeah, I just didn't really feel they're modern Well fast forward to 2018 to now There is a next MPP client called conversations which basically on Fields and acts and behaves like any or instant messaging app You can send any kind of attachment like you can Send short videos. You can send voice messages. You can attach pictures As you can see in the screenshot down there it has typing notifications It has read markers even in group chats and for messages that you didn't send yourself for example in What's up? You only see who has read the message from messages to send yourself and in conversations you can See that or Or if other people has have read messages other people wrote Yeah, if you're into that it Also has end-to-end encryption which even works between multiple devices and Yeah, if you're not into that you can simply turn it off But it's enabled by default because that's the safe option basically But if you for some reason don't want to use it, then it's just one click away Well Remember when I said it's like a providing dependent protocol and you can Pick your own server that also means you have to pick your own server and this can be or hurdle for new cameras because they have to a download the app and then figure out what server they want to use and And That you can use it with whatever server you want But it are also allows you to create an account on the quote-unquote official server and then it's pretty easy that's that's the welcome screen and We need to click create account it only asks you for a username and that's basically it and then on the bottom It tells you what your job ID what your identifier is going to be But you don't have to do anything else that will automatically create a randomized password for you And you just have to click next and it will figure everything else That's basically all to say That Yeah, conversations is basically as good or bad as anything else this might be lacking a couple of features That's some clients have but it has other features that some other instant messaging solutions are lacking So you can actually build a modern Instant messaging client based on XMPP But it requires a compliant server as I would say Because remember a lot of the or a modern extensions came to life in the last Five years or so. So if you are using a server that hasn't been updated in those five years then you're better better of luck and your Experience will be worse conversations will still be able to connect but a lot of the modern stuff are like fast switches between Wi-Fi and 3d or Those batteries optimizations won't work very well This is especially problematic because a lot of the arm servers in those federated ecosystem are run by volunteers and volunteers kind of tend to set it up once and then forget about it or lose interest and Then yeah, you have these This problem of fragmented ecosystem Where? You have outdated servers that don't support those latest extensions and are a Good solution to that or at least part of the solution is to make the problem visible So there are things like the compliance tester You can find it if you Google for XMPP compliance tester or go to conversations I am slash compliance and that can connect to a server and check if that server or supports all the latest extensions and Then those three results can be rendered in a table where green says a server supports something and red means a server doesn't and Grace because it tests outdated. We don't have that information Anyway, this Serves two functions and that in that it helps new cameras to find a bigger good server. That's up to the all latest developments and for for server operators to test their own server and figure out if their server is Compatible or compliant as I would call it So Why did I do all that? Well from a user perspective I want to provide Provider independent Instant messaging, so you don't have to rely on these monopolies and are not arm Yeah, I mean with what's up You can't have this problem say if they change something then you are Stuck with them and you can't do anything about it and in a ferrated ecosystem We have a free choice of a server and client then when a client develops into a direction You don't like to just pick a different client or if they are open source like fork it and Go a different direction Same as the with the providers if a provider shuts down says their services or I don't know Implement the new privacy policy and you don't like that you can pick a different provider But still use your favorite client with that But I'm also wanted to demonstrate a different thing and Zedas I wanted to show other developers That XMPP is still a valuable solution and you can Create new things based on an already established protocol. I mean if you look at a Lot of the instant messaging solutions out there, especially at some of the open source solutions out there There's virtually no reason Why they wouldn't be able to use XMPP so if a huge development team and are Developing a new Shed client Why would they create a new protocol? They could just as well use XMPP and like especially in CD developer community XMPP for a very long time was kind of I know had a better reputation and Yeah part of my goal was to change such reputation and to show Developers you basically that yeah XMPP is still a pretty good protocol Yeah, how to get started with our XMPP on well from a user perspective You first need a client so on Android are that can be conversations on Windows and Linux the most advanced client is Gadget and for iOS yes chat secure I have to Give the note that Some of those clients on other platforms that are not a conversation that are not the client I just showed you might not be as polished as Conversations, but they still kind of gets a job done and yeah those are the clients Recommend to newcomers, but of course there are countless of other clients. So depending on what platform you're using if you're until command line tools are there will most definitely be a client that kind of Assutes your needs and Yeah for developers on their XMPP libraries in almost any Stack or platform Didn't want to list them all but if you're Looking for an XMPP library in a certain language you can or ask me later and I can probably give you a recommendation and yeah You also need a server and there are a couple of pretty good Servers are for example prosody over just written in Lua, which is if you want to do a development on the server side as well That's a very low entrance barrier because Lua is a pretty easy Programming language But if you want something pretty mature and don't want to do any Server side development, I recommend eJob ID because that's really stable and that's what we run on our Conversations.im XMPP server as well. All right, that's it and thank you for attention and as any questions I'll get any cons of using Cons or clients? As any cons, okay, um Well, I'd say you have If you want to use it really seriously you have to gain a lot of knowledge. It's not a very Accessible or easy protocol I mean getting from like logging in and sending your first message is easy But then there are some kind of cave cuts if you want to make it reliable on mobile or if you want a group messages To work then yeah, this is it's a steep learning curve You have to learn a lot of things but my argument is that or even though it's a steep learning curve It's in the end. It's still easier than coming up with your entirely new protocol for it. Yeah Okay, another question Okay, the question was how does it compare to signal or signal protocol Um That kind of depends on what you mean by the signal protocol if you're talking about the encryption then Coincidentally, if you use the exactly the same entrant encryption Like if you go a few slides back are that's the cute omimo and omimo as the name of the entrant encryption in In Jabba and it uses the same crypto primitives as signal So from a security standpoint, it's kind of equal and we are basically gaining from their work because we are At least in conversations are using the exact same labor library But if you're not talking about entrant encryption, but like speaking about signal as a messenger, then the most important difference is that That it's federated that you can Like interchange your client. I mean if if signal for example Changes to a pink color scheme tomorrow You could fork the app because it's open source, but the company behind signal won't allow you to connect to their servers with your forked app So Yeah The server of signals open source as well and then you can set up your own server But then you're basically the only user on that server and couldn't be or couldn't communicate with anyone else Are you talking from a developer from a user perspective If you're actually talking about the communication between the client and the server between Like the signal client has a signal server. I don't actually know a lot about that protocol so I Don't have that information But I don't know if anyone else besides signal using that protocol I don't even know if it's like properly documented or anything So I'm not gonna say it's a bad protocol or anything But if you're using XMPP there will definitely be more libraries and more resources online that gonna Help you get started with that protocol So the question was if there's a way to get appear to appear communication Going across clients Some things are like a large file transfers are already appear to appear then XMPP has a built-in like SIP like signaling mechanism where our two Clients can basically say hey, I'm gonna listen on that IP with that port and you can send me a file or establish a video call to that IP or Communication, but that's not like The normal protocol you wouldn't use peer-to-peer to send text messages, but only for like larger files or Like you pretty inefficient if you redirect that over the server Yeah, everything goes over your server like your own home server was in your domain and then it goes to the recipient server and from there to The recipient's clients. It's not a peer-to-peer protocol. There are other Clients or systems who do that better than XMPP? Okay No more questions. So thank you again for your attention