 So, I'm going to talk about Queen and Whelan, which is a topic that if you had asked me one year ago that I would be talking about Queen and Whelan, I would have said, well, that's impossible. You're crazy. And yet here I am, doing it from my home, which is something I would have said it was impossible as well last year, but well, that's 2020 for you, right? Now, I think Big Blue Button doesn't like when I add emoji to those lines, but, well, in this slide what I was saying is that my name is Alish, I am a KDE developer, I have been for over a decade, I am the KDEV president, and I work for Blue Systems, who sponsors me to do quite a bit of KDE development, and I am based in Barcelona in the lovely Mediterranean coast. Now, since I am new to Queen, many of you are as well, I figured it would make sense to start with a bit of history, because we're talking about Queen, which is a project that is from the, well, very old, and Whelan is, well, not that old. So it means that, how is it possible that these two are so entangled together right now? As you can see here, this is the first recorded commit that we have right now in Queen that says, say hello to Queen, warning, not usable yet, see Redmay from Matthias Aetre, who was the founder of KDE, that was from 1999, but not 1996, which is when we consider that KDE starts, remember, 25 years this year, and that is because Queen got moved from KWM, K-Window Manager, at some point, just an anecdote, I guess, then after a lot of time and when all of these three people that I had on the last slide were not already contributing to Queen and mostly KDE anymore, the marching wrestling took over the project and among all of the work he did, he started also porting to Queen and adopting it to make it a good future solution for Plasma. Now what did it mean? Queen was an X11 compositor and it slowly started also being able to talk to the Whelan and right now you can see that you can start your Plasma session into X11 or you can start your Plasma session into Whelan and they will be mostly largely the same, you should have more or less the same features, you should have more or less the same behavior with small differences that are due to the protocol and how everything works, but that's when it all started for Whelan and Queen, that was 2013 like we can see here. Now before we start looking into why Queen is so important for KDE, I thought that it made sense to reflect a bit on why Whelan is important and why people are working on it and we keep hearing about this despite that well admittedly not every of us are using it yet, although I am by the way. First reason I think that is super important is that it's simplicity and now you can say wait a second, how is it that it's taking you so far seven years if it's so much simpler? One of us thought is when that happened we had been working on X11 for 20 years and then there's a lot of the complexity that is part of X11, that is part of the X server that is happening somewhere else, so X11 has the advantage so to speak that it's more complex but then it's developed by other people and somewhere where we get to share the work so it kind of feels like it's less complex, but as a user what you have running on your system on Whelan is much simpler. Now people keep telling me like so oh you want to move to Whelan, what am I going to do with my super old computer, that's never going to be able to embrace a new technology and all my obligation over there is there's no reason to have this kind of concern because Whelan is simpler in fact, you don't need to have the communication between well Queen and the X server in two different processes and we can have everything in Queen or all the other compositors, there's many others as well by the way like you will know Matter for Nome, there's Sway and Wesson which is the reference implementation, all of them we are implementing while this Whelan and actually this Whelan, what we mean about Whelan is a set of protocols that are implemented through a library called Live Whelan, very imaginative and these protocols do what you would expect actually to be doing and communicating between each application and well the operating system right, like the application needs to know about all of the mouse input, the application will need to know all about the keyboard input, the application will need to be able to send images to present on the screen, this is the information that is being shared through the Whelan protocols. In X11 this used to be done between the application and the X server and the X server would send all of its information to everyone including Queen and Queen would do work on top of that and this actually leads us to the second point which is security, in Queen Whelan we get to have a tighter control over what information is sent to each of the clients of the applications and in terms of Whelan semantics a client and an application is basically the same in fact Whelan doesn't know about applications, knows about clients right, now since it's Queen who decides who gets what, us from Plasma we get to have the the decision of this application needs to know about for example when was the mouse used last but not every application needs to know it right, things like a key logger for example would be trivial or are trivial to implement in X11 on Whelan it shouldn't be at all, there's ways to prevent that for example the flatback unboxing system has created or adds a proxy between the clients and and the compositor to make sure that these applications don't do it but then it needs to be done ad hoc right, in Whelan we'll get to do it and actually we don't need to have a separate component, part of the big advantage that Whelan is giving us is that we are the ones who decide so as Plasma without having to rely on other components to do smart things we get to pick and choose which is very important because well if you were in my talk yesterday I was talking about products, about having a good overall view of what we're delivering to our users I was talking about making sure that if something doesn't work we get to fix it and we've all been at this point in our lives when we've seen something that wasn't working that well on X11 and people told you well that's an X problem you will have to report the bug over there and you ended up with a super sad face because it's never fun to report a bug that is two or three layers above the the user because the amount of of the kind of language that you're going to have to use is very often well a sort of language that you as an end user are not really comfortable with even I if I had to report a bug to the X server I would have problems explaining what exactly is wrong because people over there are very comfortable with the concept of the X11 business and all but me not so much even if I have been using it and in different ways developing on top of it for the last 15 years now in in in Wayland we have these we have this possibility of of deciding over what kind of things can happen and this gives us this in this way we plasma and Queen ultimately become the interacting agent for for bug reports and for for users and we get to implement whatever our users find important right for example if we see that a lot of users are using Wacom tablets then we implement Wacom tablets our users will have Wacom tablets we won't have to make sure that we stop working on plasma we move to X11 and work on an implementation that admittedly would work for everyone and that was also very powerful of X11 but it was also a different code base that we were not all that familiar with and actually it showed in several times in our story another very important aspect of this would be hardware support when we think about plasma again as a product we need to make sure that everything works from a very low level right and being able to put it on whatever device we're working on for example plasma mobile has been working on on Wayland since the very beginning and that's very related to this right as soon as we get to have OpenGL working on the device we can run a Wayland on top a queen on top and start running the applications exactly like we're used to on on a normal Linux system unlike uh on X11 where we would have to see why it's not working over there or what are the different interfaces that we should be familiar with over there so like I said what is Wayland? Wayland is a set of protocols that we will use between to communicate between each client and the compositor and vice versa so the compositor will be able to tell things to the clients and on a one-on-one basis and the clients will also be able to tell the compositor anything that they feel like these protocols are are specified in an XML code very similar to this one I mean you could implement it at a lower level but nobody really does that these XML files are often standardized so there are several protocols that are very important to all of us and all of these are implemented by any compositor they should be implemented by us as well as matter and western etc in fact to standardize a protocol to make it unstable we required for it to be implemented in one of those compositors for it to be stable and while standard it needs to be implemented for at least a couple of them and then it's then when you see that if something is stable and there well you get to use it and the clients will start implementing these protocols need to be implemented on both ends they need to be implemented in Gwyn so Gwyn when a client tells them about well potato in this case but it could be for example the tablet tablet case I was talking about earlier you know those with a with a pen that you can walk on or or so you implement it and then clients who understand this protocol will be able to take an action in in that in this regard so clients have to implement it as well they can do it on their own or more generally the the framework whichever they're using should implement it be gdk cute or I don't know sdl whatever to make it a bit simpler cute has these tool called cute well and scanner that generates c++ code from the xml file and if you use the right argument you will generate the server side or the client side so we can start implementing it without a lot of problems well I guess I had I had emojis here as well but here I was talking about which are the relevant repositories so they are quinn so if you go to invent.kd.org you can look for quinn which is well the component I'm talking about the compositor that talks to both the graphics card and the keyboards and all of those and each of the clients and there's Wayland which is a kd frameworks that is intended to implement a lot of the client protocols so that if you need to use it from an application you can use a class that is already prepared for you to use instead of having to do the the whole interfacing with Wayland which is a bit fiddly sometimes there's also quinn server which is more or less the same but for the server side this one is fairly new we started with it at plasma 519 I think but it's helping us to be able to develop it a bit quicker there's k1ln through integration which is a component that sits in in the background and whenever an application loads the plugin because it needs something that is dependent on the Wayland or x11 well over there we have the Wayland integration and then QtWayland which is part of Qt5 and it will be Qt6 hopefully where you will see the code that actually is sending from your application into that will be sending your application events into quinn and back all right I think that the next slide has the same problem sorry about that I wanted to talk about three main relevant parts of quinn so that if you start looking at this super big code base you don't get too overwhelmed first would be the effects effects should work both on on x11 and Wayland it's a standard interface somewhat that you can implement a bit of code that can be enabled and disabled and it can perform one task right a good example for this would be the screenshot effect it's not what we would think of an effect generally but but it's implemented because it has access to everything we're drawing it has access to debuts for example which is how we've reached there so it's done you can go to quinn slash effects and you will find most of them at least the ones that we're shipping then well we have the plugin slash platforms directory that's an important one as well that's where we do the communication between quinn and all of its information into our either graphics card or whatever output there is we have several of them PRM is the one that will be taking care of the graphics card the other one will be Wayland for example which is if you run quinn on your on your system you will get a window with a quinn inside which is very useful to develop on and you will find that in plugins platforms Wayland now quinn is a very weird project to start working on and I figured that it would be useful but well not only to do this talk for today but also to give some tips for you to get started first I would suggest to start looking into running it into a window instead of doing a change and restarting your session because well one has to remember that when quinn Wayland crashes because something went wrong you lose everything that you were doing so far which is actually by the way something that we are working on but it's not ready yet hopefully it will be soon but as is to develop it is it's a bit cumbersome so you can use a line like this one let me dissect it a little bit first you see deep and deboss run session this is so that the deboss calls we're doing doesn't don't hit with the ones that for the session we're already doing because something will get replaced and it gets a bit weird by the way this also applies this deboss run session also applies to running quinn's tests and we run the executable and then we say exit with session and then console so that this quinn starts with a console so that you can start on our process or do something interesting over there and then we specify which a socket so when we specify this socket we call it academy you can call it potato if you want but the important thing is that it's not the socket that the quinn is using right now just a different one something also quite important is that since it's such a big code and everything is so interconnected one need to sit down first and see what the right place to implement everything is it's very fine if you join into the communication channels we have around and ask us but I think it's useful to sit down for a second and implement it otherwise it's something that we will end up discussing on the march request so well there's that using the window mode like I said very important having a crash over there will be much easier to debug you will get to use then valgrin gdb everything that million set on the on the training if you weather can be used over there as well well on debug it's an environment variable that if you run your process with stars outputting all of the communication that the client is having with a compositor that's also very useful you can do it on the compositor as well so you will get everything that actually is being discussed it's very verbose so you will want to use it with grab or something along the lines but yeah and if you need to especially debug something in drm drm you won't forget to debug it from from a windowed mode because drm is the thing that talks to the graphic card so you will actually have to connect to it then I just try to use it as a last resort and then I have to do it from another computer through ssh or something along the lines you can read this blog post I've wrote that explains some some tricks about how to do it a bit easier using tmux and all if you have any questions because it's a bit weird overall you can definitely ask me now if you have any questions about something you would like to implement or work on you can send an email to the either plasma develop if it's something more wider to queen mailing list if it's something more specific also it's perfectly fine if you get it wrong just send it to either and we will help you either way there's also two matrix last IRC channels that you can find us and work with us there's a hash queen and hash plasma you will find several developers of either projects over there that's what I wanted to talk about if you have any questions I'll be more than glad to say I don't know the answer thank you alish big applause in the chat there has been a lot of talk going on mostly joking but there is one question let's see and that is oh there's a second question popping up good we have three minutes that should just work queen as I know and learned has a big effect on the overall user experience but it seems like you need to be a pretty experienced programmer to contribute what can designers and less experienced programmers do to participate in quints development especially for Wayland ever since I joined the project I have tried to make it easier I've been new to queen as well and I actually was quite recently despite my experience in kd so if it's hard it's not on purpose it's a very old code base and that also doesn't help but there's been a lot of work that has been done not only by me but by flat and david and many others which well little by little make the whole business a bit a bit simpler and happier I hope that this helps if you find if you find something specifically that is complex and cumbersome for you tell us and we will try to either tell you what our experience says or well try to help you fix it in the end by the way I mentioned david and vlad and myself and mevan who did the talk the other day all of us are actually quite new to queen and maybe like three or four years ago none of us had touched it so we're kind of all on the same boat over there so be brave everybody just try it break it and then repair it again all right second question adding to the previous okay is there something like junior jobs the merge requests I see seem to implement some complicated specification well that's a bit of an open question there might be junior jobs I haven't created any junior job myself but I have seen junior jobs all over the place so there might be if you want a task you can also reach out to us and say I want to do quick things and we will show you all of the open tasks that we have there's a lot of stuff going on on fabricator as well with future plans actually there's a whole lot of stuff to to to be done right especially in graphics there's new technologies every day that keep popping up I don't know color management and these weird HDR and their 30 bit color spaces all of these needs somebody to to look into and sit down and think actually one special thing about queen is that it probably needs more sitting down and thinking than many other parts of of the kitty code base but then it's it's so much more rewarding than I mean it's not about adding a feature in this corner it's something that will end up having an impact overall the usability of of the processor it's also quite engaging I think for for a hacker as well something that is doing