Monday, November 05, 2007

shoot for the stars, you might hit the moon

i have this really bad (good?) habit of looking forward to the next phase of things while simultaneously looking back on what's preceded when nearing the end of a project cycle. this weekend i spent some time considering the whole plasma thing.

it occurred to me that it was pretty crazy to have suggested to restart the workspace stuff from scratch. throwing away a known codebase is rarely advisable, but in this case i still feel it was the right decision, if a really ballsy one. sometimes you need the big brass ones, though. i certainly wasn't the only one doing so, as kde4 is turning out to be rife with ideas that were just so crazy that they've ended up working. (and you thought that only worked in the movies!)

the emerging architecture in plasma is turning into something very nice imho that we can build on for years to come. whereas i constantly felt i was running into walls with kicker and kdesktop (i hacked on both in the kde3 days, maintaining kicker for a few years even), i feel only possibilities with plasma. i am not limited anymore by the framework, but by how much code i can write and debug.

the downside is that everything is new. there are bugs everywhere. there are things that still need to be rewritten. i'm regularly struggling with QGraphicsView which is also a brand new technology; it's doing rather well but we're still turning up issues in it on a regular basis. this is largely because we're pushing every possible envelope with it, while also trying to adjust our QWidget mentality to a QGrahicsItem one.

Andreas-of-QGraphicsview hasn't taken out a contract on my head yet (that i know of, anyways) so although i'm sure he's amazingly annoyed with me as the relatively constant harbinger of bugs and api complaints, he's also doing a pretty remarkable job of improving things as much as he humanly can.

that said, with any such ambitious project that aims for the stars, it first needs to reach the moon. with 4.0 we'll get pretty close to that rock, and it's very reassuring to see the "to the stars!" ideas i tucked away 2 years ago are actually going to be possible.

one thing i'd never really considered was libplasma as a library for other applications to use. we all know about amarok, but now we're looking hard at LinuxMCE, which functionality wise is probably the most impressive media center / home automation systems on linux today.

two leading members from the LinuxMCE community and i had a conference call and we're going to be seriously looking into the plausibility of rewriting the interface using plasma. we can keep all their great functionality, but bring the interface up a bit while making it painlessly integratable with other libplasma apps such as, well, plasma. all without tieing it to the kde desktop either. nice. there's still investigations to be done, but we'll be pow-wowing on this over the next couple of months. the goal is to have a road map ready and some basic concept to show at the 4.0 release event in january. the LinuxMCE people also want to GPL as much as possible (perhaps even all of the work) and we also have started talking about the possibility of a design studio.

really, a design studio is all that plasma is missing from really being a more humane flash, right? i mean, harri even has plasmoids rendering in web pages, and the stuff that frerich has been chatting at me about on irc makes that seem a bit passe ;)

an additional twist is that the LinuxMCE project could be one of the first commercial applications of plasma and as such bring additional kde focussed contract work into the ecosystem. i really didn't consider monetization of the technology when first thinking about plasma; it was really just about making something that didn't disappoint me every time i logged in.

there's no way it would have been possible without the team that's gathered around kde to provide the underlying kdelibs and work on plasma itself. the future is bright here.

i think the recent article in Linux Magazin summed it up well by concluding (roughly translated):

"The integration of programs with plasma is still in the beginning stages. The concept is recognizable, however, and its possibilities are likewise. If new programs use the KDE-4 capabilities correctly, a complete and modern Desktop might develop.


still lots to do before 4.0 though .. so .. back to the salt mines of g++ for me =)

oh, in other news i managed to speed up fetching of cached icons via KIconLoader by a factor of ~5 last night.

7 comments:

Scorp1us said...

I don't know about you, but I am concerned that these "Beta" releases are really alphas. I would figure that once the platform has stabilized, and "KDE4.0" "platform" is done, there is still a large amount of work putting together a complete "KDE4.0" "desktop". The difference between the "platform" and the "desktop" (in my mind) is that the platform is now ready for 4.0 desktop applications to be written in. When those applications are complete, then the "KDE 4.0" desktop can actually launch to the users.

Or are we just hoping that Koffice 2.0, plasma, and other Kore eKsperiences will be done at the same time and integrate seamlessly?

Anonymous said...

Damn, that was a satisfying and meaty blog! /me smokes a cigarette. Keep up the good work! :)

Louis said...

>>LinuxMCE, which functionality wise is probably the most impressive media center / home automation systems on linux today.

I think on _any_ platform today, functionality wise.

Also, I love the way you can be so nonchalant about a 5x code optimization. Sweet.

Leo S said...

GraphicsView presents a lot of possibilities, I think that plasma is just a little ahead of its time. Once 4.4 hits with widgets on canvas, it won't be nearly as painful to write things like taskbars that really need widgets and layouts more than they need graphicsview.

momesana said...

@Leo S
With Qt-4.4, we will have Layouts for QGraphicsItems, and using Widget Clones made of QGraphicsItems is imho much better than embeding widgets (though I look forward for this feature).

momesana said...

@Leo S
With Qt-4.4, there will be Layouts for QGraphicsItems, and using Widget Clones made of QGraphicsItems is imho much better than embeding widgets (though I look forward for this feature).

Leo S said...

Hmm.. GraphicsItem clones of widgets might be lighter, but it's a lot of duplication of work to recreate a lot of perfectly good widgets when you dont have to with qt 4.4. Also lots of potential for subtle "somewidget on the desktop works differently than somesamewidget in my application" bugs.