One of the most hotly anticipated presentations at this year's KDE World Summit, better known as "aKademy", was Zack Rusin's intriguing "Beauty and Magic for KDE developers." Zack is a long-time KDE developer who has recently been hired to work full time at Trolltech, the makers of the Qt library on which KDE is based. As the developer conference continued, more and more people heard of the amazing visual effects that Zack was going to demonstrate. The audience in a packed lecture hall were tantalized when technical problems meant the talk had to be postponed for two days, but finally the issues were ironed out, and Zack took us on a whirlwind tour of the state of graphics in Linux/UNIX, along with a demonstration of where we can go in the future.
Daniel Molkentin and I talked to Zack about his work and how it will improve the KDE experience.
Please introduce yourself briefly.I think that those who care about that know exactly who I am, and those who don't won't care anyway. But interestingly enough today I was talking to someone who I deeply respect and he said that what identifies me is that I make impossible things possible. And that's the nicest description of me I've ever heard. So as far as development goes, that's my introduction: I'm just a guy who makes the impossible happen.
You were recently employed by Trolltech. What exactly is your job there?My job at Trolltech is to create things that others can only dream about. My main focus is, of course, computer graphics, but it's not limited to that: Trolltech gives me quite a broad creative freedom with respect to the things I work on.
What were your contributions to X.org?Mainly a new Render implementation and the new acceleration architecture, called Exa. Render is the new X rendering model. It provides font anti aliasing, for example. My work was simply optimization of the existing system. Also, I hugely boosted the handsomeness average in the X community. The last one wasn't too difficult but I think we all agree that it had to be done. :-)
It's Exa that's causing all the talk at aKademy - can you explain more fully what it is?Exa is a very simplistic acceleration architecture based upon KAA which was available in the KDrive X server. KDrive is Keith Packard's implementation of a modern, modularized X server. Unlike the old architecture (XAA), Exa was designed to accelerate XRender. It's meant to be small, simple, flexible and allow X developers to finally create some nice special effects.
What's the difference between the old method of graphics acceleration and Exa's method of accelerating XRender?Xrender is the new rendering model which was introduced by Keith Packard. Before its introduction X depended on its very limited graphics primitives.
In order to keep up with the times toolkits are either doing rendering client side and not using those primitives at all (they are just pushing the rendered image over to the server) or are using Xrender if it's available.
Unfortunately XAA (the old architecture) was mainly aimed at accelerating those old and unused primitives. Exa, on the other hand, is aimed at accelerating the new model and doesn't even bother with those old primitives.
Does everyone benefit from Exa automatically?Yes. Assuming of course that the drivers they are using actually use it (and we already have most of the drivers ported).
You were showing pretty amazing things using Xgl. Do you think that Xgl has a future?Oh yes, Xgl is the future. It's our longterm solution. The only reason I haven't gotten Xegl [sic] finished by now is that I had a lot of things on my plate. With such technologies as OpenVG and a few of the new extensions, OpenGL became a very attractive solution to all our 2D problems.
Can you explain a little about the difference between Xgl and Xegl?Xegl is a standalone server so it's the full, real thing. Xgl needs a running X server to bootstrap itself (modeline setting and handling input being the two most important aspects). Both projects share the same code for the actual graphics acceleration, but since Xgl leaves the tricky modeline and input work to another X server, it provides a testing ground for what Xegl should become with regard to OpenGL graphics acceleration.
The cube looks as if it was pretty much inspired by OS X. Are we going to see more of OS X effects in KDE?On a sidenote, I'd like to make it clear that the cube effect was done by Dave Reveman so I do not want to be taking credit for his awesome work. But going back to your question, personally all I can say is: hopefully not.
Like I said in my talk: creating great looking special effects is trivial but creating usable yet good looking special effects is insanely difficult. As far as desktop effects go, the line between "cool" and "irritating" is very thin and one of the biggest challenges with Plasma in KDE 4 is going to be finding the right balance between them.
We will not be the best if all we do is copy from others. We'll either innovate or die. Plasma is our answer. For the first time we've become organized. For the first time in KDE history, artists, developers and usability people are working together. We have those three groups working in parallel so usability and art are not afterthoughts as it tends to be in Open Source; now they're core components of our development model.
Today we had a very interesting discussion between a few KDE graphics developers, artists and usability people about our plans for Plasma. It was a fascinating discussion.
When will we begin to see the results of your work in X.org?Well, the new Render implementation and Exa are already in. The next step is moving Xgl to X.Org (it currently uses KDrive) and finishing up Xegl. We'll do the last two once X.Org 7.0 is out.
It's a long time since the last major version bump of X11. What will be so revolutionary about the upcoming X.org 7.0?It's the fact that it's going to be the first modular release that makes it so special. For the first time drivers will not be tied to the release of a server but we'll be able to release them separately. This is a big deal as all those waiting for a new X release just to get a new driver know.
How will users benefit from a modular X.org?They'll, finally, be able to upgrade their drivers without upgrading the whole server. We'll be able to update drivers independently of the server. 7.0 is mostly an architectural overhaul which will, hopefully, make X development a lot less scary for new people and will allow us to do some cool things in the long run. That's something I, as a developer, am excited about. Users will see huge performance improvements all the way across the board, which I'm sure is the thing that will get people switching to 7.0 as soon as possible.
How is Qt being adjusted to make use of the new technologies in X.org?For me Qt is the driving force behind them. When we talk about some feature that we'd like to let Qt developers create without any hassle we always start with a discussion of how it would be handled on the lower level - if something is either impossible or incredibly hard to do I go off and make sure it works there before we add it to Qt.
The bottom line is that the toolkits and desktop environments will be driving the development of the server. The server in itself is fairly uninteresting: its sole purpose is to provide the necessary means to make desktop development as smooth and fancy as possible. We forgot that for a while and most of us were hacking around the problems in the server; now we're going back to roots fixing the core problems and doing what we should be doing - inventing.
What are your wishes for the future of X.org, Qt, KDE and Linux on the desktop?I wish that people stopped being so afraid of doing new things. I wish that we started doing things that were truly uncanny. The general idea is that if you can think of it, we can implement it. We have the technology now to do that. All we need is ideas. That's why it was nice to have that discussion with artists where we were trying to figure out how to collaborate.
I think it's obvious that we're moving more and more towards vector graphics. I don't think I'll be releasing a huge secret when I say that Qt will soon natively support SVG 1.2 and will utilize it on many different levels (that includes support for animations!). Currently most icon themes are developed with SVG but they're being converted to PNGs because of performance problems. That will soon change, with the ultimate goal being that SVG rendering should not be any slower than rendering raster images.
Plasma will blow you away. Nothing you've ever seen or will see in the coming years will come even close to what you'll experience with Plasma. And that's a promise.