Sunday, February 26, 2012

The Nokia N9: Going for a spin

In short, I now have a Nokia n9, and setup a scratchbox for it, and compiled & installed abiword, clawmotia, unison, and libferris for and on the device. If that didn't enlarge your page down key, the longer version now follows ;-)

FWIW my impression of the device is very positive. Hardware wise the biggest issue I have is the inability to add more storage to it. A high gb microsd slotted in would make things a whole bunch nicer, mainly for using the device as a music box on the road. The speed of interaction is very nice, and the swipe interface is very easy to get used to. Just flick an app away to minimize it or flick from another screen edge to close it.

gstreamer works quite nicely for viewing network streams, though there is a deadzone bar on the logical "bottom" of the screen (left of screen in portrait mode). I noticed this bar in abiword too, so I assume it is an issue with going fullscreen for non Qt native apps.

There isn't much to show for unison, as I tend to drive that from the dekstop/laptop end of the connection. Getting it on the device is always a matter for first compiling ocaml and installing that into the scratchbox.

One very pleasant surprise is how snappy clawmotia runs on the n9. Startup time is significantly less than on the n900 and the screen operations like swiping the main controls left to get to the jog shuttle page is now at an acceptably smooth speed. I'll have to work up a video of this in action to show the speed of things...

I got libferris compiled for the n9 too. Using boost::spirit for some of the parsers has dropped one compile time dependency away. I did make both ferris and ferriscreate able to compile in glib2 only mode. You loose one or two apps by doing this, but it also makes the footprint smaller so that I can use it with QML apps without needing to pull in gtk2 from a third party repo just for those apps in ferris itself. Mainly some capplets, gfcreate, and the gfcp and other graphical coreutils reimplementations are lost in building this way.

And what is not complete without a screenshot of things on the device? Sorry for the quality of the picture, I need to work out lighting for some device shots a bit better than this adhoc quick shot. Just to tap into the ferris power a tiny bit I decided to mount an XML file as a filesystem and fcat directly into it.. A few of the fun things I plan are a QML client for index/search using the customized maemo index backend in libferris and using the mounted pulseaudio and mounted gstreamer to implement yet another audio player for the device. The index+search in both these apps should be blisteringly fast, given that I could index an NFS mount with 10x the data I could hold on an n810 and search as you type in real time...

Abiword proved to be the harder thing to compile for the n9. It seems GTK2/3 has fallen off the device so I got gtk2 from a third party repository. The downside is that the app doesn't run entirely fullscreen and has pretty much no finger friendlyness from gtk2 itself. Oh yeah, the virtual keyboard doesn't come up on text entries in gtk2 either. I might be compiling and installing gtk2 incorrectly on the device, so this complaint about device interaction might be my own fault?

I then got libwv and libwmf, following the dependency rabbit down the white hole. Of course my abiword compile has full ODF support in it too! The below screenshot is of one of my sample ODF+RDF documents with the content that links to RDF shown in purple. For more info on RDF in abiword see the abiword talk video from lca 2012.

More fun an games to follow, and I'll post a link to a repo with the debs once I work out where I'm going to host the 100mb odd of files. Not all those are for the device, some are mainly for scratchbox such as the dev packages and full ocaml compiler debs.


Anonymous said...

Wow. Do you think its realistic to trim down those 100mb and just offer Abiword in the store? Also what about virtual keyboard integration? Great work :)

Timothée said...

Could you give us more details on how to setup the scratchbox environement ? Which howtos/wiki did you follow ? I'm bought an N9 too I'm having trouble finding updated and generic (not Ubuntu focused) howtos. I've tried the script from the documentation without success.


monkeyiq said...

@Sebastian: Well the 100mb are not all for the device. Abiword, abiword-common, and libabiword are <4mb total. libwmf and libwv are <500kb. So with gtk2 that is all the footprint you need for abi.

Though without kinetic scrolling and keyboard it is a bit lacking in usability on the device. With KS it would atleast be a nice viewer.

monkeyiq said...

@Timothée: I used the general python installer script inside a new fedora 16 virtual machine. It downloaded the sb and rootstraps etc just fine for me.

/scratchbox/login to get into the sbox and the sb-menu to pick arm arch for compile target.

Though I've done this for the n810 and n900 in the past so I didn't really need much reading to get going this time.

Hub said...

Try building with hildon... that bring Maemo support. I'm not sure how much adaptation it will need but the result will be so much better.

That's what is still somewhat being used for the N900

monkeyiq said...

@Hub scratchbox doing its thing overnight... should be interesting tomorrow!