- Drop cruft
- Smooth out API issues that have cropped up
- Separate QGraphicsView code out into a separate library, clearing the way for QML-only Plasma interfaces to not have to carry that weight
- Make parts of libplasma more QML-friendly than they are currently
The motivation for these changes is based on the history of the library, which grew over the last couple of years in response to changes in Qt (the biggest being the arrival of QGraphicsProxyWidget which was first used in the KDE Platform 4.2 release) and the needs of the increasingly sophisticated applications using libplasma.
One example: As activities shaped up and have become integrated with Nepomuk, KWin and other apps, the classes in libplasma meant to help track activities in relation to Containments simply stopped making sense.
Another example: the rise of QML has made QGraphicsView things optional rather than required. We don't want to do any massive porting or rewriting, so we'll be creating a new library with all those pieces in it. Components that use QGraphicsView things will need to link to that library, but otherwise little changes.
This will be our first big break in libplasma since the KDE Platform 4.2 release, but we're trying to keep it relatively tame. So far all deprecated methods have been removed, needlessly reimplemented methods (usually because the need for the reimplementation was lost over time) are all gone, unused classes have been removed, slots that were being used as a "poor man's" virtual method have been switched to actually being virtuals and some API blemishes have been cleared. The ability to verify signed packages using GPG has also been added.
Next up is a merge of Package, PackageStructure and PackageMetadata into one class, with most of PackageMetadata actually being discarded. Then the QGraphicsView separation will get underway.
Changes to the public API are being documented here as they happen. There are still several months of work to be done on this, and we're trying to keep the impact low with the mantra of "source compatible if at all possible" constantly on our lips. We don't wish to break plugins or have to touch code that is finally becoming mature in plasma-desktop, plasma-netbook, etc.
The development is happening in the libplasma2 branch in the kdelibs git repository with discussion happening on plasma-devel at kde.org and in #plasma-devel on irc as usual.