At every Ubuntu Developer Summit, the Ubuntu project comes together and tries to find new and exiting ways of breaking their own systems.
So it also happened about a month ago in Orlando, FL. But let me focus on the Kubuntu bits and pieces, since Ubuntu is way to big a project to summarize all the awesomeness in one (sensibly long) blog post.
Maybe first I should say that we were rather conservative with regards to major changes of the kind “might-eat-fluffy-bunnies”, though we have some that probably qualify as “might-eat-bunnies”. The important thing with such kinds of changes is testing, testing, testing, testing, testing, testing, testing, testing, testing and fixing😉
Testing is not something terribly difficult, a bit time-consuming maybe, but surely worth the effort. If you want to help test the upcoming Kubuntu release you might want to download the daily ISO image every once in a while, or checkout the progress after each pre-release release (alpha, beta, rc). You only need to create a CD or a USB stick, boot from it and you can right away test the current state of affairs from the CD/stick in a live session. This is probably the easiest choice as it does not change your running system at all, yet it is a very good start to find large-scale issues, like broken sound driver, or broken graphics driver or overall brokenness. More engaging are installations in a VirtualBox (still not touching your data), or very brave people can also install it on their actual system (which gives the best testing, but one really should not do this on a production system, since it is going to break at least 2 times ;)).
Now that I prepared you for making sure the grave changes do not eat bunnies, let me tell you about the changes😀 Please note that they are not necessarily appearing in Kubuntu 11.04 for real if they cause unsolvable problems (so, this is mostly just planned things, they are however partially already applied).
Phonon is the abstraction layer used by KDE and Qt for multimedia magic – Amarok and Dragon Player for example use it to play their media. The wonderful thing about Phonon is, that it is designed to not be dependent on one single multimedia framework (GStreamer, Xine, VLC), but supports multiple of those via so-called “backends”. Those backends make it incredibly easy to switch from one multimedia framework to another.
QtWebKit is changing to a less sophisticated solution that hard-depends on the GStreamer framework, consequently we will have to provide GStreamer on the Kubuntu CD to support HTML5 audio/video in our current default browser Rekonq. Additionally OpenOffice.org/LibreOffice on Ubuntu also depends on GStreamer, so it only seems a logical option to switch all of Kubuntu to GStreamer (previously we were using Xine).
This is however a bit of a brave move, to my knowledge no distribution used GStreamer by default before (I might be mistaken here). In any case I would call the backend a less favored choice of backend, although I am not entirely sure why that is, because GStreamer is a decent enough multimedia framework.
Now, since I am a very practical person I do not like changing things around just to accommodate some random dependency change in one (actually rather small) part of the system. Therefore there are of course more reasons that make me believe changing to GStreamer is a good thing. Let me just highlight 3 here.
GStreamer supports more advanced missing-code-installation features than any of the other frameworks. GStreamer can actually notify the application that is using it, that it cannot play, say a MP3, and that application can then use a special functionality of GStreamer to launch a codec installation application that helps the user obtain the necessary codec to play the file. I was really referring to Phonon, when I said “application” there😉. Lets use a real example here. Kubuntu does not include MP3 support by default for various reasons. Now, currently when the user tries to play a MOV file in Dragon Player, a notification comes up telling the user that some stuff might not work and that he shall be so kind as to allow installation of additional stuff. With GStreamer the whole notification is gone and a window comes up explaining the situation. If all goes well the user can then install the appropriate GStreamer package to play the file at hand. The beauty of this is that KPackageKit and the PackageKit aptcc backend handle this in a very amazing manner so that the user experience goes up 300%.
The advantage for Phonon at large is that the GStreamer backend gets more testing and thus we will very likely see a big quality push there. This is also good for Qt, because Qt’s Phonon uses GStreamer by default.
Finally the awesome people of Linaro included special hardware optimizations for ARM in GStreamer, making it (at least for now) the preferred framework on ARM devices using an Ubuntu distribution.
I am using Phonon GStreamer for about a month now and also fixed some issues here and there, and I think this has potential for awesome.
Those of you who follow my ramblings regularly might know about Qt raster rendering already, as I made a KCM to manipulate the rendering system a while ago.
At least for the first alpha of Kubuntu 11.04 we will have this magical raster rendering turned on.
— If you care about superficial tech blah blah —
Qt widget rendering can happen by various means, basically the rendering is done by a pluggable rendering system. On Linux this by default means that rendering is conducted by the X11 server, the graphical layer of the Linux operating system. Alternatively Qt also supports rendering using the so called “raster” and “opengl” (note: Qt actually supports more, but those are currently most interesting in a desktop context).
The raster engine, is a custom made software rendering solution, which is basically doing the same as X11 would be doing with the X11 engine, but in the case of raster, the rendering is actually done internally. Also this implementation works on all supported platforms.
— End of blah blah —
We are trying raster for mainly 2 reasons:
Firstly we are interested in seeing how well it really works😉
Secondly the raster engine seems to perform a lot better than the default rendering for a lot of applications, especially those with a lot of graphics manipulation. Those of you who have used Kubuntu Netbook on an actual netbook with Intel chip will probably know that it actually is quite a drag and not much fun to use under some load (which one gets pretty easy on a puny netbook). However, with raster rendering this is about as snappy as one can expect. So, the netbook experience plays a lot into the decision to try raster, because it really makes an enormous difference on some setups. Additionally it of course also helps on more powerful systems that still (for some odd reason) suffer from this slowness.
If your system is feeling sluggish, please try the newly released Alpha of Kubuntu 11.04 and tell us your experience.
Of course there is a down side to all this. For one raster is not as widely tested as native rendering using X11, for another some applications do simply not work with raster at all.
The second problem comes from when applications use X11 specific features (such as overlay painting), which is however easy enough to fix by just enforcing native rendering for those applications (KWin does this for example). I do not think that this is going to cause a lot of problems, and if there should be too many problems of greater impact we can easy enough switch back to native rendering.
Of course those 2 changes are only a minor fraction of what goodness you can expect from Kubuntu 11.04, but I feel that those 2 are the biggest changes and thus worth mentioning explicitly. Also they are the ones that everyone who helps with Kubuntu testing the following couple of months should keep in mind.
That is it for now, I am sure you will hear about the smaller changes throughout the development cycle. Kubuntu 11.04 is going to rock, of that I am sure!
If you want to help ensuring this, please join us in #kubuntu-devel on irc.freenode.net, where you can have a nice cup of tea and a discussion about the meaning of life🙂