 Okay, so hello everybody. I'm going to start a few minutes earlier because then I can Have a few minutes extra to talk Yeah, so it recorded me now Zipping up my fly and every or buttoning my fly also and everything in any case my slides are It's a website and it doesn't seem to be rendering very nicely on 460 So I'm sorry if if it doesn't The slides don't really appear nicely if everything if it flows over they're not that important the slides. So In any case, let's start. So thank you everybody for coming My name is JC and I'm gonna talk about converse or converse JS, which is a XMPP chat client written in JavaScript and two years ago Was the first time I talked about this project at Fosdem where I went a little bit into technical details about XMPP how it works and Converse as well talking about what plans we have for the future what we're gonna do and now two years later quite a lot has happened and I would like to share with you what we've done what we've achieved in the community and in the project and Excuse me. I would also like to Share a vision with you To also kind of explain why we're working on this project and I think this this vision is not My vision. It's a vision that many people in this room share that many people who have been Giving talks here share and that people have had before us as well. And I think this vision is all the more pertinent today because of the state of instant messaging that we have today and We have dozens of chat applications that don't interoperate We have proprietary silos and walled gardens with locked-in users who have their communications and metadata recorded monetized and Locked in as well So How useful would email have been if you could only send an email from a gmail account to another gmail account or From a proton mail account to a proton mail account in a situation like that usually what happens is Some player in the market becomes entrenched The network effect takes hold and they dominate and they push out everybody else and they make it impossible Or almost impossible for people to compete or to provide alternative solutions And so proton mail for example came up recently as far as I know and they have you can use them and they are very They're usable because you can send an email to anybody in the network or you can host your own email address Sorry email yeah email address an email server and still communicate to other people so this interoperability between providers via the protocol is called federation and There's no technical reason why we cannot have federation of chat apps or with instant messaging apps XNPP, which is this year 20 years old was built with federation in mind from the start and It supports federation and it's an ITF standard so the Many of the instant messaging apps that are built today don't use XNPP and they don't federate But generally this is not because of technical reasons is Mostly because you won't get a billion dollar evaluation for your chat app company if you Build it on standards federate with other people and allow other people the freedom to build their own front ends and to Interoperate with you on a standard spaces so Us we as free software hackers Are we gonna have to build these things ourselves and Email as well as me is a very good example because the companies that nowadays provide email and federate They don't do this because they love federation. They would love to be able to lock everything down and keep it within their Silo and this is many companies also doing this They're trying their best to kind of break email break the federation and with With instant messaging my vision therefore and the vision that many others share is of Federated secure end-to-end encrypted communication that supports the four freedoms of free software and that Enables you as user the freedom to Use it as you see fit share it use the code see the code share the code modify the code so Converse chase is the project that I'm working on and this is my way of Participating in the vision, but it's not the only way and there are also other people are doing things many of the people Here or who are talking here are sharing in this vision and participating in their way It's a web chat. So it's available at converse chairs org Where you can try it out? There's a demo is there and it's basically usable on its own But it can also be integrated into a website. That's how it was originally Came about was built for our web developer and this was built for a client of ours and eventually it was Extracted out and made its own project. It has a plug-in architecture. So you can Extend its functionality by writing plugins, but you can also reduce its functionality by removing plugins because the entire Codebase is is bolt out of plugins modularized modularized except for the single common core it has a hundred and thirty one contributors to date including translators and most of these people Join the community and made their first contributions in the last year or maybe last two years It has different view modes and this Is best described with a with an image so this is a screenshot of the let's say first view mode because this is the original view mode and It's called overlay The overlaid view mode because you have chats Overlaid on top of an existing website. So This is a relatively common UX paradigm that you see with G-Talk at least in the old days LinkedIn still has a lots of support chats nowadays and still have this kind of thing where you have little chats you can minimize them as they're in the bottom close them and The idea being that behind it you can still have a website with a document or some other stuff there Then there's the Fullscreen view mode where it's basically more used as a standalone chat application in its own right necessarily integrating it into a website and This many people are familiar with this at least this kind of UX paradigm of like a full screen chat app which was made especially popular by Slack and very similar chat apps nowadays like that and This was promised two years ago at first them when I talked about and saying we're working on this and now it's available and Can be used especially for Team chat kind of applications and group collaboration and then another view mode is embedded where you can Take a specific conversation chat and embedded into an existing web page You just basically provided the DOM element some kind of Like an ID for example, and it will inject the chat app inside there And these view modes are just configuration. So it's all the same code It's not different code that you're deploying to have a different view mode It's just a configuration setting that you change and at the moment if you change the configuration setting you have to reload the page to have the new view mode, but Probably in the future we'll be able to kind of change on the fly between the different view modes obviously Changing from full screen. We have multiple chats open to this. We have only one chat open Gets a bit tricky, but could be doable. I mean it might confuse people if you do that So you have to kind of figure out whether it makes sense in your case to do Contact switching on the fly but switching between the overlay and the full screen could make sense so Why this project when there are so many other chat apps and there are also other ones that federate and there are also Yeah desktop apps and mobile apps Well, it's free mostly about the combination of all these things. It's free software So it provides you with the free the the four freedoms To use study share and improve the code It's standard space because it's based on XMPP, which is an IETF standard It supports federation due to it being an XMPP client It's customizable due to it being JavaScript CSS and HTML, but also because having a plug-in architecture and Lots of configuration settings and It's integratable because you can integrate it into existing web applications and it's built with that in mind and I'm not aware of any other Web chat clients that actually Have all of these things bring bring all of this together. So That same year when I gave the first time talk in 2017 the end of the year. I wrote a tweet where I was Saying that I'm gonna spend Three months working only on this project. I wanted to I was frustrated because I felt like there's a lot of potential there but I was being Held back in the sense by not having enough time to spend on it. And so I kind of made a decision that I want to really prioritize spending time on this and I first initially said three months and they see what happens from that but actually then it turned out into a whole year and the whole year of 2018 I was working on this project and I I Did do I added need to Also do paid work, but I generally then declined paid work that wasn't related to converse chairs And all the almost all the paid work that I did was either helping people integrate it customize it extended ad features I also asked for Donations which was a weird experience and I had mixed emotions about it, but In the in hindsight it was a good thing I think and it donations have steadily grown over time and they do definitely help keeping the project like supporting the project and I was able to Live the whole year feed a family of three with one income just working on this project and I think it was a success and there was Also other results due to that We were able to make very regular releases that were not always possible when I was working full-time on other stuff we Added lots of features not just me, but other people in the community contributed as well many new deployments Daily is gonna talk about after me about using converse in a project that he's working on and It's been deployed at mailbox.org which is in German email client and being integrated in all kinds of environments Got new sponsors and we had really good growth in the community with contributions people hanging out in the chat rooms and just people using it setting up little instances for their friends and family and I also see this Project I see very much as part of an ecosystem. I'm not trying to Dominate or anything like this is just a web chat and there's other people working on Android and iOS and desktop and all kinds of stuff to command line interfaces and so on and this is just like a piece of the puzzle So some of the features that were added We added in this is all in the last year And not all of it me The full screen view mode was finished. So specifically used for team chat kind of applications Updated the UI this that work was actually quite a lot and it was sponsored by the wiki suite project omimo encryption Single and private chats. So we have now into an encryption for group chats and for private chats file sharing message receipts message corrections theming support Spoiler messages on Macedon. They called content warnings and We have a headless build and the headless build kind of comes back to the topic of Customizability and integratability The headless build is basically we split the project out to all the non UI code and it like we split the UI code off So that you can create a bold of the chat app that has all the all the functionality Without the UI and it exposes an API and On top of that you can basically build your own UI in your own library your own JavaScript framework or whatever maybe react native or something even and You don't have to use the UI as it is So if you don't like the UI bold your own if you don't like the colors make your own not everybody likes the orange But I like it. It's a happy friendly color We also had not particularly related to converse, but I kind of feel like I want to mention it and Max is also going to talk about that at four o'clock. I think London and culture I put on the list Because they were kind of sprints, but we weren't really officially yet. They weren't the official but put it that way but Some of us got together in London specifically wiki sweet people But also XMP people and we work together and we were like way. This is really cool. We enjoy it We should do this again sometime and then some other people of us came together at Karlsruhe at a CCC event And we again were like hacking on XMP P and every time I'm there I'm working on a converse and we're like Yeah, we really like this we should really kind of do this more often and then max basically at Cambridge he really organized the first Proper official XMP sprint well official. It's nothing official about it except that it was really well organized and From there on it kind of took off last one of some Brussels just last week and this was also a really interesting one because we Got all kinds of client developers together and Wanted to server developers to talk about creating a unified experience across different projects because this is one of the things that people complain about with XMP P that different terminology and Concepts of the protocol are exposed in different ways in different clients. So we want to create something where There's a bit more conformity with how the chat applications behave so that people are not Unpleasantly surprised when they switch from one Device to another device or one app to another app. Where are we now? so It's a funny thing with open-source projects where or free product free software projects where people look at it And then they're like, okay, it's rough around the edges or this thing is missing or that thing is missing and then they kind of just They don't they they dismiss it and then two years later They might still be saying like oh, yeah, you know, it doesn't have that doesn't have that and actually in those two years a lot has happened and these Software projects there or communities. They are like a living Entity that's all the time growing and evolving as long as at least people put energy into it And it's the same with XMP P and it's the same of converse like XMP P is extensible So constantly people are adding to the protocol extending it to do things that people are nowadays more and more Demanding or desiring from chat applications and it's the same with converse It's used commercially Very often integrated into people's websites and for various different use cases Lots of people also just hosted themselves for their friends and families or for their communities There's commercial demand. I mean last year. I was working only in this project and I still regularly get emails for people asking for help and at the moment There's more commercial demand for development on this project then There are developers available to actually meet the demand. So that's actually a good thing shows also that there's growth and Therefore I would like to extend a call to action. I've Explained the vision that many of us have I'm sure many of you agree if you're interested You don't have to participate in this project. There's a many others, but since I'm talking about this one I might as well ask If you like this kind of stuff Join a sprint the next sprint is in Berlin somewhere in April. Sorry, I don't know exactly when 29th of March. Thank you And there's gonna be one probably in in Paris maybe some time And I will probably organize one in Düsseldorf again at the end of the year maybe in I don't know October or so But we will have quite a few more sprints There will be opportunities to come and join and this is nice because you can meet people Knowledge transfer. We're all friendly people and we like to work together and we can yeah Where the other things you can do at a sprint you can fix bugs you can write documentation develop features translate it and Other people are willing to sit with you and work together on something and this is very useful for learning how to get involved if you If you want to get involved this project as many other free software projects has a need and a lack of People who are really good with you are in UX and If anybody has an interest in that kind of stuff and yeah, that would also be greatly appreciated and we have a chat room XP chat room discussed at conference that converse chairs at org If you go to converse chairs at org the website and you click on full screen And you have an account or you can register account very quickly in two minutes, maybe 30 seconds It will I think if you register on converse chairs at org it will Tell you to go there and then you can very easily through the you are just joined that that chat room or open it up in your favorite client and Yeah, ask us questions. We're friendly and I'm gonna be in this room for daily's talk afterwards I'm Have to leave it about four o'clock. I think today, but actually earlier for 330 I might be afterwards in the in the hallway So if someone wants to talk otherwise reach out with to the chat room or here are my other contact details email and XPP I really like the Fiddiverse I'm a master done Twitter. I'm almost kind of thinking about teaching Twitter, but I'm still there So thanks for listening Hey there Thank you for the talk you mentioned about Contributions about design UX and UI what kind of contributions do you need? Yeah, so the question is oh he did actually talk into the mic, but yeah the question is what kind of UX UI contributions are needed and It's almost like We don't know what we need because we don't have the expertise to be able to say what we need, right? It's what is this thing this paradox? so I Know a lot of people tell me it doesn't look that great like compared to other applications, especially the commercial ones like it just Yeah, it doesn't look that polished and We try our best, but we're just the people are involved at the moment on no one's really like a full-time designer or UX expert or so And so could be just advice. It could be mock-ups. It could be helping with the CSS. It's Yeah, it's difficult to say what exactly Yeah, one question from my end. How many external dependencies? How many external dependencies there are in conversory JS if any and is it possible or easy to for instance? Hosts all of them in one place so that you don't access external JavaScript From your page where you use Yes We bold so the question is how many external dependencies are there and is it possible to host all of it yourself? It's 100% possible to host all of it yourself It's in the end one JavaScript file and one CSS file and some font files for fonts and the It does have external dependencies, but they all get both into one file That file is about 1.2 megabytes You could probably split it up chunk it or so on but at the moment. We don't do that The CSS is about 200 kilobytes or so But that's the whole application with all the CSS with all the HTML that kind of gets rendered also included in there the dependencies are it's both on strove, which is a That's the library that sets up the XBP connection and does the stands up parsing and not parsing but the stands are forwarding and sending and receiving and The framework is backbone That's a little bit because of the the this project is already Started in 2013 1213 which when backbone was kind of in its heyday nowadays people using other stuff, but I Preferred to evolve something rather than rewrite and I think it's paid off so I'm quite happy with backbone. It's quite a minimal small library with low overhead Coming with that is low-dash, which is a utility library There's a few other things it has a fair amount of dependencies, but we're also trying to keep it as small as possible Probably with we're back. We can do some more Tree-shaking and to kind of make the build smaller and so on but I don't think you can get away with not having dependencies and It is definitely meant to be self-hosted especially the into into encrypted stuff a Lot of the security properties break down when you rely on someone else to host stuff for you when you have into Intercription because they can in any time just Serve new JavaScript for you that that is malicious One last question here That It's a little bit related to that issue I Would have a little bit Problems to just put my GID and password in some web page I know that Converse uses this only locally in my browser, but as an end user I cannot see the difference So that my password is not passed on to the server So is there any way of knowing? Oh, this converse is really The real one and would not pass my password to somebody Yeah, so signing or whatever. Yeah, so One thing you can do is to self-host it and therefore you have full control over it another thing you can do we like there's been a lot of talk in the community about creating some kind of a Lot of people don't like it But the idea of something like an electron app or a few years ago I integrated into something called chromium embedded framework, which is similar kind of thing where you can create a desktop app with based on the browser Electron has signed Releases so you can you have a bit more control there over what gets deployed and Other than that it Generally, yeah, there is an issue of trust Unless you do these make these steps to host it yourself or to use some kind of desktop application Which at the moment we're not there yet to have an electron app To putting it Yeah, this that's mostly what I can say about it. It is not possible to to Verify downloads or to have signed down as within a browser without some kind of extension or without something like electron and That is something that people should keep in mind like depending on how they want to use it