Aaron Seigo: Plasma Overhaul Planned, Using Qt Quick, QML

In his lengthy and interesting blog post covering the future of Plasma, KDE’s Aaron Seigo proposes Qt Quick and QML (a declarative language that embeds JavaScript) as replacement of the Graphics View architecture currently used by Plasma. This holds a promise of massive speedups and cheap effects as all paint operations become candidates for OpenGL acceleration, contrary to the aging Graphics View architecture that is still stuck with various inefficiencies caused by the underlying QPainter approach. Expressiveness and easy programmability of QML is a nice bonus, of course.

This blog post at Qt Labs describes the plans surrounding QML and (eventual) benefits from aggressive GPU acceleration.

KDE has always been on the cutting edge of Qt, and they already have a significant QML buy-in (Plasma Mobile is implemented in QML). Continuing this process with desktop Plasma overhaul, while not yet a committed goal, would seem like a natural progression.

Additional notes from Thom

The process of moving Plasma over from the Graphics View architecture over to Qt Quick and QML won’t be completed in a few snaps of the fingers. The plan is to make the transition over a number of KDE releases, during which more and more parts of Plasma are moved over to the new framework.

“Every Plasmoid, Containment, popup and window dressing (e.g. the add widgets interface, the panel controller, the activity manager, …) that does direct painting needs to be moved over to QML,” Seigo explains, “Thankfully we can do these one at a time with the results working very nicely with the current QGraphicsView based libplasma. This means we don’t need to do a ‘massive porting effort with a huge pause between releases’; each release can contain more and more QML driven elements and fewer and fewer uses of QPainter.”

Some breakage may occur in the process of moving from libplasma to the binary and source incompatible libplasma2, but Seigo explains the impact will be very small. “The good news is that this is an almost completely internal set of changes. The design of Plasma lends itself very nicely to this set of changes, and the C++ classes in libplasma are nicely aligned as well,” he notes, “So the external impact looks like it will be surprisingly small for anything written in Javascript or which uses QML for its user interface.”

One concern raised in the comments is that these changes mandate the use of OpenGL. Seigo hopes they’ll end up with a non-GPU render path as well. “This is all still work-in-progress and the plain CPU-rendered path is valuable to us in many use cases,” he states, “I’m hoping that we’ll end up with a proper OpenGL path (scene graph; OpenGL backend for QPainter just isn’t a full solution) as well as a QGrapicsScene fallback.”

Seigo does note, though, that eventually everything will move to OpenGL, and he’s right. That’s called progress, and cannot (and should not) be stopped. There’s enough choice in the Linux world when it comes to less demanding (hardware-wise) desktop environments.

79 Comments

  1. 2010-10-14 1:11 pm
    • 2010-10-14 1:27 pm
      • 2010-10-14 1:30 pm
        • 2010-10-14 1:46 pm
          • 2010-10-14 1:53 pm
          • 2010-10-14 2:08 pm
          • 2010-10-14 2:16 pm
          • 2010-10-14 2:28 pm
          • 2010-10-14 3:34 pm
          • 2010-10-15 6:34 am
          • 2010-10-15 9:40 am
          • 2010-10-14 3:30 pm
          • 2010-10-14 3:44 pm
          • 2010-10-15 7:10 pm
          • 2010-10-16 12:59 pm
          • 2010-10-16 4:41 pm
          • 2010-10-14 6:21 pm
          • 2010-10-14 6:40 pm
          • 2010-10-14 7:12 pm
          • 2010-10-14 9:06 pm
    • 2010-10-14 1:35 pm
    • 2010-10-14 8:23 pm
    • 2010-10-18 11:36 pm
  2. 2010-10-14 1:41 pm
    • 2010-10-14 1:52 pm
      • 2010-10-14 3:11 pm
      • 2010-10-17 1:37 am
    • 2010-10-14 2:13 pm
      • 2010-10-14 2:18 pm
        • 2010-10-14 3:37 pm
          • 2010-10-14 3:47 pm
          • 2010-10-15 1:12 pm
          • 2010-10-14 8:12 pm
    • 2010-10-14 8:30 pm
  3. 2010-10-14 2:56 pm
    • 2010-10-14 3:17 pm
      • 2010-10-15 7:59 am
        • 2010-10-15 9:25 am
          • 2010-10-18 11:31 pm
    • 2010-10-14 3:38 pm
      • 2010-10-14 10:35 pm
        • 2010-10-14 11:52 pm
          • 2010-10-15 12:55 am
          • 2010-10-15 1:21 am
          • 2010-10-15 2:05 pm
          • 2010-10-15 2:52 pm
          • 2010-10-15 4:01 pm
          • 2010-10-15 4:49 pm
          • 2010-10-15 5:32 pm
          • 2010-10-15 5:42 pm
          • 2010-10-15 5:56 pm
    • 2010-10-14 10:22 pm
  4. 2010-10-14 3:11 pm
    • 2010-10-14 3:26 pm
      • 2010-10-14 3:56 pm
        • 2010-10-14 7:25 pm
      • 2010-10-15 1:35 am
        • 2010-10-15 7:06 pm
          • 2010-10-15 8:12 pm
          • 2010-10-15 11:05 pm
          • 2010-10-17 5:51 am
          • 2010-10-17 7:12 pm
          • 2010-10-17 8:06 pm
          • 2010-10-17 8:43 pm
          • 2010-10-19 3:49 am
          • 2010-10-19 2:49 pm
    • 2010-10-14 7:49 pm
    • 2010-10-15 1:46 am
  5. 2010-10-14 3:19 pm
  6. 2010-10-14 5:23 pm
    • 2010-10-15 1:36 am
      • 2010-10-15 3:47 am
  7. 2010-10-14 7:34 pm
  8. 2010-10-14 8:39 pm
    • 2010-10-14 9:03 pm
  9. 2010-10-14 8:54 pm
  10. 2010-10-15 2:10 am
  11. 2010-10-15 2:54 am
  12. 2010-10-16 2:20 pm