What are Nokia up to though? Well, Pekka Kosonen sat down with a group of developers at the recent Over the Air conference to talk about Qt and where it fits in with the Symbian Foundation plans, and the wider impact it will have. The main point is simple... Nokia realise that they cannot succeed without the "cool apps" that third party developers put out, the apps that "consumers are looking for".
Video demoing Qt "Tower" technology Preview for Symbian
Thus a key part of Nokia's strategy is to have a good offering for the developers. Here it is important to understand that Nokia are taking a three tiered approach. The first is through their service layer, which enables developers to build on top of Ovi offerings, such as mapping and messaging. Nokia will do this by providing access through programming API's, which will enable developers to build solutions on top of the data and services in the Ovi ecosystem. Second is the apps layer which, as well as standalone applications, acts as an enabler for the service layer. The key focus here is going to swing heavily behind Qt and Web Runtime (WRT). Flash and Java will continue to receive support as third party runtime engines. Of course, you can still code natively in Symbian at the platform level, which sits alongside Nokia's offerings for Linux (Maemo) and the Booklet (Windows) range of devices. Crucially, the app layer (Qt) will still be able to call on the platform level to achieve more complex tasks - you'll be able to combine Qt with Symbian C++. The relationship between the two will change over time, notably when Symbian switches to a Qt-based UI layer.
Nokia believes that they need to answer developers' primary concerns of "how to make money by selling applications". Much is made of the market opportunity Nokia's scale gives to developers, but in talking to existing developers on other platforms the general attitude seemed to be "get your house in order – once things change we can talk again". Therefore the change to Qt and WRT (as a cross platform application framework) partly reflects the current attitudes around the difficulty of coding natively in Symbian when compared to other platforms. This helps explain the decision to buy TrollTech, as the first step, then get Qt, as an apps layer, into the mobile platforms. The underlying idea is to provide developers with a fast and easy environment to develop in. "It was easier to buy, as we're not the greatest API developers in the word", pointed out a laconic Kosonen with a hint of humour.
So why go for Qt and not any of the other languages? Because Qt is more than just another runtime – it's a fully cross platform application framework. It does not have the performance and sandboxing (secuity restrictions) issues that are commonly associated with runtimes. The Qt modular class library provides a significant amount of cross platform functionality including database, GUI, browser (WebKit) and much more, which means that many common programming requirements can be met within the Qt framework. This is currently being extended with the Qt Mobility APIs which will bring mobile use cases (e.g. sending SMS) within the Qt framework. Furthermore, Qt also enables you to combine native code with Qt code, thus, in theory, offering the best of both worlds. In other words Qt can call on (use) native APIs when something is not available within the Qt framework.
While Qt will not, in most cases, result in a write once, run anywhere model, it does greatly increase the number of commonalities between different platform versions, thus significantly decreasing development costs. Furthermore Qt is, arguably, amongst the best placed of current solutions to address the hybrid development that we will see emerge as web and native applications merge together.
Example Qt application running on a Symbian phone and KDE. Source: D.C.T.W.Y.C.D.T Blog (recommended reading).
Another key advantage for Qt is that is a mature environment, which is already being used by developers. The chances are you are already using software (Skype, Google Earth, VLC, Adobe Photoshop Album, Last.fm player, KDE) that is powered by Qt. As a relatively modern application framework, it leaves behind a lot of the legacy conventions that have made Symbian's C++ hard to adapt to (if you're used to the conventional approach to C++). Nokia also hopes that it will be better able to entice desktop developers to become mobile developers if it enables mobile development through a familiar framework.
On Symbian, Qt will, intially (Symbian^2 and Symbian^3), be available alongside native Symbian C++. However, with the release of Symbian^4 phones, Symbian's 'native' application and UI framework will be Qt-based. This will replace the existing AVKON framework. However, it is very important to note that the large majority of Symbian APIs (native code) are not related to AVKON and therefore will not be affected; they will continue to be available as before.
A rough estimate suggests that, by the time Symbian^4 is mature, some 10%-20% of use cases will still require some Symbian native code, so Symbian C++ will always be required. However, developing applications that are fully coded in Symbian native code will become more of a 'samurai sword' technique that will only be pulled out when it's really required. If all you need is the butter-knife of Qt then that's fine. Remember, the key is for Nokia is to get more developers onboard and create a comfortable working environment for all. By focusing on Qt (together with WRT), they can deliver that.
These are the sort of things that will hopefully make developers take another look at the largest addressable smartphone platform on the planet, and keep Symbian powered phones at the forefront of the innovation race in the mobile space.
-- Ewan Spence, September 2009. Portions by Rafe Blandford.
Further information related to the Qt Everywhere presentation is available here.