Monday, April 8, 2013

Planet MeeGo day #1 - The Dark side of N9, or : trust your instinct, n00b!

I have been tricking around with N9 for a while now.
I must say.
This is a great Phone (if we consider it should have come out back in 2010/11)!
This could have been a great OS!

So I have developed so far two applications, LINKer, and BWizz (both are available in free and paid versions from OVI/Nokia store, btw).
In chronological order, they manifested as :
  1. BWizz, a bookmark editor.
  2. LINKer, an utility which gives you access to any file on your Phone, directly from your home screen (which originally only allows for Apps / Applets / URL bookmarks).
Whilst the first one is a "normal" QML-based application, the second one goes a step further, and dives a bit more into the wreck of MeeGo, specifically in the Share-ui capabilities of the OS (which I personally like as a concept, but is nothing new, as Android and now BB10 has as well).

Somehow, all this time I had been working with MeeGo, it felt as if I was working with a huge woolen ball;
twisted, complex, confused. The main reason for this feeling is most likely due to the fact that I could never get ahold of the "big picture". Already documentation is so fucking scattered around that your stamina will drop! There is harmattan-dev, when it is not offline, that is, and then there is the MeeGo Wiki (with it's own forum), the Maemo forums, the Qt documentation, some blog here and there (including this), the code base on gitorious - which btw is in the end the best resource for everything, really; the power of open source was strong in this OS indeed!

You would say with all these sources, the clearance (clearance, mind you, not coverage) about the OS is top-notch. Wrong! This whole scattering causes only frustration and loss of precious time spent jumping from one location to the other, trying to figure out which one is the one containing what you are looking for. For some kind of destiny joke, even Google seems to be obscure  So, if you were looking for information on architecture / QML / Qt, then most likely the Nokia pages in harmattan-dev are by far the better ones. For anything else, and I really mean anything else, everywhere else but harmattan-dev is a better place.
"Thank God there is everywhere else then", you would say. Wrong againg. harmattan-dev is the only place which actually has some structured information (albeit still messy and sometimes very, very vague).
So, whilst harmattan-dev is the normal starting point in your Journey To MeeGo,and is a good strating point,
since it covers every part required to publish a QML / Qt application to the Nokia store, everywhere else is nowhere else. It is a non-place! As you take a leap of faith and decide to step out of this "perfect Nokian Qt + QML" world, in which everything is perfect, but everything almost never works as it should, you will notice the even the normal laws of Googling do not apply anymore! Pages with the most hits for your search terms will not appear on Google's main page anymore! You will find yourself treasure-hunting together pieces of information for a certain topic from the most unexpected locations, and in the end you will still be back at square one because in the mean time the reason for the search will be erased from your mind. And this for every single problem you face. For example, Maemo forums is a great place to find even very obscure information tidbits of various topics. If you know what you are looking for. How do you know that? By trusting your instinct. Because that is the way it has to go.
After LINKer, I felt something was missing. In my decent experienced IT life, I have seen may OS'es, and somehow always managed to get a good glimpse of how they worked and what was going on "behind the scenes" in a fairly fast time. With MeeGo, this was not the case.
 I had made two applications. One on QML (BWizz), which in my opinion was already quite deep (based on Qt Plugins and so on), and the second one (LINKer) based on lower-level Platform services (Share-ui and libContentAction). So by then I had a pretty clear idea of the structure; and I started toying around with various concepts for my third application. For this application, I decided I wanted to make an overlay. An overlay like the notification banner, for instance. And this decision, like some crazy curse, or spell, opened up the dark hearth of MeeGo in front of me. There was no way to find how to make such beast in QML (QML requires a window, which I did not want). So, I had to start looking elsewhere.
After some initial lookaround, it became clear that at Nokia-(Platform) level I would have not found what I was looking for.
There must have been more to it!
So I decided to turn to the Gitorious codebase of MeeGo; as google kept on pushing up these results and as I am a n00b. And there, in all that which seemed to me like a pile of abandoned books, ruins of something that should have been but was not, I started searching through code and code. And guess what? The first thing I noticed, was that there was very little QML. NO QML! What the hell? I told to myself. N9 is supposed to be QML based? So wasnt I supposed to be able to make everything in QML? Where was the shiny and fancy, easy-to-use Nokia world of QML? Where were all the quick components? Why were they not used? Why was here libmeegotouch, meegotouch, contentlib, theming, a complete separate (MeeGo-) widget etimology based on Qt, buried and hidden away? Why did these MApplication, MButton, MLabel, and on keep on popping up? What was this...second personality of N9?
It turned up there was much more than QML. MUCH more than that.