 Hi everyone. My name is Jeremy. I've been an engineer working for the French National Research Institute for Tear Science and they hired me to work on Métis. Just a quick show of hands. How many of you have heard of Métis before? Cool. How many of you have actually tried it? Alright. So I had my spare time and just developed working on Go Packages and X-Draggers. Alright, so first I'll go a quick recap of what Métis is, what it does, what it doesn't do, where it is today and what are some of the goals that I want to see. Some of the things I want to see and I want to do work on and some of the problems I've been having on the past six months. So Métis is not a 3G desktop. It's actually the name of the paper that was published about Métis. Métis has three parts. It's actually an X-server. It has a window manager and it has a browser. So in terms of overall architecture, it's kind of like the early companies that had XGF. So that's very similar. Métis is first and foremost a research project by two French colleagues in mind, Nicolas Lucerne and Olivier Chachis. There are two guys that started Métis in 2001 and later on Olivier came in 2003. So it's been going on for a little while. And it's a test that's for new ideas. Basically any wacky ideas, they come up. I work in an HCI team. So basically any kind of wacky idea that the team is going to have about window management, desktop interactions, this sort of stuff, they kind of throw it at Métis and hopefully it'll work. Most of the time it doesn't. It's really crappy, but you know, every 10 ideas that they have, maybe there's one could still stick around for longer than a couple of days. So that's really the main idea behind Métis. A lot of people have been asking that question in the past couple of years. Métis is not meant to be compared to Métis. First because Métis was kind of there for so long. And then the objectives are really different. Métis is a research project. Métis is a software for distribution and for effect. It's really meant to be stable and with a good architecture and a maintainable code. So there's really two different objectives. But Métis is meant to be usable. I mean, what good is it if you have a window manager that crashes every five seconds. You can't really work with it and sometimes you want experiments to last longer than 20 minutes. You want actually people using it, getting feedback to you and then telling you what they like, what they don't like. So it's really meant to be usable every day. I've been using it for six months. What do you get? I've been using it for about four years now. It is a working solution for every day. Just some quick historical background, really, just to get inside you how Métis came into what it is today. I first started as a toolkit, which is called VideoSpace, which was published in 2001. VideoSpace was a project to interact with videos, mostly in an open-jail context. At one point, we put out a researcher who worked on VideoSpace who decided, well, why can't I just mix videos? I might want to plug in regular applications into that. So he worked on VideoSpace and Tiamatista as a way to stream X window applications into his video experiments. So he was able to display regular X applications into his video composite. So to do that, just a quick recap. This is 2003, some of you, it's like ancient times in the open-source development. This is when Fedora Core came out in 2.2, and today X sprouted to when X3 gained 6. 4.3 was released, so it's like prehistory. So artwork is based on XBNZ, and it was really a major hack. It's a wonder even work. So there was this XBNZ server with home Italian window manager, because XBNZ only exports the global frame buffers. So basically, if you want a single texture for each window, which you do want in a compositing environment, then you would have to tell you windows next to each other, because they never overlap. And so he had to write the tiling window manager, so that the windows would stick right next to each other. And then on the compositing side, there was a 3D window manager, but it was not really a window manager. It had just very basic features like picking and moving, and it wasn't really a window manager 20 kind of standard. It was very kind of... But it was not usable on a day-to-day basis, but it was enough to get some really cool demos up. So now we come to Matisse. So Matisse was published, the paper was published at US 2005. And he was at an HCI conference. And so now we're back to a more traditional architecture. So there's the XBZ server, which is based, which is a four-cup XBNZ server, into which was incorporated a window frame buffer mechanism. And on top of which sits a standard X7 window manager. In our case, it's IPWM. This one was chosen because it's very flexible. A lot of the experiments have been done with IPWM, and it has this really awkward configuration language. And when you read the configuration files, you really have to wrap your head around it. But it's very flexible, and you can do a lot of stuff. So basically Matisse uses IPWM with a composite plug-in, which does all the OpenGL rendering, like comps or others. And then there's the... I mean, not proprietary, but a private protocol between XBZ and the composite module to transfer other case-maps and everything. Of course, it uses shared memory if you're on the same machine. But there's a real protocol in between for volume stitch. I'll get to that a bit later. So the architecture for Matisse, basically like this. I mean, all of you have been using comps before using XCOM. Basically how it all works. You have your XCOM applications, they contact an XMT server that doesn't drive any output of interest. And then you have the composite here that takes the fixed-maps from the XMT server that just plays with OpenGL and bunch of other parts of it. So it's all very... There's really not much to it. So now there's a demo. Demo attack. All right, so if any of you want to try this at home, there is actually no problem. This is a box-standard Mandriva 2008, which was released like two months ago. During being installed, it's going to actually ask you if you want to go on a piece, just click again, and you'll have this lighting all the way up on the demo. Any extra little part. So one of the basic operations you can do with Matisse is window transformation. So it's a very basic transformation. You can rotate the windows around pretty much any axis you would think of. You can... This seems rather trivial to do. Basically you can do any sort of OpenGL transformation on your windows. While the windows are in a rotated state, you can still work on... You can basically do anything you want. Everything's the worst that you can do. So menus sometimes... menus they'll work. So this is not very useful. I'll grant you that. Rotating, some of these things are really useless. But another thing you can do is scale. This is actually much more interesting. So this is not resizing, this is really scaling. So again, this gets for free out of the OpenGL transformation. You're going to tell me what's the point of scaling. Everyone can resize or there's no real point in that. But an interesting thing you can do really is that you can get zoom for free out of this scene. And this is really interesting when you have old legacy applications. And you have this big 30-inch Apple screen in the display. Which is like 2,600 wide by 1,000 pixels. And you have this tiny motif application which you can resize. But you can scale it with that. And the application doesn't even know it's being rescaled. So this is an interesting feature for accessibility. And just sometimes you might want to zoom in or something. So this is something you can do. Another operation you can do is when you have multiple windows overlapping, you can fold windows to see what's beneath it. Again, that's not very useful. It's kind of like the flashy demo. But this is just to show you, this is one of the things that the team looks at. And I don't know if it's useful for anybody. It's definitely not very useful for me as it is. But someone might find it useful in another context. So this is one of the possibilities that the team has. And actually, so this folding technique on its own is not very useful. But it does have one nice application which is copy-pasting. So for instance, if you run, let's just say you want to copy some data and you have overlapping windows, you can start a drag-and-drop method selection operation from your terminal. And the window will fold, bringing this one to the top. And once you release your mouse button, the window comes back and unrolls. And you can paste it again. So this must seem really trivial, but in tests that were done by the team, this is actually the faster way of doing copy-pasting. Again, copy-pasting seems really trivial. But if you're an office worker, this is something you'll do. This is not something that we programmers do much. But office workers might do this thousands of times every day. And so even a 0.1 second increase could be worth something for them. So this is the kind of interaction techniques that Matisse is all about. It's really interactions between windows. It's not really targeted at what's going on inside the windows. Another feature of Matisse is based on the FBWM pager. So we have a standard FBWM pager here, which we have extended. So FBWM uses pages rather than desktops. This isn't no X difference. Basically, there are subtle differences between virtual pages and virtual desktops. Once you use virtual pages, you still get to keep your windows around. That's one of the features. And using this pager, we have the global desktop view. This is really another feature specific to Matisse. You can still interact with windows when you're in the global desktop view. You can move those around with various desktops. You might even want to zoom in and have your windows while watching everything else. This is the kind of thing that you can do. What else? Back in. Another feature of Matisse, which comes to window management, is we call that feature facade. So feature of Matisse is a user basically modifying existing applications without their consent. For instance, I'll take him for the sake of simplicity, but imagine an application like Photoshop and Windows that has thousands of dialogs, thousands of menus, pop-ups, whatever, and you can't really, it's really hard to configure. So one thing that a facade implement is basically copy-pasting elements of the UI into their own application, into their own windows. So, for instance, let's just say I'm working on a... I just want to use some tools that the game provides. I'll just copy-paste them. I'll select them and I'll basically create a new window. So the game has no clue what's going on here, really. I'm just taking out its buttons and I'm not asking for permission. So... Now I have my own toolbar, which I can use. It's completely functional. I can select the buttons. And you will notice that it's actually really a copy. So when I click here, the reality is like I clicked here, and vice versa. There's no distinction between the two. This is really a clone, really cloning elements of the UI. And a nice feature of that is that you can, you know... You can save... Yeah, it's already prepared now. So you can have multiple sites available and then you give it up. And then you can use... Again, imagine you have this huge display. You might have all your extended games menus on the side and then you'll have just the bits and pieces that you're really interested in on the other side of your window on the other side. So you can really arrange your desktop the way you want it, and not the way the application designer really wanted you to. So this is really... You don't have to write any GemFu extensions or Firefox extensions in JavaScript or, I mean, Pergen 7-Take in OpenOffice, writing C++ code. This is just standard X. So another interesting thing we have in the T is a bimanual interaction. So, basically... Can you close the other widget, the new one, which are functional? Which one? It will be original too. The original, then it will be the other one now. This is based on the browser. So if I close the game, this doesn't exist anymore. Of course, the other way. Yes, that you can do. You can hide... there's an option. I don't really handle it really well, but the composer can hide the original window. Why did you happen to resize the gas window? That is tricky. If you use the accessibility... I don't know if you've noticed, but when I was dragging and selecting the buttons out here, there was window snapping. And that uses the accessibility toolkit inside GNOME. And when this is enabled, it's thumb stretching and allowed because they can keep track of the actual widget. But if you're using plain X, then you don't know what a widget is. There's actually no notion of widgets. So there's no... you don't know when the widget is resized. So, yeah, you're screwed. See, it still works, but it won't. So, yeah. Bimanual interaction. So basically, we're using both hands, for instance, this is getting a pretty standard configuration. We have a laptop, and then you have a mouse. So more and more users are actually going to have a touchpad and an external mouse. So this is going to become... this is already becoming a very standard setup. So there's... there are ways to explore bimanual interactions. So one of the things you can do is what's called a tool glass. So a tool glass... clean it up a bit. So basically, a tool glass is a window that you can control with your mouse. So basically, I have my USB mouse that's on the side. It controls the cursor. And I have my touchpad that's been attached from the X operation from the pointer. And I can... All right, this is my initiative. And so once you have... the two are supposed to be entirely independent, I should have checked that. And so you can have one... you can control this tool glass with your left hand, and you can control the cursor with your right hand. So of course, most people are going to wonder, what's the point of controlling two things at the same time? And most people don't. I mean, the point is not controlling two things at the same time, doing two things at the same time. The point of bimanual interaction is mostly to control... to use both hands, not to use both hands, but still use both hands. And so this way you can position the tool glass with your left hand. And then once you're done positioning your tool glass, you can use your right hand, which was still controlling the cursor, which was not far away, and do two operations like this in one. So for instance here, I will select the... I will select the paintbrush, and with one click, I can start drawing. And with another click, I can start drawing in green. So this way I can draw. And I can move the... I relate, the tool is supposed to be entirely independent, but I'm sorry about that. So this is something that you can do, or you can have two person. One that you will leave on the... for instance, one that you will leave around here, and one that you will keep on your drawing area, and you can control both. So this is... Peter Hutter has been working on MPX, and at the end of his talk, that he did at the LCA a few weeks ago, he was wondering what kind of things that you can defeat with MPX. This is one of the possibilities that you can deal with MPX. There are thousands of other things, but this is one. One thing that's really interesting about using X for this is that X is really, really flexible with the DX protocol and X applications and overall architecture of X. It's really flexible. So this is really one great tribute to X, the X community. Because when you read HCI papers, and as Ben said, St. Chai, U.S., and all these conferences, I think this, my manual interaction called the tool glass, that was a paper that was written in 1995, and no one has ever implemented it because you can't do it on Windows, you can't do it on Mac, and Linux and X is basically the only system that allows you to create such a package. And so this is one thing that's really important for X in general is that X is a great research platform that is much, much, so much more open than anything else available for researchers. So this is really an important aspect. Another interesting feature of MPX is the window, it's actually an extension of the SOS feature I just showed you earlier. And it's the window duplication. Imagine for a second that... Imagine for a second that you're... This is one thing that HCI researchers are actually looking at and to this is like the hot new thing, it's a table like Microsoft services. It's like an LCD screen with touch sensors and stuff like that. So imagine that you're working on a table and then, so the screen is laid in front of you horizontally, and imagine there's a colleague that comes up in front of you and you want to work on something with him or you want to share an application. You just want to work and do some collaborative features. So for instance, you can duplicate a window and you can give him that window basically. And since he's on the other side, where you can make it, he's standing right in front of you. So you guys, and with the MPX feature, unfortunately it's not seen around the working area, you can give him a cursor and you guys can both work at the same time on the same window. And this is total, but it works with Firefox or X-Term or whatever. So basically, you can have collaborative features for free inside the T. So yeah, most people are actually developing collaborative features inside Abbey Word, using XMPP and Telepathy and whatnot. But you can get it for free using X. X does this, so why not use it? See, you resize windows, so if you resize, see that it works, but I mean, there are issues. So for any questions, please try to move on. So yeah, Matisse, what's coming up in the next couple of months and weeks and years? I've been starting to work on a configuration interface, putting some exclusive features, this is something that people are getting used to, so we're going to put it in. Maybe work on some previous configuration using standard configuration tools and stuff like that. And one of the most important parts that I want to work on is XOR integration, because right now Matisse does some stuff, but it does it on its own, and some things are hacked and some things really belong in XOR. And the two of my colleagues