Wednesday, April 30, 2008

on the recent libplasma changes

There seems to be some concern amongst users about the massive surgery we did on libplasma this past month. The concern stems from the idea that these changes will work against the stabilization of libplasma and result in prolonging a "beta" quality to plasma itself.

It's important to first understand that these changes were planned, even before 4.0. We knew that "widgets on canvas" was coming and so we could eventually remove our own layouting and QWidget bridges at some point for something that was more robust and less of a hack. We also knew that being a first revision of a library API (application programmer's interface) that would see a lot of usage, it was highly likely that changes would come to be needed or wanted. It's nearly impossible to foretell exactly what will be used and required in such an API, and it's really unrealistic to hope that the first draft of the semantics in an API will be optimal any more than it is to expect the first draft of a novel to not need any editing and revising.

So before 4.0 came out I told everyone that libplasma would not be binary compatible between 4.0 and 4.1 so that we could reshape the API as needed to make it last longer. I told everyone that we'd be porting to widgets on canvas when we could begin using Qt 4.4. I told everyone that we'd be replacing the icons-on-desktop implementation with something more robust that offered access to the same features.

This was all known and planned for before 4.0 was released. None of them could be done in 4.0 for various reasons (such as Qt 4.4 not being available to us), and so we lived with various hacks and bodges.

Moving to the development of 4.1, we executed on these changes. Right now plasma is approximately as stable and in most areas a bit more featureful than what is in 4.0.4, even with all those backports we did to catch up the 4.0 branch. There are a few regressions that remain in the development tree right now, but they are disappearing with rapidity. But being able to finally see things happen that we always imagined, such as the device notifier expanding from an icon to the full view when dropped onto the desktop (aka "adjusting the visualization in response to the form factor"), is very rewarding to watch happen.

There has been one downside to the massive changes: it took time away from creating more new features. So some of the plasmoids I wanted to have working for 4.1 may not happen and get punted to 4.2 instead. Thankfully with all this work done, features that do get worked on from here out should be easier to accomplish than when working with the 4.0 API.

Thankfully we will not have to repeat this process again during the 4.x time frame. We will be able to move forward with keeping the API in place. We will add to it as needed, which isn't disruptive, while modifications such as these ones for 4.1 simply won't be on the table.

So if you are concerned about the recent changes made impacting stability, I thank you for your concern and empathize with how one could arrive at such a conclusion. Thankfully, these changes have been made specifically to answer your concerns, as well as mine, about stability and feature completeness both in 4.1 and beyond.

I hope that clears up a few things. If not, you may wish to track the betas and release candidates as they begin to appear near the end of May and see for yourself.

13 comments:

Jonathan Thomas said...

In before complaints about punted-to-4.2 Plasmoids.

Personally, if even only several of the applets in playground are completed in time for 4.1, (well okay, a bit more than several would be nice :P) I would still be very happy.

Alvin said...

As a side note, I just realized that Qt 4.3.x currently still has a bug in subpixel rendering font. It's been reported to upstream but yet to be resolved.

I really wish it will be fixed by trolltech in Qt 4.4 as this can be a turn off to give KDE 4.1 a go for people who are concern about consistent look between apps.

Iuri Fiedoruk said...

One question: Is the API changes complete after alpha one and now you just need to change the plasmoids or changes will be taking place longer?

If is the second case I see why people are worried, plasma and plasmoids need a *lot* of time to get stable as 4.0 series showed :)

But yes, the changes where needed, and probally more will happen before 4.2, I just hope plasma uses those opportunities to become more and more stable, not the contrary.

Aaron J. Seigo said...

@Iuri: "Is the API changes complete after alpha one and now you just need to change the plasmoids or changes will be taking place longer"

the API changes are done. there may be minor tweaks here and there, but in general we're focused now on feature completeness for the may 20th deadline.

"plasma and plasmoids need a *lot* of time to get stable as 4.0 series showed :)"

i dunno; 4.0 was the first release of plasma and something like 90% of the work on plasma itself happened in the last 6 months of the 4.0 release cycle. for a whole desktop shell replacement .... that's not bad.

the improvements seen in each monthly release were also significant.

something that i don't think many people appreciate is how delayed work on plasma was by waiting for Qt releases and kdelibs to finally settle down, complicated by the fact that i was involved in the kdelibs stuff quite a bit. 4.0 was a dreadfully difficult period for me =)

Diederik said...

I understand why Plasma had to be broken, why there are API changes. It all made sense to me before and still does. Indeed it was announced.

I do find the timing of the alpha release a bit unfortunate in this light. It continues to give a bad impression which could be avoided by releasing something less broken.

The release announcement only mentioned plasma would be broken again, which also gives room for people to fantasize about all possible doom scenario's. Though I agree this is all easy to say afterwards, but hard to manage beforehand.

Just my $0.02

Vide said...

I think that the only "broken" thing was the announcement. I SVN'd up 3-4 days after Tokamak and well, there were little problems but plasma itself(and KDE as a whole) did seem even *better* than 4.0.3... so...

Nice work and keep rocking!

student said...

Sweet, I'm looking forward to it.. Thanks for your job on it...

Iuri Fiedoruk said...

@aseigo: "i dunno; 4.0 was the first release of plasma and something like 90% of the work on plasma itself happened in the last 6 months of the 4.0 release cycle."

Yes, we do agree :)
This is why I've said plasma/plasmoids need time, they did not had the chance in the 4.0 series because plasmalib needed to wait for kdelibs. Now is the same thing, had to wait for qt4.4 being incorporated into kdelibs, had changes in plasmalibs API...
So I belive at least 4 months are needed to stabilize plasma code well enought (remember I for example was never able to save plasmoids position because plasma crashed on logout).

Yes, it is a guess, but I think plasma can't give the wrong impression in this release, so I do not mind waiting another 6 months for a real good and stable plasma :)

Aaron J. Seigo said...

> had to wait for qt4.4 being incorporated
> into kdelibs

fortunately we got a jump on this and did a lot of the work in a branch earlier on.

and unlike 4.0, the semantics of things haven't changed all that much inside the library.

> at least 4 months are needed to
> stabilize plasma code well enough

given six months between releases, 4 months of just stabilization will never really happen, for better or worse.

that said, we have 3 months or so until release at this point; i think we'll do alright =)

> I for example was never able to save
> plasmoids position because plasma
> crashed on logout

note that there were a number of packaging snafus that caused problems those of us building from source never saw ..

that said, yes, a lot of bugs have been fixed since 4.0; those fixes are also in 4.1. changing the API around here and there has not erased those improvements as well =)

Anonymous said...

You guys really should switch to a distributed SCM like git.

Anonymous said...

The plasma documentation seems to have disappeared in the wake of these changes. It still cannot find it after 20 minutes of Googling and searching through KDE sites.

Oszkar said...

libplasma API doc:
http://api.kde.org/4.x-api/kdebase-workspace-apidocs/libs/plasma/html/annotated.html

Oszkar said...

Something wrong with blogspot, because it didn't publish the whole link. Sorry.
I'll try writing it as html:

libplasma API