Saturday, November 26, 2011

New to Harmattan C-OBS and apps.formeego.org

*Disclaimer: I am not a developer, hacker, or programmer*

Part of the agreement made when I received the Nokia N950 developer device from Quim Gil was to get an application ready for Harmattan in the open source App Store, apps.formeego.org.  Although I had the guts of MaeFlight ready a few months ago in QtQuick/QML, I held off on packaging it until there were some applications in the Community App Store.  Not being a developer, I hoped to learn how others faired overcoming the wrinkles in the processes before I ran into them.

My application, MaeFlight, is a simple utility that fetches the status of your airline flight, given the airline code and flight number.  It is a nicer looking version, with simpler guts, of the Maemo 5 version I had coded close to 2 years ago.  I decided to use QtQuick and QtCreator, these being (in theory) the most straightforward paths for Harmattan development.

QtCreator and QtQuick are a good combination of tools for Harmattan development.  I could code within QtCreator, and deploy to my N950 to test with a few clicks of the mouse.  There were a few hiccups with QtCreator that I learned to work around.  One annoying one was when it could no longer find the N950 via WLAN.  Resetting that connection solved that issue.

After I had the most basic application ready to distribute via apps.formeego.org, I started a painfully long attempt at getting MaeFlight's sources built by the MeeGo Community Online Build Service.  The first step in this is to get the source into a format suitable for the COBS.  The MeeGo wiki and Jaffa's wonderful mud2 utility proved very useful here.  The mud2 utility creates the 3 files you require for uploading to the COBS.  However, after carefully following the instructions in the wiki, my package would continually fail the build process.  I found out via trial and error that the Changelog and Desktop files had to contain version numbers in them that agreed with the version number that mud2 assigns to the source packages.  Once I changed that, the build process worked, and the COBS built a .deb for my application, complete with its own repository!

I logically assumed that since the build process worked, my next step was to upload the package to the testing repository of apps.formeego.org.  This is a straightforward process, and well documented in the MeeGo wiki. 

However, once MaeFlight was in the apps.formeego.org testing repository, it would install to my N950 from the Apps Client, but would not deploy the desktop file and launcher icon.  I reached out for help on forum.meego.com, and found a suggestion from user rlinfati that seemed to work.  It involved additions to the top of the QtCreator 'pro' file.  This seemed to be the answer, as MaeFlight was then able to be built by COBS and be deployed to the device correctly from apps.formeego.org client application on the N950.  Success!

I have observed some peculiar things with the MeeGo COBS and the apps.formeego.org client:
  • COBS fails builds sometimes, but then when restarted, the build works fine.  Perhaps there is a good reason for this, but it doesn't inspire much confidence in a novice like myself.
  • The apps.formeego.org client application on the N950 has a mind of its own sometimes.  For instance, MaeFlight has shown up multiple times at the same version, and has failed to install at all, in spite of the .deb installing correctly from my personal MeeGo COBS repository.  I am not sure why this is the case, but it also makes me feel unsettled.  The current v1.0.1 of MaeFlight built properly on COBS, installs fine from the .deb in my repository, but does not install from the client application on the N950 !

At the end of the day, I now have a process which can work, if the stars align themselves properly.  But, I think it should be easier.  That will hopefully come in due time. 

As for MaeFlight, it has proven to be an interesting experience for me in learning the ropes of open source development using QtQuick, QtCreator, and COBS. 

Digg Technorati Delicious Google Bookmark slashdot