For me, the key sentence in that entry was this:
The work that is upcoming in Plasma Desktop is further bridging the gap between Plasma’s interfaces for different devices and formfactors.I'd like to share a little bit more about what this means long-term, and share a few more nuggets of where we are headed with the various Plasma workspaces in the process.
One Shell To Bind Them
In the early days of Plasma, the idea was to write one binary per form factor and share components between them. This would allow us to sculpt the overall interaction pattern of the shell while sharing the bulk of actual code, particularly the code that took the most effort such as network management. The shells take care of creating and managing the windows that make up the shell: panels, desktop layers, configuration dialogs and controls.
The desktop shell has around 9,300 lines of code, the netbook shell has under 3,000 and plasma-device (used in Plasma Active) has a little under 4000. Given that the rest of the Plasma code base ends up closer to a quarter million lines, this has been a pretty effective strategy.
There a couple limitations here, however. First, you need to write a shell if you want to approach a completely different type of device or interactive pattern. Experience shows that it's only 3-10 thousand lines to do so, but it would be nicer if that number was closer to zero.
Secondly, we've offered the ability for some time to switch at runtime between the Netbook and Desktop form factors. This is a little messy in that we have to stop one process and start the other. Not particularly pretty. With Plasma Active, we also started really fleshing out how much could be done if we also tweaked the settings of the window manager as well as various applications. What we'd far prefer is to be able to change the workspace layout entirely, including the bits that the shells have been doing up until now, without restarting processes and also alter other runtime settings such as changing the window decorations (or even removing them entirely in the case of Plasma Active).
We also learned in Plasma Active that we could write a rather generic shell and populate it entirely with QML. Sebastian's efforts bring those lessons deep into the core of Plasma. So in Plasma Workspaces 2, we want to provide a single shell binary with desktop, netbook, tablet and other form factors all being serviced by it. This will also give us the infrastructure to easily and elegantly switch between interaction concepts, e.g. between a mouse+keyboard-centric Desktop to a touch driven tablet experience. These transitions could be triggered by hardware events (docking, screen connected via HDMI, etc) or user configuration.
The result is that we'll share even more code between the different workspaces, be able to target new form factors even faster and produce a more consistent experience with cutting edge features.
One use case I'm personally looking forward to is plugging my laptop into the T.V. and having Plasma Desktop be replaced with Plasma Mediacenter automatically.
Plasma Framework
In coordination with the efforts to turn KDE's libraries into the highly componentized KDE Frameworks, Plasma's libraries and runtime parts are going to go into their own self-contained repository as well that follows the Frameworks policies. This means that all the components that are currently in kde-runtime will be moving into the same repository as libplasma or into kde-workspace, depending on where they best belong.
This isn't just an exercise in practicing how to use the "mv" command, however. The biggest shift here is that all the user interface bits are going QML. In libplasma2 there is no more QGraphicsView support. While DataEngines, Services, Runners and other data-centric components will continue to be written in C++, Javascript, Ruby or Python, the UI will all be done in QML. This is why we've been porting components at such a pace to QML.
In KDE Workspaces 4.11 we'll have some of the remaining big pieces in place: the window list (tasks) widget, the containments, krunner, etc. So when we make the move to libplasma2 as part of Frameworks 5, we'll be ready for the move away from QGraphicsView and into QML scene graph without hiccups for the user or our development teams. Yes, this means that the next major version of Plasma is going to be somewhat unexciting. We can't promise the fireworks of the 4.0 release, and I'm sure you're all disappointed by that news. ;)
For those who have OpenGL capable hardware and reasonable drivers, this will give them a fully hardware accelerated desktop. In such environments, we'll also have the ability to use fancy things like OpenGL shaders to achieve visual effects and usability concepts we can't do right now.
Oh, and the library is now a fraction of its previous size. More with less.
Plasma Active 5
We're hoping to make Plasma Active 4 the last release based on KDE Platform 4. This is a very important release, if only because it's going to be the version that ships on the Vivaldi tablet. However, we're also looking forward here too.
There are still variables in the equation, but our current goal is to make Plasma Active 5 a slightly longer than usual (for Plasma Active) development cycle and re-base on KDE Frameworks 5. This means Qt 5 and QML Scene Graph. It also means the possibility of using Wayland on devices. The KWin hackers have been insanely busy working on the changes needed to make this possible, doubly so since Martin was recently sponsored to work on KWin full time.
If things go according to plan, we'll be able to use the improved QML shell with libplasma2 and provide a very modern experience in terms of performance and interaction. Things like per-window transformations (important for supporting device rotation, among other things) become within our reach.
We also want to move Plasma Active's code closer to the Plasma Workspaces repositories. In fact, we'd like to create one Workspaces area on projects.kde.org under which the code in kde-workspaces, kdeplasma-addons, the left-overs from kde-runtime/plasma, networkmanagement, bluedevil and new repositories such as kscreen can all come together .. without coming together in one git repository. This will make building everything easier (if you use kdesrc-build, at least) while making it easier for us to manage the various assets.
Of course, it isn't all under the hood work.
Expanding on the Active experience
Something we've striven to do with Plasma Active is create an environment that is productive. Right out of the box you have eBook readers (and books!), office document viewers, a file manager (and even a terminal ;), data sync and much more. Combined with Activities, Plasma Active is really about getting useful things done (where you define what "useful" means) with your device.
We've been working lately on extending that from consumption to production. If you noticed, most of the items in the last paragraph were about using data: viewing, sharing, organizing. What about manipulating and creating? We really would like to make it dead simple to do things like take a photo, touch it up a bit and share it without requiring an Instagram in the way. We'd like to make it as easy to open a spreadsheet and view it as it is to create a new one.
However, in Plasma Active we've made two purposeful decisions: do not expose the hierarchical file system (unless the use case dictates that as a requirement) and do not expose details that are not relevant to the usage of the device (e.g. I care that I can open that spreadsheet, it's less important at that moment that the application is Calligra Sheets). Thus to open a spreadsheet one opens the file manager and goes to Documents, or simply searches for the document from the Launch area directly. No file system, no application launchers.
Creation should be just as straight forward. So we will be providing an interface that focuses on creating new things, just as the Files app focuses on managing existing things. In this model, you will simply tell the device that you'd like to start making a spreadsheet. Oh, and that you'd like to email it to your colleagues when your done.
Combined with an expanded Share Like Connect system and data sync services, publish and subscribe for activities and various other tweaks we have in the pipeline, 2013 will be a really great time for Plasma Active.
The Desktop too!
This will also be a time of significant upgrades to the desktop as well. The QML work is one major thing, but Share Like Connect will also be featured in the desktop along with improved activity management and widget (Plasmoid) handling.
We have a steady stream of improvements coming starting with 4.10's QML containment support, continuing on to things like kscreen so we have a first-rate hotplug-driven and low-to-no-configuration screen management system (hopefully included with 4.11; many of us are already using it now!) and the bigger UI work that will come with the move to libplasma2 and Frameworks 5.
The desktop changes will not be very radical, but then our focus is to improve performance and expose features like Activities more effectively while also tieing into the multi-form-factor-but-one-shell idea.
Ok, we get it: you're doing lots of stuff.
I could continue to write about what we're up to right now and what that leads to next .. but I fear this is already long enough. I hope, along with Sebastian's and Marco's posts, it gives everyone a slightly clearer idea of where we're heading. We have a lot of work to do to get where we want to go, but we've already accomplished so much in the last few years that we know it is not only possible, but that we have the people who can make it happen.
Of course, one of those people could also be you. :)

16 comments:
Will the QML-only stuff enable smooth zooming of activities (kinda like in early KDE4) ?
Or is it "just" a port of the current stuff to QML, without adding new things at this point?
@Tom: most of the QML work currently is of the "just ports" variety. The QML endgame will allow us to present Activities in improved fashion.
I don't know if we'll end up going back to zooming specifically, as that turned out to be challenging for many people conceptually.
Aseigo, the zooming was cool, but done in the wrong way, imho. the "correct" way could be just like it's done in kwin-show-desktop-grid effect, the problem with the old implementation it that it was slow ( in my 4core nvidia-binary-blob desktop ) and buggy. a OGl accelerated try could be cool, and since QML is OGL accelerated in Qt5, this can be a nice addition.
Wishlist: My old tx1000 had a feature that enabled it to notify the system when the screen was rotated. Is it possible to run Plasma Desktop when I'm with a conventional layout (keyboard + screen) and Plasma Active when the screen is rotated (Tablet mode, the convertible use case)? That would be great in itself.
Awesome stuff! Can't wait! :)
Are you guys at a stage where you can give an estimation of when all these goodies (KDE 5?,Frameworks 5, Qt 5, Plamsa Active 5,)are going to appear to appear in the wild?
I'm perfectly fine with a ballpark figure. Promise.
While you're at it can you make workspaces and activities screen aware? it'd be awesome to be able to send applications to screen, and tie a specific set of things to a screen. (and maybe make screen profiles for people with laptops that hook up to external monitors, and just overall improve the screen configuration program (look at arandr))
For the love of god, please do not destroy the desktop. Keep KDE free of Gnome Disease. Allow me to have a simple traditional uncluttered very fast desktop. Don't force "Share Like Connect" on me; don't turn my desktop into a smartphone or a netbook. Let me keep my well functioning system.
Please.
I don't mean to imply this is what you intend to do, but I know there's this kind of horrible tendency sometimes to smartphonify everything that used to work well, and so I implore you not to succumb to that common temptation.
Did no-one else notice that *Vivaldi* was mentioned?
I wonder if those preregistrations still count. I suppose I am about to find out soon!
@Tomaz: the speed and bugs (all QGV problems, btw :/) definitely impacted it negatively. however, there was also the problem that they resembled desktops and even windows to users too much and the concept became muddy for many people.
the wheel in Plasma Active works rather well, even though it also shows a thumbnail view. but it is different enough from "windows" and "desktop" to be more understandable.
the ergonomics of a similar wheel with the mouse is doubtful, so we'll need something different .. and it needs to look distinct from the "present windows" effect.
we don't have a firm visual design for this component yet .. participation is welcome :)
@Alejandro Nova: " Is it possible to run Plasma Desktop when I'm with a conventional layout (keyboard + screen) and Plasma Active when the screen is rotated"
once he have the "one shell" in place, it would definitely be possible .. we're still working on how to expose the UI switching, and i imagine that "on screen rotation" won't be a common use case, but you could probably hook up dbus signals.
we'll see when the time comes :)
@StephanG: this work is our focus for 2013. some pieces will likely spill over into 2014, but we're going to get as much of this done this year as we can.
@673362b0-6a59-11e2-afaa-000bcdca4d7a: "Allow me to have a simple traditional uncluttered very fast desktop. Don't force "Share Like Connect" on me; don't turn my desktop into a smartphone or a netbook. Let me keep my well functioning system."
given what we've done so far with Plasma (different workspaces tuned for different form factors rather than a one-size-fits-all approach), the highly componentized nature baked deeply into the design (so you can remove / replace / add any component you wish), etc .. why would you even think it is necessary to say that? :)
of course you'll have your nice simple clean system. others will have SLC on the desktop (which isn't a smart phone feature, btw, but an activities feature) and still others will use Plasma Active on devices.
we have no desire nor intention to do otherwise, so rest easy :)
Hey Aseigo, you really have so much going on & much of what you do is so over the head of most of us... :-) But maybe you should really post more about your role with KDE/Plasma Active & MPL. Do you still do much coding? Is your role mostly PR & management of projects? Etc...
@Mark: "Do you still do much coding?"
yes, i still write code. thankfully there are many others who also do so, too.
"Is your role mostly PR & management of projects?"
project management is a good part of what i do.
facilitating the design process (and participating in it) is another major area of participation for me.
as the team around Plasma has grown bigger and Plasma itself become bigger, more time is needed in the management side of things. that's simply the nature of such things. so i do spend more of my time now coordinating, reviewing, merging, planning, facilitating than i used to and, as a result, less time coding compared to years ago.
this has actually been a key part of ensuring plasma (and other areas of KDE) maintain their coherence and even increase in development pace.
Aaron, what about KDE applications ? Will they continue to look different from the desktop components ( and plasmaoids etc) or will they be rewritten using
a) Qt quick components ( post Qt 5.1).
b) QML ?
TIA
@ncblogger118: yes, the shell will continue to look distinct. this is intentional so that it is clear what is "system" and what belongs to the applications ("yours").
that said, applications will increasingly end up being written with QML, and desktop apps will most often use the Qt Desktop Components which means they will still be themed using the Oxygen QStyle
Post a Comment