 Hi everyone, welcome to today's talk on Varta or like integrating real-time ISH add on better hubs. So I'll try to set up context for the stock. So once upon a time there was our project called Varta. So it was an attempt to enable online communication and collaboration on top of IRC giving a nice web user experience similar to other proprietary chatting softwares like hipchats, Slack, etc. And we had a demo instance of it running on fire.varta.com and we built it on top of meter chairs but we ended up building a big monolithic giant and then we had issues in pushing fixes to it, pushing updates because all the components are tied into one process right. So we had the entire damn thing to actually push any small fixes or anything. It was not working that great and then we hit limits of resources until I ran out of money to run the try instances so I could just shut it down and we decided to refactor, break up the entire thing into small pieces and go to the microservices web because that's the hype and that's what the entire container ecosystem encourages to do and that is good in a lot of ways. And sometime down the line we started discussing Fedora. So Fedora is discussing on Fedora hubs and in the mock up there was a plan for putting an IRC widget and we pitched in and we said that yes we can empower that but we need to do a lot of refactor for doing that and that's how the journey began moving from the monolithic water to microservices. So let's have a quick look into Fedora hubs. So Fedora hubs is built to have a common platform for the contributors so that they can communicate and collaborate with different tasks right. So whenever a new contributors come to our Fedora IRC or mailing list so the main issue that they faced is a bunch of new tasks or new sets of rules to have met a bit. So we came up with this idea called Fedora hubs so that it would be easy for new contributors and even for the existing contributors so that they can track progress of what things are happening within the hubs and even with different hubs like suppose you have been designed so you can even know about what's happening in infrastructure or relenged or etc. So this is our initial mock-up of the Fedora hubs page so we have this is basically the design hub so in the beginning in the top nav bar we have the different hubs like the design hub, the ambassador hub, the marketing hub etc. And then below that we have a small placeholder where it displays all the rules and regulations that needs to be followed so whenever a new contributor comes we can like go through the rules and know what it does and what is expected of it. And then we have this widget so it's like a social network for contributors so that they can collaborate with people and like give their opinions or give status like what they are doing and on the right hand side we have so basically these all are different widgets and on the right hand side we have like list of contributors in that particular hub who are working and the main thing is this IRC widget so in this IRC widget when you log in so when you log into hubs you don't need to have a separate account to log into IRC so you can directly communicate with the IRC server and write up chat in there and it would be actually reflected in the IRC channels. So we had a few requirements on enabling the IRC feature on Fedora hubs fast it's not like running some web IRC software that is already out there in the market and like putting it on the hub space right you would even after chatting here you would like to use a favorite IRC client I use XChat somebody use IRC somebody use WeChat you won't like to give out that experience right so you would like to be online from this page and from client as the same Nick right and so that you can have the continuity of talks in all your clients. So we had to support multiple clients at the same time and we had to integrate fast auth with the chat software and we had to make the chat software in such a way that it should not be just a standalone product but it should be also consumable from a third body software via APA or via deep integration like tightly import that software and use it in an application so it had to encourage that kind of easeability and extensibility and when we looked around in the market we did not find any such library or any such tool which would actually fit all these bills properly so that's how we started working on our own project and that's where we started refactoring Vata so we made a lot of mistakes last time basically going with the monolithic architecture and building everything into putting all the pieces into one bucket and like then yes it was like difficult to scale and push updates and also it was difficult to scale the bouncer instance as in like we so there's the UI part of the application right and there's the bouncer but which connects to the IC server since FreeNode puts a lot of restrictions on the bouncer that you can have N number of connections per IP we need to actually scale that on demand so if I if say the N is like 60 users per IP right once we exhaust the 60 connections we need to actually fork at the instance of the bouncer on another IP so that we can give the users like a like seamless experience that did not we could not do with our monolithic theme because like we had to like deploy multiple instances of that which would take more memory and I was running less on servers I was running the address system on like two servers small instances and it is very difficult to consume that the older Vata there is an API or as a library you cannot do that and customization we had to just forget about that thing so this time we from the ground up we started embracing the Unix philosophy small is beautiful build small components which just limited thing club it together with other pieces and make it deliver a bigger service and each service should be standalone in itself so that we encourage like we develop standalone products which talk to each other and deliver the industry rather than like building small components which do not have any value independently so our emphasis was that that we build small usable standalone products and come back together to deliver Vata microservices microservices microservices they're cool yeah but if not done well they can be a nightmare as well and we had our share with it as well so one of the nightmares is like sinking state across microservices and how to manage the state right we all know that like the rest principle right if you're stateless you can scale indefinitely but the question is that can it applications be state free can they really be state free and like how do you sink states across multiple components right so we are pondering upon that issue and then we came across this concept of like single source of truth are not going to be like a topic of like how do we like have written so the single source of truth but like yes we need a single source of truth where you dump all the states of the apps and the apps become stateless now because all the state it has been localized to one component and now we can scale the apps as needed without worrying about like other things because and then it becomes this different topic all together how do we scale the single source of truth but the concept is that like we dump this state to a single component which may not be a single component physically but abstract in an abstract or is a single component and we make the apps stateless and we scale them easily and Facebook has been working on this a lot so they have created a client JS library called react JS which revolutionizes developing client applications and they propose an architecture for developing react applications that's called flux so flux embraces having a unidirectional data flow across the UI components so that it becomes very easy to maintain states so flux goes against the principle of like bi-directional data mediation where you have got your views which are dependent on stores and then they and they were also right with stores and the stores again they change so it becomes a chain of cascading changes that keeps on going and it's very difficult to practice data flow in this model that's why like when we move to a unidirectional data model which is much functional in nature you have a clear path of how data flows from a component so we have got like the views here I'll say call them as views so views raise actions or like they're like intense that I want to write some change to the database right or the store and that actions go through the dispatcher and then they hit the store and this logic written the store but I'll update myself or not and when it writes the changes it emits changes as something has changed and then it passes through the entire flow and through the views and the views are listening on that data if something needs to be has changed what they're listening on they re-render themselves this is a quite interesting concept but this was for client-side for making client-side JavaScript apps a few dating souls have been talking about this taking this concept to the server side I read their blogs and I was inspired and I was also inspired by Fed message which we have in federal ecosystem as inspired by a lot of things and so I tried taking this to the server side and I built a and after this is something like that so I replaced I related the microservices that we have similar to the views right they are components that depend on the state storing the stores right and they need to do something when the state changes right so I kind of like related the web service components with the views and they want to write something to the database there is actions that goes through the dispatcher hits the store and the store does its changes and the store like sense prop or prop cast change events and that goes back to the views but not just the single view to the entire system so the entire system is updated about the changes happening in the system and the same principle we used in developing IRCB so what I how I place IRCB is that this is standalone IRC bouncer made to handle scale it's not just for setting up an answer but also for my family and friends it's about setting up an IRC bouncer that can handle huge number of clients and scale as needed the problems that free node put some restrictions on the number of connections that I can have from an IP and whenever some node die so I should be able to have multiple instances of this bouncer and whenever connection comes this schedule can actually put the boss in the particular bouncing chances so that I run out of that limit late and as needed when I reach limit on all the nodes then I can fork another node and schedule bars accordingly and if some of the nodes die then that schedule has to take those board instances and put it in the other bouncer instance or create anyone and put it there so this is the goal of IRCB and it is currently a standalone product as in it's a bouncer you don't need what that we use it it's a bouncer you just run it and we are using it inside Varta but we are for publicizing it as a separate product like it's a bouncer which Metroscaler and yeah and it also allows it has an API built around around it and it also allows since it's python so you can actually access it directly from any python project and have a hook to the stores directly from the API built around stores so you can access it via API or you can directly deeply integrate by importing import IRCB in a source code and just like start playing with it so it allows for deep integration and like actually lie tight less what I say like lose the couple of integration yeah and in IRCB we have emphasized on multiple process from day one as in like in IRCB the stores run as a different process at the bounces run as a different process the CLI runs as a different process the web server runs as a different process the lockstrize back inside runs as a different process but again we can run all the processes into one but focus has been given because we need different multiple process and need to have different services which are small things so we have put that thing that the concept from the ground up so that we build something which is like multi-process and which can be scaled independently I might need to scale my API server independently of constant instances right so I'm so that's why we have thought about multiple process from day one and this is how the architecture of IRCB looks like so I compared the palms or processes or the API server and CLA which are mostly stateless bouncer is not stateless because it has to maintain the state of IRC connection to the server I cannot get rid of the state but all other database and state information that I have are down to the store so I can literally scale them as I need just like create new instances of that and I don't need to bother raise conditions who has got what data and like like creating duplicate instance of bot or not I don't need to care about that and they all talk to the store and no one knows about each other they all know only one one point the store which is a single source of truth right so they all write they do not exactly right they raise intentions to write to the store and that goes through the dispatcher and the store has got all the logic written whether like I'll be writing the changes or not so if any anytime any bug comes in the storage logic I know that I need to look there not here so it has localized my but like it has separate the concerns right any storage logic is there and all the like application API server routing logics are here the browser logic is even over there and CLI is here so it's a separation of concerns is debugging is very easy and when writes happen to the store it just broadcasts the event and it goes through all the all the notes and they are listening for the events just like we listen for fairer fed message events we have a lot of plugins written on fed message same concept as when I say that I was inspired by flux fed message yeah this is how I was inspired so we all listen for events and we do things when necessary for example I'll give me an example for example I create a new network for a user right the CLI does that I enter the values and it goes to the store and then the store writes it with the database and then it's an even that a new network has been added for a user and that goes to the system and the bouncer is listening for a particular store added a network added event or native changed even and then it figures out okay and is this network something new which is which I'm not running if it's not running it will just create a bot instance for that connect with the IRC server or and like yeah get you get the bouncer instance for what instance for the user or if it if it was a change event it will kill if it'll find out that whether I was running the network for that particular what for that particular ender kill the bot it again reload the bot on the new network changes and it will connect you again with the updated parameters so this is how simple it is it did not know about the other components like the sealer doesn't know about the bouncer it just does one thing I add a network that's all similarly when the CLI the sale I can be used actually disconnect connect or like a join a channels it knows nothing about the bouncer it knows nothing of the IC protocol it just writes a DB it just writes to the DB that okay this channel I want to connect to this channel and then it goes to the bouncer and the bouncer does it I show the thing totally decoupled the API also functions in the same way similar to the CLI so yeah so this is like kind of like unexplored terrain that I'm exploring it might be a total flop idea as well but like so far things are working great and like things look interesting so the architecture of the entire water thing is going to look something like this we have got multiple RCB instances which is the bouncer's right and again like we have deeply integrated Varta with IRCB as in we did not do integration by API we just imported IRCB stores and we hooked into the stores so in this system the beauty of it is that you can plug in like add and drop any component it's very easy just come and hook to the store and keep writing and listen for events and that's how you can add any component to that so we have IRCB on one side web servers on the other side which actually powers the web and mobile clients mobile clients are not yet there but conceptually they can be powered easily and they're all tied up by the store and the dispatcher and the IRCB instances are connected to the IC servers and apart from the web servers the bouncer instance is also exposed publicly so that you can use a favorite IRC client to connect to the bouncer instance directly via an access token we take care of the security so we have an access token system and another thing where and since it is behind the load balancer we can actually expose the IRCB bouncer's over 443 or 80 ports we'll do over 443 to keep it secure because a lot of public networks do not allow the IRC ports do not block the IRC ports like 676 is 97 but 443 and 80 are always open so we can expose the bouncer's over those ports which you will be accessible from anywhere so that you can stay connected from your favorite IC client wherever you are maybe airport or anywhere hotel or wherever yeah so we'll like to show you demo of our current work in IRCB and Varta so the current state is that we are still working on the on the UI part we are trying to fiddle with react.js redux things are not that smooth for us so we are in need for contributors and contributions so we started like we are using flux for the back end part so we use the same thing like I use react because react is powered by flux the concept of flux so we are also using for the front end we are using react but the thing is we are both Python developers and going and doing JavaScript is a bit tough but we are going there slowly so the thing is that like we are doing it slowly by slowly and we are looking for contributors who are actually react.js developers or simply jays developers who are looking to explore more areas into JavaScript and we are also like looking for someone who can help with UI and UX because that's the part where IRC lacks a bit because a new contributor he kind of failed mismatch with like installing xchat or vchat or hc or anything like that so we want to make it literally user-friendly and so we completed the proprietary tools in that space because like we find a lot like in our like Linux world nobody cares about the UI it's all nerds and gigs out there just terminal but like yeah you cannot expect that from the new user so like new to the Linux world you have to be very user-friendly and you have to focus so we'll get started with the demo it's visible or should I increase the fonts okay this is typically the state here so I'll clean this slate right now so I'll start for the IRC but bounce on instance so I'll start it on port 11,000 and I'll start it in a mode which is all in one so I'll start all the components that I spoke of like they can run as different services processes but I'll for sake of so you can do actually do IRCP run stores IRCP run server separately but here we are doing it all in one so that it will start all the possible one though so there'll be an trace back I need to look into the but it's not a proper yep and I'll start our web app and I'll start our the application which renders the client JavaScript client user interface yeah so everything is running the three processes right so let me open demo dot com so this is a local it's not public is a local set up I've done behind my engine X the concept is that we're sharing so the chat application is under chat dot com and this is on the demo dot com so that they're sharing the same domain so that we can share cookies across the domain so it's replicating the federal objects as in like in federal hubs there'll be like chat or federal project dot org and half star federal project dot org so that when you're logged in inside federal project dot org you're automatically logged in inside the chat application by your fast account information so I'll create a user because I've deleted my database so I'll try to go like our team pro password so it's asking me to add a network okay I'll add freedom yeah that's our favorite network and chat free mode connected in secret port because I'm not sort of this SSL things yet and let me choose Nick and let me join federal hubs right is that a dot or a comma yeah now it's okay and this is our playground where you do all the national things on IRC all the testing basically so yeah so we see the network list so we have a network has been created in our database and I see the channels that have already operate to join and I say access token I will come that in a bit I'll try to yeah so I see that like this is a sample page with no background like it's just a dummy page which basically replicates that a hub space for example designs right and it is mapped to for example here the channel is BCRAC right so it is mapped with the BCRAC channel in the IRC right so I can go and speak here is my internet disconnected I think I need to restore my let me see no it's not could be I think sometimes back let me start this again it seems to connect maybe my I'll just make that oh so yeah so okay so let me tap a message let me try to try not get the message here messes innocent this client I'm not getting any of the message here we have a little bit different can you speak there yeah I'm getting messages did you get being thirsty I'm federal hubs yeah so it's more so we're getting the messages here there's some problem with the introduction of the client application that we're using yeah but the concept is something similar that we go to a page and we automatically log in the user to this external chat application and we talk here in the widget the UI obviously you have to integrate like but this is the third party tool we're using something called lounge or like shout we just tweaked it and like use it for the UI for the demo and the real chat plan where is working progress as he said that we're stuck with the reduction the exact stuff yeah so this is one bit of it let me go back so here's the access token right what is this for this is actually connecting from any other client to the IC bounce apparently so what I'll do is that I'll go to extract and I'll try to create a new network RCP demo edit and here I'll paste the server password the access token basically and here I'll give the IP so it is like one two seven or zero one slash eleven yes I'm on the two channels that are joined from there as well BCR a same federal house and I can type yeah but the beauty of this is that typically in when you're connected to bounce us right when you type from one client the other plan doesn't get this message because it is an external message from you you don't get it back I hacked our like I see me before this demo so that like if I open yeah so yeah my message just sent to Dusty right that came back here as well so it gets like reflected from the bouncer back to the other client so I take the siblings how many siblings I'm having and I just send it to all which are not me so yeah this is a cool small feature like not bigger but like yeah actually is experience so you have got the same set of logs in your IRC X chat and in your web chat widget as well yeah so this basically ends the demo of Varta yeah private messages but I can show you private messages is that there's a bug in this plant tool that we're using so it if it's a single word is somehow doesn't send it to the server but yeah multiple word it sends so yeah so it's popped in extra as well here is it yeah just she has said so yeah but I could not figure out that broadcasting thing in the personal messages because they're sacred liquid to it as in like the name that comes here like the destiny of that who has sent the message this comes from the mask the IRC mask that gets into the raw message right so I tried doing the same thing for pms but what happens is that like when I'll be reflecting it back even the messages I said it will be coming under just to make a name because like it takes a mask and a tool right so when I'm sending the two as me and the mask is me then all the message will be coming as me and if I say they send it said the mask as dust is all the messages will be coming from justice so that's a kind of like but anyway I think we'll figure that out some we have to do some hack around that but like yeah so that's a current limitation of the p.m. getting having consisted of message logs from the chat clients yeah so yes yeah so that in demo and current state of things as in like so we are working on the redux application we are kind of stuck and like we need some resources but we'll get we have gotten through all scenarios before as we'll get manage things out and the thing is that like we are also planning to use like right now federal house is also using react jays for actually the feed and slowly we will be migrating most of the UI to react jays so that would be helpful yeah so we are looking for contributors of other hubs also I don't know who to say it's a people talking about federal earths it's it's a people in the users don't want to register anymore to the mailing list there was a new way of communication and then when something new is why are you spending so much time making connection with IRC which is the architect of the past that is something that works that is robust but is the architect of the past yeah for federal earths when we know that you can use XMPP that every single user federal is has an alias and open ID and that you can connect this already brand connection between IRC and XMPP and we are so can publish content with XMPP and secure things we can make multiple connection and instead of using telegram for a flag or federal event you can just create a new description room on XMPP so I'm very surprised because it sounds like something so difficult to do with IRC which is not my way of thinking of new way of communication between between users IRC as a new coming from since one year it's the place of course where sometimes you you find the the white night who saves you because you need help and and that this time there's a poor user coming and help you but most of the time it's it's closed so it's why I have what why did you do that things that is very technically advanced it's that easy to do and it works so it's an achievement itself but why didn't you choose something that's already that's the XMPP what's it's what was the example so initially our thing was that first thing IRC for open source companies at least I think IRC is not going to go away it's gonna stay but yes though the possibilities of having like more higher like high-level combination like Jabba or XMPP and if we can integrate that with IRC that could be a good way to go ahead and since our like bouncer is totally decapable so we just like we ordered our code from the previous instance to this and got the bouncer up but since it's totally decapable right we can easily rewrite the bouncer component without touching the result of this yeah because like the trouble with IRC is that it does not like we have to do a lot of like wrappers on that actually important good ion experience because IRC is not meant for initial messaging right so like Jabba works perfectly for that and Jabba is I think a superset of IRC protocol like RS3 I believe. By instant messaging I made the cool instant messaging software right now like you have those kind of like events like you see someone typing like someone is typing something like those are not supported by IRC like someone is typing message or like other cool things that you see in Facebook chat and there's no metadata and even IRC messages don't even have time sense when you're running an IRC service for many people and you are so why do you why IRC why are you basing your instant messaging on IRC because we do not want to build something which will also not work with other IC plans like keep the other IC plans working so we can add a lot of metadata in the IRC messages you can do that but and to some of various features with the web right but what about the other people who are still using IRC what about the people who are still using XChat so we don't want to break that compatibility that because we don't want to make people move to another tool like Slack or something which is the proprietary new protocol we don't want to build an awesome user experience on the things that we have but if feature needs us to evolve we can do that since our company is like micro everything is separate service we just need to rewrite the bounce or component with the touching the rest of the things that room is there to evolve but since the entire community open source community is there on IRC right so we are trying to have we are not doing anything extra which IRC and I think that people use it works fine yes it's it's exist and there's multiple way to connect because this is the only way out there to communicate right now so if people come up with a different communication video like say it's like Jabba or like SMB becomes mainstream which did not become yet we can support that but like currently since IRC is the thing out there and I feel that people are moving out from IRC only because of the user experience and this lack of singlessness mostly they like move away to Slack because they have this beautiful experience and so and they can get even like we do not have good IRC mobile plans we have got IRC Cloud plans which is again a proprietary solution right we do not have good open source solutions for IRC clients as well because like react because one of the main motive of using react is that they have react native which is helps us to like port to mobile devices people have tried to write one single corpus of multiple devices do not work for anyone of them because HTML does not run as fast as named application so react case has this concept called react native but you use the same concepts of react the react paradigm and you write native code but in the same pattern so that you do not need to learn new concepts you can write native apps the way you write web apps but in native language so it runs fast there's no like abstract unnecessary like compilation done and also it runs as native code so the point is that we will be working on native clients as well but first we need to get up with this but obviously that is that if the community agrees on other protocols right we'll choose whatever protocol the community works like you think it's a good idea to use telegram for flux it's just they took the tool and the user came and that's it's the same list we use the experts of telegram is like where is it that's the reason why people yes that's what is seamless like so people go for the seamless experience so our target is that if you can provide the seamless experience on top of IRC why won't people stick with IRC we are already there on IRC so if we the thing only missing the seamless features so if we move like IRC to that particular point so why not yes so for example we're all in IRC already sorry a good number of us are in IRC already you might not be but if we could have a very good mobile client for IRC where you can send a link to somebody and they click on it automatically add you to the chat just like a different telegram then I believe that we would actually be there instead of telegram right on our phone on telegram you don't need to create to have an account it's already connected to your contact Do you need an account for IRC? Yes we need one, we need to create one No, I'm just I'm free and I need it Maybe for certain channels you don't have to create an account like he just joins with rtnprov-w That's not an account Just if you want to reserve your... Just set some channels don't let you log in unless you have an account to get rid of people that are like you know bothering spam With the IRC you're already connected How do you... Right, so when that connected so you already have an ID connection so there's no account program anymore because it's always the same the same account for the world federal activities You can only connect yourself to an XMPB server or something else An N server in this case is ICS server because we are all dogmas So with the federal account information you can even automate the like registering the user with the ICS server But there are basic relationships with that because ICS is a protocol that works on raw text So if you have to auto identify a person or a biotech server The server will know the password that is one of the biggest challenges with IRC The reason being like IRC was designed way back where this kind of issues did not exist But like still like people are using IRC so that is where that is our bottleneck right Because people are using IRC and we have to make the... So that is a kind of like assumption we have made that we are building up for IRC We are not reinventing a new protocol because we know that the committee will keep on speaking on IRC Yeah, but like committee is using IRC I am on federal account, I want to publish one account on another platform And if there is already some connectors that exist between XMPB and diaspora and Facebook and stuff like that You can do the relations and if you want to handle that communication by yourself Without using an existing protocol you have to... That we can use because we can... Like the library we are using for IRC interpretation They say like it allows awesome plugins you can build on that So I think plugging in XMPB or other protocols with that won't be that difficult Like at the end like take that message and like hit other servers right and send that to other places So that won't be difficult we will be having various plugins system But we are just like currently focusing on like building this basic use case And then focus on like implementing other plugins On the long run like we have like set up like you can like upload to Google Drive or PageBend Like which are not there like they are not in the IRC protocol But there will be plugins within this within this within VARTA so that you can do all this operation So IRC is just an IRC bouncer And now we are developing VARTA as a layer on top of that to give you that other good To have the other features that enables the good user experience of IRC Similar to other IRC popular IRC not IRC like chat clans like Facebook or like Google Hangout But yes we are aware of those things that they are like better protocols than IRC But yes we have decided to stick to IRC for now If needed it will evolve but for now we are building it out of the IRC That's the decision we have taken I mean basically what it comes down to is you either have to choose and make everybody move to a new client Or you need to build something that bridges the gap which is what they are trying to do They are trying to build the differences So like you are never going to convince everybody to move away from IRC Because it's not just the Fedora project it's people that are contributing to multiple other projects I think it happens with other projects just say you guys are moving to XMPV So you have to have all the other projects move there anyhow If you have the concept that there really exists XMPV which will do IRC The end user don't even know he is not using XMPV or IRC The folks using the web interface don't know that The folks that are still directly to the bouncer with their XChat they know So like for example I use a terminal IRC client and I like that Like actually using a terminal IRC client I don't want to use a web browser to access IRC And I want to continue to be able to do that However when I'm moving around a web client on my phone would actually be really nice So having something that bridges those two worlds The bouncer will talk to the XMPV and when you will be on your 100 clients That will go to your IRC account And the XMPV will manage the multiple devices Whatever you want This huge possibility with XMPV that I just know as a user And it will offer the new experience that users are looking That's why they are using telegram here for flow And still having the connection with the people who know IRC IRC in the government like client Okay if you don't want to use it no problems at all I don't know about that I think we do not do much research in XMPV So I think we need to go and look up into XMPV Does implementing an XMPV like a bouncer into the bouncer Becomes like botanical using it as IRC If it's a super server and if it allows other features that a modern chat client needs Maybe we will look into it like we need to explore XMPV is a great technology I'm not arguing with you but I think what they are doing here is completely valid Thank you guys because I've been eyeing IRC cloud long But I'm willing to pay the money What he is saying is that they can use XMPV for pretty much everything Except the connect with your IRC client There's also a bridge that you can use I've never seen a Java client who did anything close to a good job of handling group chats Any XChat and the console based IRC clients are the only things I've ever seen that are tolerable Through dealing with things that are focused on channels XMPV is great for distant messages You and one, maybe two people But there's a hundred, two hundred, a thousand people on a channel I think it's worth exploring Because on top of this raw IRC we have to do a lot of work on that If XMPV helps, we have to go and explore Because they have not done a lot of work on XMPV We need to go and explore If you know a lot about XMPV So maybe you can join Fedora Ops and chat with these guys In fact, it's trans There's a website and there's some developers of XMPV platforms And they are publishing They are explaining how the XMPV work and the basics and protocols and the different layers And they did So I read this article, it's one written example So I know the possibilities of XMPV But I'm not a developer myself I'm a translator So I see that most of what you want to achieve Sounds achievable and will be existing in protocol It sounds like Because of the dozen of articles that exist But sometimes you have to say something And the technology will say something else And maybe it did, there's no client that exists So, I've looked at that If it exists, so it makes your life easier And you will go more achievable Because it's a huge work and it looks difficult to do One of the biggest problems with all the other solutions for this Are that other people are looking for a solution And they take XMPV whereas there are certain requirements for these communities That are maintaining feature parity with people that want to continue with IRC And knowing that the communities are going to be there So it might require a new project such as this That has those goals in mind The new project, good, if we can use XMPV As long as the goals of the project are achieved Which means I can continue to do this And I don't even know anything changed, that's great And then also people get their feature rich interface as well That would be great It's worth a look to have a dive into XMPV And see how it fits into our ecosystem to solve the problem Because we have to do our research on that The great thing that you, big features I think are presence Knowing if somebody's there and something Messages that kind of thing And also in the one problem you have with IRC If you're exchanging Because those kinds of things, if I don't have to do it On top of just pure vanilla IRC I have to do a lot of facts But if XMPV supports that Then there will be damage Because I know XMPV already supports that It shows the message of somebody stopping Somebody came in So if that is already handled by XMPV And that XMPV to IRC bounce which you talked about If it is a valid bridge between XMPV and IRC I think it's worth keeping a look And as I said it will not affect our UI anyway Because it's totally applicable So it will just get leaked Maybe we'll make a grant somewhere else So we can reach you? Yeah, is it there? It's not Yeah So how does the implementation exactly look for So you've got pubs up here You've got a set of users that are logged into FreeNode or something like that And you have people on XMPV They're changing the XMPV client So the question is like How do those users get into FreeNode Would they appear in that user list? That would require a whole lot of... At the end there has to be bot learning In some server which connects you as you To the IRC server and you connect with XMPV To that thing and there's some bridge That follows your message from here to here And takes your message from here So on IRC you have all your messages Being like properties on a sandbox Because this guy, the over on XMPV Sent you a message with this list Even from here in the bot right There is some... I think it's running on some server right So your message is going through some server What it can do is that... What it can do is that I think it can server call me? Yeah