A mobile Tokamak
So another Tokamak went by, it is always sad to leave from this amazing group of people, but there are also two good things on that: 1) you know you will see them soon. 2) you know a really impressing amount of work has been done.
One of the big focus points of this meeting was how we tackle the new mobile devices, from a Plasma and more general KDE perspective.
It was a bit strange for me, because it didn't involve as much coding as usual, but a lot of work on getting the KDE build working well on a particular mobile device.
We had three Compal JAX10 devices loaned from Intel with installed an image of the Moblin environment, version 2.1. While both software and hardware wise they are still a bit far from a "commercial" release, but that's exactly what makes them interesting.
Here we don't have a normal keyboard, but just a little slideout one, and we have to remember that some of the devices of this class won't have a keyboard at all. Of course there is no mouse/touchpad as well, this means all cursor input is done via touch screen.
With a touch screen some interesting things happen: precision becomes really poor, so we need bigger targets. Moving the cursor and pressing the "mouse button" happens at the same time, so you can just click: anything that relies on mouse hover becomes immediately useless. Screen edges, the most reachable area with a mouse, becomes the less convenient one to use
Anyways, it was an interesting experiment: how far we can get, in a single week, starting from the bare libplasma to do an user interface for a device like that?
In the end we ended up not with one interface but with two: I adapted the Plasma Netbook interface to some of the quirks typical of a touch screen (a lot work still has to be done) and I obtained something that works quite well as a general launcher for touchscreen based tablets, that still can use an (adapted of course) version of desktop applications mixed with the "newspaper" concept (where "turning pages" will become a really natural concept) and Plasma Widgets that will run as a full screen application.
Here is a short video of the Search and Launch usage (a rough prototype had already been shown some days before Tokamak, now it's starting to work really well): it shows the horizontal scrolling of the results when the little touchscreen is landscape and the drag and drop of items around: really important there since the little actions on mouse over don't work there: also for deleting them a particular drop target with a little trashcan appears. Another important point is that now on a touchscreen a drag (being of the results view, of an icon around) begins with an enormous treshold compared to a desktop/netbook: in this way it adapts to the really low precision that a finger has on a touchscreen.
And the last concept brings us to the design of the other user interface: on a really small mobile device, such a phone, it will become simply impossible to use the regular full applications (logic and ui will have to be decoupled). Many Plasma widgets have a quite small UI, so as far as real screen estate is concerned they can work suprisingly well on small screens, they also make extensive use of touchscreen friendly concepts, like flickable scrolling views and drag and drop (even some basic multitouch support, like pinch zooming, if ony X could :p)
Some widgets, like the Opendesktop plasmoid work really well already, with just some fixes to be done here and there.
Another advantage using the Plasma widget library is that being based on QGraphicsview, they are on top the same framework of Maemo 5 and Maemo 6 ui, allowing coherence and interoperability.
On devices like a phone, we will probably also need a different primary user interface, since the size will be even smaller, not only in terms of resolution but most important, in terms of real size (the JAX10 and the N900 are both 800x480, but the N900 has more dpi, so a smaller screen)
Another reason we can want a different ui for a real phone are the main use cases, for instance here i want to be able to reach the actual phone dialer with as less gestures as possible, and the target use case is even more "casual" for function that are not related to telephony itself.
We had some design sessions about the use cases, interaction paradigm and code design of it, then Nuno produced some really beautiful graphics and mockups. Artur and Alexis sat down and implemented a proper full featured plasma shell over that mockup and got it working in an impressive short amount of time. As I said, I couldn't code much on that (but I plan to fix it in the next days;) because my job was mostly getting everything working on the JAX devices, so long sessions of building, patching, rebuilding testing, fixing and rebuilding again. Artur has a really interesting post on it too, as well as Alexis.
At the end of the week we produced a video that once released (will take some time to edit) will explain what we did and our plans in detail.
As a preview, here are two short videos that show what we got at the moment.