This is not a copy from wikipedia, but an unwrapping of evolution of Qt on Symbian from a perspective of a Symbian developer (now a Qt developer). This week marks the release of Qt SDK 1.1 with QtQuick support and QML apps being accepted to ovi store. Follow me for a short trip into my memory lane …
I am a Symbian developer at that time. Its a time when we used to struggle couple of hours to add simple dialog in S60 ( At least you need to modify couple of files – .mmp, .rss, .cpp ).
At that time Nokia acquired a small company called Trolltech – the makers of the most successful C++ toolkit called Qt. My manager briefed us that Nokia acquired a toolkit to build linux apps. Honestly speaking none of the Symbian devs would not have any knowledge of what is Qt 🙂
First half of 2008
More clarity on what is the role of Qt in Nokia’s arsenal. Again my manager briefed me “They are going to port Qt to Symbian and it will be the API for Symbian development.” and asked me to start investigating in Qt. I started working on Qt, appreciated it. I loved the simplicity and consistency in Qt API.
Pyramid, Temple, Garden …
By then Qt is quick enough to release tech previews for S60 called as pyramid, temple, garden. It even ran on Samsung OMNIA phones. I was given the task of exploring Qt on Symbian. Initially I took a module in our product which required using Browser API and reacting to browser events like page load ( a kind of hybrid approach ). Since I developed this module in Symbian using Symbian’s BrowserControl API, I thought I can get a good assessment of Qt’s capabilities. I finished the port in 2 weeks including learning QtWebkit classes. The day has come to give a code walk through and a brief presentation of this experiment. To everyone’s surprise my Manager and myself were unable to believe that we completed it in less than 200 lines of Qt code! We looked at each other with a mix of happiness and confusion because the same part took more than 650 lines of code when using Symbian’s BrowserControl API, though the task is very simple! We took our sweet time to come to the fact that Qt is productive and powerful. I ported some more modules in different areas like UI, event handling etc for POC purpose. I enjoyed programming in Qt and soon became one in the millions of Qt developers.
Come 2009 – Qt 4.6
Year 2009 marked the release of Qt 4.6 which I feel is quite a milestone. It marked the introduction of Symbian/S60 support. It also introduced Animation Framework, Qt State machine framework, improvements in Qt GraphicsView framework, Achor Layouts – which paved as fundamental building blocks of now famous QtQuick. Also I should mention about Qt Mobile Extensions, which are temporary work around for QtMobility project. Qt introduced Qt Creator – an unified IDE for developing Qt apps, till then we were using Eclipse with Qt plugin!
By this time, Qt guys used to talk about a project called Kinetic. My lead engineer attended a session on Kinetic at QtDevDays, he came out and said to me ” These guys are creating a fantastic product, it will rock! “. By the way, Kinetic is a broad project and one of the result is QtQuick/QML aka QtDeclarative.
2010 – the year of stability
Qt 4.7 was released in 2010. I call this the year of stability because Qt concentrated in improving the Qt for Symbian stability in various areas. It also marked the release of Qt Creator 2.0, I have seen it as a baby, now it became a healthy adult :). QtMobility is also released which proved to be quite useful.
Apart from Qt’s stability there is lot of uncertainty on how Nokia is shaping up its upcoming Symbian^4’s application framework using Qt. It is codenamed Orbit. Basic objective of Orbit is to build a S60 (AVKON) replacement using GraphicsView. It includes all kinds of mobile specific widgets. Classes in Orbit are named as HbPushButton, HbApplication etc (yeeek, I truly hated the naming convention, Hb stands for Hybrid it seems). Meego group started working on another framework called DirectUI, its classes used to start with “Dui” and “M”. The point of confusion is that – when Qt is a cross-platform framework, why do you need two different frameworks with different APIs? Does not make sense. Some said the best framework wins but neither won. Instead Qt/QtQuick is declared as the bridge between different Nokia platforms.
2011 – #feb11
Feb11 Nokia announcement is a bomb in belly for many Qt developers. Apart from digesting that bomb, I was given a task of exploring QtQuick for UI development. So I thought of taking a fairly good use case which has all the requirements of today’s mobile UI like smooth scrolling, fast response to touch, quick loading etc. To my surprise I did that widget in less then 60 lines of QML code – which would take couple of classes and few hundred lines of code if done in Qt Widget/ Qt Graphics View way. Qt surprised me again! QtQuick/QML redefines the way UI is developed for handhelds (especially Symbian).
Though this great phase came at a time when Symbian got an expiry date, this is the day I have been waiting from 5 years, where writing apps and especially good looking UI in Symbian is a walk on cake. But who would walk?