Dublin: Ubuntu sprint and more

Last week there was Ubuntu platform sprint in Dublin, Ireland. I was there as one of invited Linaro guys (we got own room). What for we went there?

Work. Simple word but so much content in it. Sprints like this one allow to cooperate with other developers and this time I spent some time with Ubuntu ARM, Foundations and Kernel teams. But most of time I spent with Linaro guys as we had release of 11.06 to do.

My part was building cross toolchains for Ubuntu — including few already released ones. So I pushed several updates to ‘oneiric’, ‘natty’, ‘maverick’ and ‘lucid’ versions:

  • binutils
  • gcc 4.4.6-3ubuntu1
  • gcc 4.5.3-1ubuntu2
  • gcc 4.6.0-14ubuntu1
  • eglibc 2.13-6ubuntu2
  • linux 3.0-1.2

If you are running 11.10 ‘oneiric’ then all you need is just apt-get install g++-arm-linux-gnueabi and will get cross compiler. For “armhf” compatible one apt-get install g++-arm-linux-gnueabihf needs to be used. For those which run older releases there is Linaro toolchain backport PPA where packages are available for “amd64” and “i386” architectures.

Other part of my work was related with Star rating system which we plan to use to show status of boards supported by Linaro. I did some tests with PandaBoard connected to two monitors at same time and reported several bugs. Situation is nice but many things still need work.

At one moment I was creating “lucid” chroot on my “oneiric” system to be able to compile toolchain. And then I got a problem which ended in bug 802985 which needs fixing in all supported releases… Also debootstrap needs to be expanded to handle multiple suites at one time — otherwise there will be no way to populate chroots with older releases on any machine running 3.x kernels.

But work is not the only thing which we spent time on. Evenings were usually in pubs or similar places.

On Monday I went to hotel bar, grabbed a beer and started discussing with some random people. At one moment (when we were talking about OpenZaurus) one of them asked who I am and then went and bought me beer — he was Zaurus user whom I helped in past 😉 So never know who you can meet…

As I have few friends in Dublin area I contacted them and on Wednesday evening I went with one of them to Club Chonradh na Gaeilge Irish pub where speaking English is nearly forbidden (but we were using Polish so no problems :). There was one bard singing Irish songs. Nice place, nice event.

Thursday was team dinner — went to Rustic Stone. Nice place, awesome food:

My dinner in Rustic Stone

Friday was a day when many of us started packing and some even left earlier to catch flights. As Wookey asked me week before sprint to take my N900 with me we made a deal and I got some Euros and he got phone with all accessories. So guys — now really no more Maemo support from me (not that I did anything in this area since move to Nexus S).

On Friday also other part of visit started for me — my wife Ania arrived and we went to our family to spend nice weekend in Ireland.

We drove to Howth, spent some time looking at area from highest(?) mountain:

Then beach in Portmarnock where my wife started collecting sea shells… Quickly we got lot of them but I managed to put them in luggage somehow 😉

Evening was funny as we had to meet with one of my old friends. The “problem” was that we never met in real life yet and I forgot how does he looks. When I told that to wife and rest of group they were really surprised that such thing can happen ;D But we found each other and went to the Church Bar which is made from old St. Mary’s Church of Ireland which is one of the earliest examples of a galleried church in Dublin. Built at the beginning of the 18th century and renovated in 21st century. Nice place to visit in Dublin.

On Sunday we went into Wiclow county. Upper Lake at Glendalough then Glenmacnass Waterfall and few stops during trip to watch landscapes:

My wife and me

Monday was different — we went to Dublin for normal sight-seeing. You know: buildings, churches, castle…

Then packed bags and went to airport. The good part of Aer Lingus is that there were no problems with checking-in two bags on my ticket (but queue to just drop bags was insanely long). 2h flight, then another 2h in a bus and we finally arrived home. This part of conferences trip I like most — arrival at destination (as in Europe trips can take even 9h for me).

Is this the end of Maemo5?

Some time ago I stopped following Maemo news. For me N900 became “just a phone” which I used for calls, checking email in crappy Modest, browsing web from time to time and to read Twitter (if any application for it works) or Facebook (by web browser cause there are no apps for it).

But recently I got one tweet which pointed me to “State of Maemo” post. For me it looks like Nokia decided to finally abandon sinking ship and leave Nokia N900 users alone. Qt will probably get some updates to show that they care about cross platform support. How many MeeGo Qt apps will work on Maemo5? No one knows probably but one thing is sure — they will have to be recompiled because Harmattan will be hard-float (confirmed by Nokia developer during UDS-N). But for rest community will have to care about.

OK, there was told that there are “ideas about opening various pieces of Maemo source code that are still closed” but what it will be? No one knows. I would like to get Calendar opened but when it will happen I will probably do not have N900 anymore…

And today I read total “please ignore our ,but ignored by us, platform” message:

Last week we spoke with Nokia. We were actively discouraged from developing for Maemo any further. There are lots of things we love about Maemo, including an awesome user community so we’re disappointed to see it EOL’d. It’s frustrating to have put so much effort into an app only to see the platform it’s on be terminated. Whether we reappear on MeeGo — the successor to Maemo — depends in part on Nokia. In the mean time, our conversation with Nokia has led us to deprioritize the update we were working on, though no final decision has been made yet as to whether or not it’ll ship. I’ll keep you posted.

Somebody wants to buy my N900? I am going to move to Android because this looks like a platform where OS vendor care at least on some of devices by providing system upgrades. And there are communities which provide updates for abandoned devices. And no, I do not plan to buy device running MeeGo — enough money spent on Nokia devices.

Ubuntu One — good or bad?

Today I activated my UbuntuOne account again and enabled mobile service + extra 20GB storage (such set is given free for Canonical people). Now I wonder did it had sense…

On my desktop I am running KDE 4.5.3 under 11.04 ‘natty’ development release. Why is it important? Because there is no client for such combination. It looks like you need to run GNOMEbuntu or Microsoft Windows to have some kind of U1 integration. Otherwise I need to run shell command (or use GTK app) to login.

But ok, I installed all required packages and it connected. Synced Tomboy notes from desktop and Conboy ones from my Nokia N900 so now I have them in sync (without a way to select which one I want where but that’s limit of apps). Then I decided to make use from synchronization of contacts. And here the fun begins… My phone is not supported by Funambol (syncml backend used by Ubuntu One) so sorry — all I can use is one bug on LaunchPad.

So what’s left? Files — good to have 20GB of storage for something. Maybe will start using it one day. Now I spend time mostly at home so wifi/ethernet connection works and I have access to all media on my machines. Other is bookmarks — but only Firefox is supported (by extension) and I switched to Chromium few months ago.

But who knows… maybe it will have some use one day.

Is designing UI simple with Qt?

I use Qt on my devices since my first LinuxPDA: Sharp Zaurus SL5000 on which I used OpenZaurus with OPIE as primary environment. It was based on Qt/Embedded 2.3.x and was looking ok. UI of most applications work properly in both portrait and landscape modes, adapted to size of fonts (I used smaller then default ones).

Then Zaurus c760 arrived at my place and I did some UI code tweaks to make everything looking better on VGA screen (not that it looked wrong — I just improved few things). At that time I had nearly every Zaurus model in hands and took care to make all looks proper in both orientations.

From time to time I was also playing with 3rdparty applications to adapt them to resolutions higher then QVGA (which was sort of standard in palmtops of that era). Usually loading UI files into Qt Designer and reordering them or adding layouts helped. One of them was Mileage which required adding huge amount of layout elements just to make it look properly (all elements were put as X,Y positions originally).

Some time later I moved to GTK/X11 based environments on portable devices and later my cellphones took PDA place.

But with Nokia N900 I decided to go back to programming with Qt – 4.6 version this time. First was my module player (which I probably never end) and some time later I decided to play a bit with Vexed released by
Paul Romanchenko (rmrfchik on #maemo) where I reorganized UI a bit, added portrait support and did few other tweaks.

But then I switched to ApMeFo and while idea of application is good the UI is disaster:

  • tabs in main window
  • lack of portrait support
  • unusable UI when forced to portrait mode
  • use of non standard button sizes
  • use of non standard font sizes

And sources lacked UI files… So one day I decided that it will be good occasion to learn something new. Author was not responding to my sources request so I launched Qt Designer and started to recreate UI from scratch — using existing sources as information what kind of widgets were used. Took me some time but I got new, a bit improved UI which even worked in portrait mode:

But it still was not what I wanted. It still had tabs and small buttons… First I got rid of tabs:

Rest of functionality was moved to menu and separate window:

I was not too proud of it. OK, it looked better, I even changed some non-UI code but it still was not what I wanted to achieve. But at least I had something what I could give to users for testing.

How does it look now? Let me show not yet published version:

First main window — all buttons are finger friendly. I also grouped them a bit — it is visible in portrait mode which is also great when user want to re-order items.

Dialog to select applications to add got some changes too. It is maybe not conform with UI style guide (OK not under but on right) but it gave me extra line in list widget. Think of multi selection…

As you see (de)activation and folders are now in menu. (De)Activation has also Yes/No requesters 🙂

Folders window is place which needs lot of work. Only delete works now (also with Yes/No requester).

List of things to do is long as users suggested many things. I probably will not add most of them because so far I did not checked how exactly ApMeFo works but once I will read rest of source code I think that something good will come from it.

And is designing UI simple with Qt? I think that it is — developer does not have to worry what kind of paddings are needed to be used, how to place widgets to make UI conform to style guide rules etc. Once you do design with layout elements application adapts itself to what is available.

Switched from Catorise to ApMeFo

Maemo5 (which is running on Nokia N900) has application launcher which by default lists all entries in some kind of order. There is a way to move icons but when you have too many of them it becomes not comfortable enough to use.

There are few ways of dealing with it. First was MyMenu application, then Catorise got born and some time later ApMeFo arrived on scene. Few months ago I installed Catorise, hacked it a bit (and got my changes merged) and it was fine. Automatic sorting of applications worked fine, there was a way to force icons to be placed in other categories then default given. Someone even wrote GUI for moving icons from folder to another.

But there was also thing which I started to miss one day — no way to create own categories. Or at least I did not found such one. So I asked on IRC one day and got suggestion to try ApMeFo.

Installed, started GUI and WTF!?! Interface was (still is) disaster. Uninstalled it but promised to get back to it after vacations. And I did. I even keep it installed and use it. But let’s start from beginning.

How did I moved from Catorise to ApMeFo? First made a backup of setup so I could check which application was in which category. Then used ApMeFo to create basic folders and added one app into each of them. Next step was in ViM where I edited all sub menu files to contain entries from Catorise setup, edited order, moved some into other categories.

Now I am waiting for ApMeFo author to return from his vacations as I would like to improve UI a bit but sources present in ‘Extras’ repository are not complete (files are generated from *.ui files saved by Qt Designer).

Today is GPRS day

I wake up quarter past 6 in the morning. Some time later went to my desktop to check does something happened during night. Usually it means IRC highlights or new emails but today it was something other: network outage.

OK, I told — there are other things to do like buying train tickets, making few calls, breakfast etc. But I returned home 2 hours later and situation did not changed. Cable modem still blinks with “DS” led… After call to isp (UPC) I got information that there are some modernization works in progress and will be ended at the end of hour. But hour later it was still “at the end of current hour”…

As I had to be at work I took my Nokia N900 from pocket and launched X-Chat to give network outage information to my coworkers. And started to think how to fix situation…

Lack of sleeping seats in train forced me to change train so I will take my laptop with me to be in contact during trip. So I had to learn how to use N900 as modem anyway.

So how to do it? Thanks to blog post by Marius Gedminas I had easy way. As I prefer to not have cables hanging and like to have more battery power I had to limit myself to BlueTooth.

Nokia N900 side: installed “bluetooth-dun” package which starts “dund” so “Dial-Up Networking” appears in list of offered services.

Desktop side: BlueDevil detected phone but handles only OBEX and Audio profile ;( Thanks to one of comments on Marius’s blog post I installed “blueman” and used it to connect to N900/DUN service. This allowed me to use NetworkManager to connect to internet.

Laptop side: Also BlueDevil and “blueman” are installed but I did not used them. Instead I altered default routing and got crazy setup: laptop -wifi-> router -ethernet-> desktop -bluetooth-> n900 -gprs-> internet.

Setup works properly. Modem still blinks with “DS” led…

Qt under Maemo is pain to develop with

I have my own Protracker module player written for Maemo5. I used Qt because I am familiar with it and like it. But Maemo5 makes simple things harder…

First thing: which version of Qt? Yes — there are two of them:

  • 4.5.3 which was ported by community, does not follow Maemo5 look & feel but is present on each Nokia N900 by default
  • 4.6 ported by Nokia, follows Maemo5 look & feel as much as possible but present only in extras-devel repository

I used Qt 4.6 because of proper look and working Phonon.

Second problem: moving API. Ok, I know: it is extras-devel so not safe for devices but why I have to rebuild application after each “apt-get update/upgrade” cycle? First it was removal of QMaemo5KineticScroller, then rotation code changed.

Rotation is 3rd problem. In recent packages there is support for automatic rotation without any code other then setting window attribute for it. It is even documented. But it does not work — even in official example. From one commit to qt/maemo5 repo I got a feeling that automatic rotation needs to wait for next firmware update 🙁

Good thing is that my application is small so adapting to changes takes small amount of time. And I hope that PR1.2 will finally give working Qt without many changes.

Maemo -> MeeGo

During last few days I was offline for most of time. Those who follow me on Twitter noticed that I was traveling. Imagine how surprised I was when I read about Maemo + Moblin -> MeeGo movement.

First I thought that finally Nokia decided to get rid of terribly maintained base system used for Maemo5 in favor of something working. But wait… Maemo5 is already buried — Maemo6 is on a way. But wait… what is Maemo6? MeeGo rather etc, etc, etc…

After some reading (on N900 by GPRS mostly + some public hotspots) it looked more clearly but added new questions. What about Nokia N900 support? Will it be added by vendor and supported or rather let community do it? Done by company would be better as this would obligate them to keep development alive (and merge kernel stuff into mainline).

One is sure: MeeGo will bring many changes. Base system will be updated (good), packaging will be changed to RPM (not so good but acceptable), Qt instead of GTK+ (good), less Nokia developers (very good). Too bad that whole rush to get it done before MWC made few things unclear and that there is nothing to download to play with. There is no information how much code will be free and open (Maemo5 has lot of closed components) and what is a policy for closed components.

What do I feel after reading blog posts, mailing lists? Time will show. Looks like N900 can have nice future, new applications backported from MeeGo but for it we need to wait as for now nothing is known yet (no code to look at).

MDBus2 for Maemo5

During FOSDEM I attended few talks in Openmoko devroom. During one of them Mickey ‘mickeyl’ Lauer was using his ‘mdbus’ tool to inspect and play with DBus services and methods. As tool looked interesting I decided to try it.

Same day I played a bit with it on Nokia N900. Results were nicer then with using “dbus-monitor” or “dbus-send” but speed was a bit slow (due to Python used). But there was a hope: Mickeyl already started rewriting “mickeydbus” in Vala which should give speed boost.

Yesterday I built “mickeydbus2” for Maemo5 using OpenEmbedded (more about it in next posts) and played with it. Few bugs appeared, but I fixed some, Mickeyl did rest and coded few improvements.

But what this app really do? It has 2 modes basically: listener and method inspector/caller. Example listen session:

Nokia-N900-42-11:~# mdbus2 -sl
[SIGNAL] org.freedesktop.DBus.NameAcquired  /org/freedesktop/DBus  org.freedesktop.DBus
( ":1.928" )
[SIGNAL] com.nokia.mce.signal.tklock_mode_ind  /com/nokia/mce/signal  :1.8
( "locked" )
[SIGNAL] org.freedesktop.Hal.Device.PropertyModified  /org/freedesktop/Hal/devices/platform_slide  :1.12
( 1, [ ( "button.state.value", false, false ) ] )
[SIGNAL] org.freedesktop.Hal.Device.Condition  /org/freedesktop/Hal/devices/platform_slide  :1.12
( "ButtonPressed", "cover" )
[SIGNAL] org.freedesktop.Hal.Device.PropertyModified  /org/freedesktop/Hal/devices/platform_kb_lock  :1.12
( 1, [ ( "button.state.value", false, false ) ] )
[SIGNAL] org.freedesktop.Hal.Device.Condition  /org/freedesktop/Hal/devices/platform_kb_lock  :1.12
( "ButtonPressed", "cover" )
[SIGNAL] com.nokia.mce.signal.tklock_mode_ind  /com/nokia/mce/signal  :1.8
( "unlocked" )
[SIGNAL] com.nokia.mce.signal.system_inactivity_ind  /com/nokia/mce/signal  :1.8
( false )
[SIGNAL] com.nokia.mce.signal.display_status_ind  /com/nokia/mce/signal  :1.8
( "on" )
[SIGNAL] org.freedesktop.Hal.Device.PropertyModified  /org/freedesktop/Hal/devices/bme  :1.12
( 2, [ ( "battery.reporting.current", false, false ), ( "battery.charge_level.percentage", false, false ) ] )
[SIGNAL] org.freedesktop.Hal.Device.PropertyModified  /org/freedesktop/Hal/devices/platform_kb_lock  :1.12
( 1, [ ( "button.state.value", false, false ) ] )
[SIGNAL] org.freedesktop.Hal.Device.Condition  /org/freedesktop/Hal/devices/platform_kb_lock  :1.12
( "ButtonPressed", "cover" )

Asking for bus and methods:

Nokia-N900-42-11:~# mdbus2 -s org.bluez
Nokia-N900-42-11:~# mdbus2 -s org.bluez /com/nokia/MaemoTelephony
[METHOD]    org.freedesktop.DBus.Introspectable.Introspect() -> ( s:none )
[METHOD]    com.nokia.MaemoTelephony.SetCallerId( s:none ) -> ()

And there is also interactive mode with tab completion:

Nokia-N900-42-11:~# mdbus2 -i -s
MDBUS2> org.bluez /com/nokia
/com/nokia                 /com/nokia/MaemoTelephony
MDBUS2> org.bluez /com/nokia/MaemoTelephony
[METHOD]    org.freedesktop.DBus.Introspectable.Introspect() -> ( s:none )
[METHOD]    com.nokia.MaemoTelephony.SetCallerId( s:none ) -> ()

How to get it on your N900? Enable “extras-devel” repository and install “mdbus2” package. Report bugs, send us fixes, ideas, improvements. Git tree is available.

Maemo5 and (lack of) navigation

Year ago when I was going to FOSDEM I took my Nokia E66 phone preloaded with Belgium maps to not get lost in Brussels. It was working quite good. This year I took Nokia N900 as the only device to use (no laptop, no other phone) and BUG to show something.

How did N900 worked as navigation device? Terrible! The problem started before travel. I installed whole set of map applications which were available:

  • Ovi Maps
  • Maemo Mapper
  • Maep
  • Mapbuddy
  • Navit

Only first one had support to preloading map data (by using Nokia Map Loader under MS Windows). Maemo Mapper had such functionality in OS2008 but newer version has something totally broken. Navit required use of extra tool for conversion but after looking at UI I decided that will not even try. Maep and Mapbuddy always fetch from network so roaming costs would kill me.

So I used Ovi Maps as less bad then others. Lacks of offline POI support suxx, lack of adding own ones suxx even more as in Symbian version I just added few interesting places at home and used them during walking on streets of Brussels. Nokia needs to spend lot of money and developer time if they want to make it usable.

So software was more or less disaster but I managed to get to the ‘peeing boy’ so (after seeing’ peeing girl’ year ago) that part of tourist attractions is done. Would be nice to have some way of preloading AGPS data as without network connection it takes ages to get fix.