This is the first in five daily blog entries about the various tracks in the Plasma Active initiative. Figuring out which order to present each of the tracks was an interesting exercise. In the end, I decided to start from the middle and work our way out to the "edges". Also, keep in mind while reading each of these blog entries that all of the individual tracks are happening in parallel, and working towards a common end point!
Without further ado, I give you ...
The Plasma library was designed to provide a generic construction kit for user interfaces made up of a "shell" (e.g. plasma-desktop or the Plasma KPart) and individual, interchangeable components we have come to know and love by the name of "Plasmoids". The idea has been to lower the cost of creating new primary interfaces while simultaneously increasing the amount of code, both at the data and the user interface level, that can be shared. A strong separation between visualization and data is encouraged right at the API level and has been a big part of achieving these goals.
This is Plasma today. Plasma Quick aims to take what we've learned and accomplished and push it up a notch.
The Plasma Quick initiative aims to take libplasma, which is the underlying infrastructure for Plasma based applications, and make it an even better solution for devices that it already is. The focus points are simple:
- Device spectrum thinking
- Innovative user interaction patterns
The work done in Plasma Quick will inevitably also improve the desktop and netbook offerings (hooray for code re-use!), but the focus is squarely on the goals of Plasma Active: extending KDE's offerings for consumer devices. The result will be "libplasma2".
The "Quick" in Plasma Quick
In Platform 4.6 and newer, Plasma supports writing components in QtQuick's QML. One tantalizing thing QML holds out is using an OpenGL accelerated scene graph for all rendering. Having seen this in action, the results are impressive. To put it mildly. Think "better performance on a mobile device than on the typical desktop running the QGraphicsView equivalent". To get to the point that Plasma can use this scene graph, however, we need to have everything in a given shell done in QML.
This implies not using QGraphicsView. What we are planning to do is to put the QGraphicsView implementation in a second support library so that we aren't forced to rewrite plasma-desktop, plasma-overlay (aka Widgets-on-Screensaver) and plasma-netbook or the hundreds of Plasmoids people have written. libplasma2 will then rely on ScriptEngines for things like QML (as it currently already does) and allow us to write QML-only shells (as Plasma Tablet and Mobile already are) and take advantage of the OpenGL scene graph wherever we can.
A Whole Lotta Details
We've been collecting notes on the various changes we wish to make in libplasma2. There are a lot of details to take care of and therefore a lot of work. The first big in-person discussion and coordinated development push on libplasma2 will happen at the end of this month at Tokamak 5. Between now and then, we are continuing to collect stories and prepare things for the work to come.
If you look at the libplasma2 wiki page, you may notice that there's very little talk of new API (what we have is working pretty well, after all) and instead a lot of talk of improving what is there. Things like making DataEngine implicitly shared so that we stop passing around pointers and start passing around references or merging the various Package classes. These are the sorts of things that usually come to light only after extensive usage; these are the details that become evident after the broader strokes are laid down and well tested.
There is a lot of low-hanging fruit in there, and once libplasma2 opens up (probably later this month) there will be all sorts of great "junior level" jobs.
We'll also be introducing some new interaction patterns, including one I'll be blogging about next week that we've taken to referring to as "SLC". (Can you guess what those letters might stand for? ;) These won't be added directly to libplasma2, but be offered as components and D-Bus services. So there will also be some "new shiny" in the Plasma Quick track as well.
Somewhat Unsexy, But Unstoppable .. Like a Freight Train
We're well aware, however, that the Plasma Quick track is mostly "unsexy" plumbing work. And we like it that way. We want to improve this bit of "middleware" so that it improves as a construction kit for shells and an app creation platform. We don't feel the need to shake the whole world up at this level in the stack, however. There will be enough of that elsewhere. Plasma Quick's purpose in life is to make the exciting work happening in the other tracks possible and easier.
As can be seen in the roadmap picture above we're aiming for 7 milestones in Plasma Quick. The first will be an early release and announcement of "SLC". The second will be our work at Tokamak5 where the Plasma developer community will lay out a firm roadmap for libplasma2 implementation work. Further milestones will be time based cyclical releases. I expect the first couple to be a bit longer (e.g. ~3 weeks) as we move some big pieces into place, such as the separation of Plasma QGraphicsView, and then we'll move into higher gear and sync up with Contour with 2 week development windows as we work on things like QtComponents for Plasma, SLC, etc.
The goal is to have a well tested and tight libplasma2 ready for the auspicious October 9th date, or "9.10.11".
How You Can Get Involved
If you'd like to be a part of the next big iteration in libplasma, check out the code in kdelibs/plasma and kde-runtime/plasma. Join the plasma-devel mailing list, visit us in #plasma on irc.freenode.net and introduce yourself. (We don't bite, promise! :) Read the libplsama2 wiki page. Then start tossing your questions, thoughts and ideas around. There are no wrong questions or bad ideas; we do challenge ourselves to come up with the best ideas we can as a group, and we do that by examining the ideas we all offer with great scrutiny.
Bring your spirit of adventure, your positivity and your get-stuff-done attitude. This is a track for software developers who want to do exciting things that lie "just under the covers".
Tomorrow, I'll be writing about Contour. In fact, there will be two others writing about it as well, including one of the interface designers in the project which will give us all an opportunity to "meet" her. This is a track that combines software development, interaction design, graphic art and writing, so it offers more opportunities for participation relative to the more traditional software project that is Plasma Quick. This is also the first of the Truly Exciting(tm) tracks in Plasma Active for end users.
Until then ... keep Plasmating! ;)