Tuesday, May 10, 2011

Qt5 .. KDE5?

As most of those who read my blog have already heard, Qt5 is on its way. The target is 2012 and the focus is QtQuick where there is a high degree of separation between display and data and things are rendered using a hardware accelerated (read: OpenGL) scene graph. This is very much in line with where we are heading with Plasma as well. Exciting times!

What does this mean for KDE? Will there be a KDE5 in 2012 as well? What would a KDE5 look like? I know these are the questions on some of your minds, if only because some of you have already started asking myself and others about it. ;)

The short answer is that we don't know yet, but we're working on it. Not a very satisfying answer is it? Well, short answers are rarely much fun. So here's the slightly longer version.

Some of us have known for a while that Qt5 was brewing. The decision to start on libplasma2 that focused on QtQuick and moved away from all things QWidget was influenced by this knowledge. Thankfully, with Plasma's emphasis on Javascript, data/visualization divisions, use of OpenGL and more recently QML, we're in a good position to follow the Qt5 flow as it comes. We're already discussing on the mailing lists how to get involved and what issues will be most important to us. We're quite excited that Qt5 is going to be developed in the open, as this should give us much more influence in and foreknowledge of decisions that get made.

However, Plasma is not KDE, it's just one part of our rather large ecosystem of software projects and products. The biggest impact that a Qt5 will have is on the KDE Platform itself, since the library infrastructure relies on working well together as one cohesive unit. As Lars pointed out in his blog entry, the focus for Qt5 is to not disrupt the application developer by changing the API, but rather making performance oriented changes that result in the binary interface, or ABI, changing. For most applications, that will mean recompiles and possibly some source level tweaks here and there.

For some, however, it will be a little more drastic. Qt3Support will be gone, which means KDE3Support will almost certainly die along with it. If your application still relies on the Qt3- or KDE3Support libraries, this is a wake-up call to address that.

The current plans for Qt5 mean that, unlike Qt4's reinvent the world approach (which was needed, if painful), it will be evolutionary and far less disruptive. This is the good news.

I also see this as an opportunity for KDE's own libraries and runtime that form the KDE Platform. We don't need another big re-engineering of the base technologies as we had in KDE4, but there is a lot of opportunity to improve how the pieces fit together. Since Qt will be breaking ABI, KDE's own libraries will also have a new, binary-incompatible signature when compiled against Qt5. That means we have the opportunity to clean up things that require breaking binary compatibility.

Often this doesn't require affecting source compatibility. For instance, the other day in the libplasma2 branch I removed a data member in a public class that shouldn't have been there in the first place. This is binary incompatible, but doesn't matter one bit from a source compatibility perspective.

Some changes will likely affect source compatibility, however. KDE's UI and KIO libraries both need some hard changes made to them. libkdeui will need to split out platform, QWidget and generic components. KIO needs a similar split between platform bits, QWidget-centric UI and business logic bits. We need to think about how to reform the KDE Platform so that it is not only possible but easy to create builds for devices with less storage or targets where QWidget simply won't exist in the future.

The best news is that in just a few weeks, dozens of KDE developers are coming together in Randa, Switzerland to work on these issues at the Platform 11 meeting. The organization for this meeting actually started towards the end of last year, and the timing really couldn't have been better.

Today we stand with a bright future ahead of us, with Qt growing leaner and more modern and appearing on more computers and more devices every day, but we also stand with a number of open questions. We don't really know the details of what KDE Platform 5's libraries will look like. We do know it will be an evolutionary release, much like the transition from KDE2 to KDE3 was, with significant improvements. We will be grappling with those unknowns in the Alps, well away from distractions and surrounded by natural beauty, and we will start to draft those answers. A couple of months later we'll be in Berlin to come together at the Desktop Summit and push it yet further forward. We should, by then, have some very clear ideas of what the next year of development towards Qt5 and an eventual KDE5 will entail.

Personally, I can't wait. Perhaps because I remember how KDE3 polished the raw materials of KDE2 into a high gloss finish and can see the same patterns emerging here again. :)

28 comments:

burkeone said...

I would propose to wait for the final release of Qt5.0. Then let's make a final KDE SC 4 release and then start with everything.

I think this is a nice possibility o rethink some old structures. Not only code-wise. For example would it not be a nice opportunity to rethink the release policy? Reflecting what worked well in the KDE4 release cycles, and what did not.

Anyway, this is really exiting! So many opportunities! Hopefully many people as possible participate in this process and contribute some ideas.
Maybe its time for a "ideas for KDE (SC)5" wiki or forum thread.

And by the way: The last KDE SC4 release sould be a big think and we should celebrate it appropriately. KDE4 was such a break and big thing in the projects history. The end of it should honour that.

As usual: Keep rocking, guys!

NuclearPeon said...

Exciting news indeed!

In fact, I grabbed an old Kubuntu 7 disc to do some livecd repairs to one of my laptops and even now, KDE3 is still stunning in beauty and form. No wonder people were hard pressed to leave such an environment.
I have complete faith in you guys. Can't wait!

Aaron J. Seigo said...

@burkeone: yes, it won't be happening immediately. we're likely to have 3 more 4.x releases, perhaps more.

Ho Ho said...

"I would propose to wait for the final release of Qt5.0."

Then again when work is done on QT5 and KDE5 in parallel then it's far easier to discover possible shortcomings for both and work them out before either has matured too much to make big changes.

Tom said...

KDE5 sounds nice, but I personally wish that all the promises that KDE4 made would be fullfilled, but I also know that with a volunteer dev base things may or may not happen (like automatic language detection for people who write in two or more languages all day)

I think you should let Qt5 settle first and think of a really strong evolutionary step. Maybe gather lots of designers if you can. Gnome3 is very limited, but still quite nice and the reception so far has been much better than that of KDE4 as far as I can tell. So having designers making unpopular and controversial decisions.

Tiago said...

I would propose for KDE 4 to be stable and feature complete before moving on to KDE 5... 4.6 is still half baked, with some programs failing to do the most basic things!

Diederik van der Boor said...

@Tiago

Allowing KDE 4.x to mature would certainly help, to allow KDE 5.0 as a big splash in the world. :)

I think that could also happen, as aseigo mentioned there will be 2-3 more releases for 4.x.

Ville said...

There could be interesting synergies with Unity2D (that is also implemented in QML).

Also, studying what is happening with MeeGo (another QML user) can be handy. E.g. the tablet ux is all qml.

kokoko3k said...

If kde5 will be real i really hope it will be based entirely on kde 4.

Not like kde3->kde4, no please.

Sidicas said...

Keep up the great work everybody!!!
I'm still discovering features of KDE 3.5 that I never knew about and I've been using it for years..

It's great to know that KDE5 won't be a radical change from KDE4... The lower amount of code maintenance for the foreseeable future is probably going to attract some Java developers to the platform.

Kevin Kofler said...

@Ville:

> There could be interesting synergies with Unity2D (that is also implemented in QML).

Unity2D is about not requiring OpenGL. Qt 5 is about requiring OpenGL. So Qt 5 will be totally useless for Unity2D. They will either be stuck with Qt 4, or end up doing yet another rewrite based on yet another technology, or just throw Unity2D away entirely and keep only the original version.

Aaron J. Seigo said...

@Tiago: "I would propose for KDE 4 to be stable and feature complete before moving on to KDE 5"

but that is precisely how to bring the current software base along to be more stable and feature complete: to continue to develop it.

unlike the 4.x series, this will not be a bunch of new technologies with some rewrites on top of a hugely disruptive Qt release.

think of it as 4.10 (or whatever it would otherwise end up being), only with a different first number.

Aaron J. Seigo said...

@kokoko3k: "If kde5 will be real i really hope it will be based entirely on kde 4."

there is no intention nor desire nor need to do another massive leap release. if you've read my previous blogs about libplasma2 (or the whole Plasma Active series, for that matter) with that in mind it should help make it even clearer :)

Aaron J. Seigo said...

@Kevin Koffler: "Unity2D is about not requiring OpenGL. Qt 5 is about requiring OpenGL."

i think you might be confusing two things: the graphics API and the hardware driver support for that API.

it is completely possible run OpenGL apps in a purely software pipeline on the CPU. these implementations already exist, in fact, and have done so for a while. hopefully we'll see the f/oss ones mature, perhaps the LLVM based one?.

as long as you don't push these software stacks too hard, which most 2D desktop apps really wouldn't (provable as they don't now even though much of the rendering is done on the CPU these days), then it isn't a problem.

Unity 2D (and Plasma Desktop's automatic fallback) is about avoiding not the API so much as the requirement that the hardware driver implements OpenGL well (or at all). if it still used the OpenGL API but was going through a software pipeline, it doesn't matter.

hipersayan_x said...

Please, I beg, I implore you m(-_-)m, do not make the same mistake of Unity and Gnome3, not force us to use an interface for tablet pc on a 19 inches monitor, continue with a design that can be personalized as now.
Pleeeeeeeeease!!!

Aaron J. Seigo said...

@hipersayan_x: we have no intention of changing the desktop shell UI; this is going to be a largely infrastructural cleanup development effort.

Kevin Kofler said...

Re Unity2D, the same things can really be said about the original Unity. I think a Unity2D based on software OpenGL will have no value whatsoever to Canonical. The only reason Unity2D got started at all is that software OpenGL is not in a good enough state yet. There's hope that it will be soon (Fedora developers are working on making gnome-shell run on software OpenGL, we have LLVM-based software rendering now in Fedora 15 and the goal is to get rid of the remaining bugs and missing features for Fedora 16), but at that point Ubuntu will almost certainly prefer the original Unity on software OpenGL to Unity2D on QML2 on software OpenGL.

So I see the move to require OpenGL in Qt 5 (through QML2, and by implementing QWidget on top of it) as not leaving any future to Unity2D.

lefty.crupps said...

KDE4 has grown wonderfully and its features are pretty much complete; I'd love to see a focus on stability and organization either for KDE5 or even for a stretch of KDE4 (4.8 perhaps).

Stability to help all apps that use KDE libs to crash less; mostly I'd say this happens for me in the old Kontact suite and I've not yet used the new Kontact, but being a rewrite it's going to have its share of bugs. Gwenview, Dragon, Plasma, Rekonq, Amarok, and others all have issues however. Shuffle devs around to help those apps stabilize better; they reflect on the KDE brand wether or not they're official KDE apps.

Organization mostly in the way System Settings is laid out; for example I don't understand why anything to do with the keyboard (Input Actions, Regional Keyboard Layout, Global Keyboard Shortcuts, Standard Keyboard Shortcuts, even Hardware and others) aren't grouped into the Same Section named Keyboard! Why are there three Keyboard Shortcut options at all (on KDE 4.5.1 that I am currently looking at; newer releases have been cleaned up some) (one of the three 'shortcut' places being the regional keybd layout, which has a 'shortcut' for setting the compose key — different in your eyes but not for an end user, and also an odd place to put that setting!)?

Within this Organization of System Settings I can also see this being beneficial: *have overlap!* Have the same Hardware link within the Keyboard section and within the Audio section. Have a Users section that includes Keyboard Layout, Network Sharing, Autostart, Default Apps (which needs to combine with File Associations!); have a network section that includes Sharing, KVpnc, Printer Config; have a Hardware section that includes all Keyboard stuff, Printer Config, Network Settings, etc. Look at that from an end-user POV rather than from the dev who put it together based on its technical fit rather than its feel.

Allow those apps to launch as root/sudo when needed, even if that means having two side by side doing nearly the same things.

I would also like to see greyed-out options in the System Settings for things I don't yet have installed but may find useful if I knew they existed.

Just my 3¢ and I do love where KDE has been and where it is going. Thank you all for the hard work that goes into KDE!

Aaron J. Seigo said...

@lefty.crupps: "a focus on stability and organization"

we work on stability and organization with each release. some releases are more focused on that (e.g. 4.5) than others.

there's a myth out there, though, that it's plausible to only work on stability and have greater stability result while retaining an active contributor community. doesn't work that way, i'm afraid.

so we keep a mix, and adjust the ratio between releases.

"Organization mostly in the way System Settings is laid out"

there is no perfect layout for system settings. it's better to get close enough, provide search and not screw with it so people can actually learn it. changing it from release to release is the most stupid thing we do as it prevents anyone from learning it. instead, it just replaces one plausible layout with another equally plausible one that is not really any better.

"Look at that from an end-user POV rather than from the dev who put it together based on its technical fit rather than its feel."

we have. guess what? there is no one set of answers if you take a broad enough group of users, because there is no universal natural order for a set of options that diverse.

"Allow those apps to launch as root/sudo when needed"

we already do.

"I would also like to see greyed-out options in the System Settings for things I don't yet have installed but may find useful if I knew they existed."

interesting idea; many may perceive this as simply clutter, however. all the things you can have in there are generally provided in workspace and runtime, anyways. and the things that aren't installed if you don't install workspace are highly specific to the workspace. iow, uninteresting to those using KDE on non-Plasma shells :)

"Thank you all for the hard work that goes into KDE!"

it's generally our pleasure to work on it. thanks for the thoughtful feedback (even if i may have some different thoughts on those matters :)

lefty.crupps said...

@Aaron J. Seigo
thanks for reading my comments and responding!

Karthik said...

Aaron,

Does qt5 somehow allow a 2D equiv- setup (similar to unity and unity-2D) so that I can save some battery time?

Please also make sure the qt5 have "Print current page and page ranges" :-) I had to use kpdf-kde3 for a longtime because of this problem :-(

Thanks.

Diego Viola said...

Aaron,

Thanks for your hard work. I'm a KDE user since the 1.x days and KDE is more impressive every day.

Will KDE5 run on Wayland in the future? Or will Qt5/KDE5 make the transition to Wayland easier?

Aaron J. Seigo said...

@Diego: "Will KDE5 run on Wayland in the future?"

yes, that is something we are already working towards :)

Diego Viola said...

@Aaron: That's great and truly admirable of KDE, and it's very worthy of respect. It's so great to see what an incredible courage you guys have for making the Linux desktop better. Looking forward to use KDE5 on Wayland. Thanks for all your hard work! :)

mathi said...

How about a lightweight DE based only on Qt? (like lxde to gtk)

Ritesh said...

I wasn't using KDE during 2.x time, so I don't know if this will turn out the same great 2 => 3 transition. But everyday, seeing no release of kdepim is frustrating. kmail can't even do an html reply.
And now another move to 5. All the best.

yman said...

"The goal of the Qt 5 project is to offer the best possible functionality on each platform, implying that Qt will begin to offer more differentiated functionality on some OS’s, while still offering efficient re-use for the absolute majority of the code across platforms." - This worries me as a user, as it means apps on 1 platform are less likely to be available on other platforms.

"There will not be any differences between developers working on Qt from inside Nokia or contributors from the outside." - Will more of the KDE code move upstream?

Re: Unity - It is my understanding that Unity2D uses 2D acceleration while Unity3D uses 3D acceleration. Considering the rapid pace of development compared with Unity3D (IIRC Mark Shuttleworth said that if they knew how fast Unity2D would come together they would have included it in 11.04), the fact that Ubuntu will ship Unity2D by default in 11.10, and I think Unity2D will get support for the same 3D features as Unity3D, means that maybe it will be Unity3D that gets dropped.

Tormak said...

Hi Aaron, as someone who's coming back to KDE from Gnome (due to GNOME3 - I use to write some KDE programs btw) I was wondering if an integrated solution for browsing and mounting NAS filesystems (like what gnome's VFS layer provides) for KDE is on the table for KDE 4 or 5. (Not saying that gnomevfs is the right solution, only that it solves some of these use cases in the right way.)

One of the shortcomings of the KIO slaves for remote file systems (SMB) seems to be that they copy data around instead of actually mounting the remote file systems somewhere under the local user account.

Every time I use KDE to try and watch a movie on my file server I get frustrated b/c the SMB KIO slave tries to copy the whole thing over the network first before letting me watch it. I have fixed this by installing and configuring autofs on my laptops, but normal users aren't going to do this. It would be good to finally offer proper integration and support of SMB and NFS shares by mounting those file systems under the end user's account.

Where can I file this as a feature request so that it can actually be on developers radar?

Thanks!