Three years ago I just wanted a nicer panel. What a rabbit hole awaited for me to descend! Indeed Plasma was supposed to just be a replacement for kicker, but the more I looked at the problem space the more work there was to do.
The problems the Plasma team discovered, defined and destroyed together were common issues other application developers were also facing. Surprise!
So the fledgling library that was started to allow people to write Applets (nee, Plasmoids!) with some sanity morphed into a framework for making applications on top of a canvas.
We went through a lot of growing pains as our canvas (QGraphicsView) was young and we weren't sure at the start what all we'd eventually want to do with it. It seemed that every step forward we took revealed another problem in the stack below us and, for bonus points, another challenge that needed addressing in libplasma. Theming, scripting, data delivery, search, SVGs, packaging, ...
At some point the Amarokers decided to take advantage of libplasma in Amarok2. A couple other apps started having similar aspirations. Then people started wanting to do things like put Plasmoids on screensavers or mobile devices or custom hardware aimed at vertical markets. There were moments where I got the feeling it was all getting out of hand, but the genie was out of the bottle and that meant libplasma needed to be a bit more serious.
With the 4.2 release of the KDE software products we are committing to binary compatibility. To mark that event, we have moved libplasma somewhere that is rather more convenient for others to use it from: a dependency on kdebase-workspace sucks for most applications, after all. Now libplasma is to be found in the much more amenable kdelibs.
All of the desktop application stack built on top of it (the Plasma desktop shell, KRunner, etc, etc) is still in kdebase-workspace, of course.
The path forward for libplasma is:
- to continue adding what's needed for creating ever more kick-ass canvas based applications (or canvas based areas within applications) with ever fewer lines of code
- to start authoring those woefully late high level tutorials
- to feature complete the various script engines and consider moving some of them to kdebase-runtime in 4.3 so that everyone can rely on having core scripting available in the Plasma based application
- optimize and stabilize
Exciting times, and far beyond what I'd originally expected. Perhaps the most exciting thing for me, however, is that this marks the start of a period when I can focus more fully on the things we are building on top of libplasma. Such as a better panel than kicker. ;)