Qt Academy has now launched! See how we aim to teach the next generation of developers. Get started
最新版Qt 6.3已正式发布。 了解更多。
最新バージョンQt 6.3がご利用いただけます。 詳細はこちら

Tokamak 4, the KDE Plasma meeting…

This week i was attending Tokamak 4 in Germany, the KDE Plasma meeting. I'm a Plasma contributor in my spare time so it's always nice to meet face to face the people I'm working with. The event was hosted by Novell in the Suse office. It was very well organized and I even met some people behind this distribution. I was there to present QML and also gather the usual feedback from KDE/Plasma. I was also exiting to work on the new "project" launched couple of weeks ago : the Plasma-mobile project. The scope of this project is to bring Plasma and by extension KDE technologies on mobile phones. Plasma has already a dedicated user interface for desktop and netbook (The netbook shell) but a new baby will join the family.

After a lot of discussion, the idea was basically to have something that would work on almost all mobile devices and designers would be
able to provide a custom interface for each kind of device, without changing one line of code! How we can achieve that ? The idea is
actually very simple :) So, while we started working on it, another group started thinking about kdelibs and how we could get rid of "not so necessary" dependencies for the mobile world and decrease the memory footprint of it. Sometimes this kind of work doesn't get into the user's face but is really necessary for the overall user experience. These guys rocks, at the end of the meeting they had a very nice plan : basically a KDE for Desktop, Tablet, and Mobile. Check out the details here : http://mail.kde.org/pipermail/kde-maemo/2010-February/000059.html

Thanks to Qt and KDE infrastructure we are able to deploy our applications everywhere. Thanks to Plasma we are able to provide great organic interfaces and services everywhere. And thanks to vendors we are actually able to deploy all of this stuff on real devices ;)

Technically speaking we decided that we would code all the "backend" for the mobile shells in a way that they would have a "view API" that would be used by designers to create different interfaces for different devices (as it's well known that there is no such thing as an interface that works well for all kinds of devices). To create the interfaces we used QML (the new Qt declarative language to design rich UIs).

It was a really good experience! In the first day we almost didn't code a line and just discussed a lot what would be a good interface for Intel's device Compal Jax10. Meanwhile we wanted to create a concept that would be easily adapted to the Nokia N900 too. After long hours of brainstorm and discussions on the white board we came with an idea and Nuno (one of the Oxygen designer) started to do a mockup and some icons so we would be able to play with it.

Mockup Nuno

After we had the basic images, Artur (MoRpHeUz) and me started prototyping the basic stuff only in QML so it was really easy to tweak the transitions and states and Nuno was constantly giving feedback. This experience was really nice for all of us: sometimes we just did it wrong but then gave some ideas to Nuno and sometimes it was just like what he thought! With half a day we already had a prototype using QML so we knew exactly how the shell would behave.

Having the whole idea our minds we just went to the white board and started discussing the C++ bits of the backend, in order to achieve a
good architecture that would really fit inside the "Plasma way of thinking" (TM). Basically Marco, Artur, Aaron and me discussed in the
board and tried to figure out what were the missing bits for our solution and what needed to be done on libplasma and how the backend
would be coded to achieve a good result.

Last night, on one hand after hours of hacking/thinking/bug fixing and on the other hand in just one day ;) Artur and me finished the first
draft of the mobile shell! It was really nice and I think that it's just going to blow minds when it's finished. Right now we have a full
shell using Plasmoids all around and all important concepts implemented. Of course we need to improve the code that is a little
bit ugly right now and polish it like doing the notification bar (for battery, wifi signal), decide how we are going to deal with
notifications (it's already in our mind) and of course deal with remote widgets that just depend on the notification thing as libplasma
is already taking care of the difficult stuff behind the scenes. There is still a lot of work to make this user interface ready to production but I'm quite confident that we'll make it really quickly.

Watch out the screenshots and videos below to know more about Plasma running on mobile devices. And if you're interested about the decisions behind the concept, check out this other post about it (http://blog.morpheuz.cc/28/02/2010/the-mobile-concept/ and http://www.notmart.org/index.php/Software/A_mobile_Tokamak)

KDE has nice people, nice technologies that can run on other things than a regular desktop computer. The future looks promising...

Blog Topics: