All the Qt news from Nokia Developer Summit (NDS 2010)!

 

Simon Lucas from Enough Software won a ticket for Nokia's annual developer conference Nokia Developer Summit (Thanks to Nokia!).

As a Thank you note he proposed to share his thoughts about the summit!, and especially on the stream he attended dedicated to Qt development and development in Qt :D 

Seat down and go through the content of the 2 days of conference seating comfortably in front  of your computer!

 

Nokia Developer Summit 2010 – Technical Stream 1: Qt SDK

“Nokia is back” was the message Nokia spread at the opening key notes of the Nokia World and Nokia Developer Summit (NDS) 2010 in London. But this statement not only referred to the new devices Nokia introduced to the public in the last couple of months and of course the brand new ones they presented here at the Nokia World. A big deal of this statement also referred to Nokia's new Qt SDK which Nokia branded under a well known credo only put in different words: “Code less, create more, deploy anywhere”.

In the following lines I will try to wrap up all the information around the new Qt SDK I have heard at the NDS. That means I will talk about of course the Nokia Qt SDK and the new Symbian^3 platform. If you haven't heard or don't know what Qt hybrid based applications, Qt smart installer, Qt Mobility, Qt Quick, QML are or stands for this blog entry might be interesting for you.

Nokia Qt SDK

The new Qt SDK from Nokia which is currently available in Version 1.0 and was released about three weeks ago is Nokia's new developer platform for Symbian and Maemo and later on for MeeGo, too. All you need now is nicely packed in one File. That means you don't have to care about installing all the different tools you needed in the past to develop your application for a specific Symbian. People who have already written a program for a Symbian platform know what I am talking about. The Qt SDK 1.0 provides Qt 4.6.3 including Qt Creator and Qt Designer, the Qt Mobility 1.0.2, a Simulator (does not work with native APIs), On-device debugging, a Symbian SDK and more. Only profiling and optimization tools are still missing. But how far does this credo “deploy anywhere” applies to the real world? Actually it is quite simple, every device which has installed Qt is theoretically deployable but more on that later. Right now the S60 3rd and 5th edition are capable to run Qt with a few exceptions . The Qt smart installer will help you with devices that didn't ship with an installed Qt framework by fetching the Qt Runtime when your app needs it on devices that do not have Qt already installed.

As long as you use Qt APIs you should be on the safe side. But as soon as you start using native APIs you will lose the cross platform ability. For what ever reason you have to do so you should have a look at the Qt Mobility project first. The Qt Mobility project addresses these gaps by extending existing Qt APIs or implementing new ones, so check out these two sides for more details. If you have to rely on native APIs but still want consistency on different platforms you should have a closer look to hybrid applications.

Qt Mobility Project

The Qt Mobility project is Nokia's answer to device fragmentation especially on Symbian platforms. It provides Qt API's for the following platforms:

  • S60 3rd edition FP1, S60 5th edition and Symbian^3 (There will be no support for S40)

  • Maemo 5 and the upcoming MeeGo platform

  • Desktop platforms supported for several instances.

Qt mobility is primarily available via Nokia Qt SDK but it is also available independently in form of src and bin packages.

Right now the current features of Qt Mobility in the Qt SDK 4.6.3 are as follows:

Bearer Management, Contacts, Location, Messaging, Multimedia, Publish and Subscribe, Service Framework, Sensors, System Information, Versit.

Mobility 1.1 (very soon, probably next week):

Document Gallery, Feedback, Maps/Navigation, Landmarks, Camera, Organizer, Service Framework (out of process), Qt Quick Support.

Mobility 1.2 (Q1 2011):

NFC (Near Field Communication), Bluetooth, Messaging API IM support, Support for MeeGo platform.

Mobility Roadmap (tentative):

Augmented Reality APIs, Voice framework, Face APIs (for face recognition), Presence APIs.

 

For help check out these links:

Qt Documentation: http://doc.qt.nokia.com

Qt Developer Network: http://developer.qt.nokia.com

IRC: #qt and #qt-qml on irc.freenode.net

And of course the usual channels as references, examples demos, forums, blogs and mailing lists.

 

If you want to get involved in the Qt Mobility project you have the following options:

Suggestions and bug reports at http://bugreports.qt.nokia.com/

Follow changes in the source code at http://qt.gitorious.org/

Qt on Symbian^3

Now let's talk a little bit more about the new Symbian^3 which is used in the Nokia N8. “Familiarity of the new” were the fancy words Nokia used to indicate that the new Symbian now has closed the gap to other smart phone OS which mainly mean support for gestures and multi touch I guess.

Here is a general Workflow of the developing process for the new Symbian platform suggested by Nokia:

Nokia Qt SDK w/ Symbian target >> Add code >> Run on device >> Debug on device >> Add Mobility >> Tweak project files >> Add Smart Installer >> Distribute.

Here you can see the Qt smart installer I have mentioned earlier. This will ensure that the correct Qt version will be installed on the targeted device so you as 

Nokia N8

a developer doesn't have to care about that.

By the way Nokia will do the signing for you automatically and free of charge when submitting an App to Ovi Store. This also true for Java applications. There is no way to sign your app without Ovi Store. If you need signing for third parties you have to contact Nokia directly.

But let's also hear from professionals who are actual working with Qt and and are not  as biased as I am since Nokia gave me a free N8 at the NDS :D

There was a very interesting presentation by Futurice, a company who has several years of experience with Qt. Here are some advices from a professional developer's point of view that you as a developer should be aware of when using the Qt SDK to target multiple platforms.

Physical devices differences:

It seems that there are only 4 different platforms right now (Maemo, S60 5th Edition, S60 3rd Edition and Symbian^3), but you have to be aware of the differences of the physical devices, for example S60 3rd Edition FP 1 devices that only supports Landscape and devices that has landscape and portrait mode. So in the end you will face 7 different types of devices : Maemo, S60 5th Ed: 640x360 Portrait & Landscape, S60 3rd Ed. FP1: 240 x 320 Portrait & Landscape, S60 3rd Ed. FP1: 320x240 Landscape, S60 3rd Ed. FP2: 240x320 Portrait & Landscape, S60 3rd Ed. FP2: 320x240 Landscape, Symbian^3: 640x360 Portrait & Landscape)

File system differences: Since you have to deal with two different OS, the Symbian and the Linux based Maemo you have to be aware of where things are stored. For instance on Symbian user application settings would be stored where the application is installed, on Linux based systems it would be somewhere else.

Access to the hardware:

As mentioned earlier in the Qt Mobility Project you have to be aware of that some of the hardware like the camera is inaccessible through Qt API. Hardware access will be improved with Qt 4.7.

Qt default Behavior:

Be aware of if you us Qt designer with the standard dialogs you will end up doing a lot of customizing. Qt GUI elements will adapt to the Look & Feel of the environment never the less there are exceptions. To summarize it when targeting multiple platforms you will be better off using custom dialogs instead of the default ones.

Qt implementation bugs:

Since Nokia Qt SDK is quite new (3 months old) you have to be especially aware of bugs like the blur graphics effect which renders differently or not at all depending on the platform.

Nevertheless the experts conclusion is that Nokia has managed to pull out a quite impressive IDE in such a short time by adding plenty of new value to Qt framework for professional developers.

Qt and Graphics

Qt provides you with many options how to create your GUI. So it might be a little bit daunting for developers who are new to Qt. Here are the options and some guidelines when to use which one:

Traditional controls

These are the ones you get when using the Qt Designer. They are high level and customizing is only possible to a certain degree. Exactly the same code as on desktops.

QWidget and QPainter

Low level, provides lots of operations (fill, line, text, polygons, gradients, composition, paths, etc.), can be hardware accelerated.

QGraphicsView

Scene based, medium level, integrates with QWidgets, scope for optimization can be daunting.

QGLWidget

Very low level, basic setup, you do the hard work, complete control over GL.

Qt Quick (not released yet, will be introduced with Qt 4.7 probably next week)

Qt Quick is Nokias new Qt User Interface Creation Kit for making slick, fluid UIs. It provides a lot of new features like QML, QtDeclarative C++ classes, Qt Creator tool, Declarative UI language (JavaScript, SVG, XHR, HTML5 WebDB etc.). For more details see http://wiki.forum.nokia.com/index.php/Quick.

The approach/approaches you should use will depend on various factors.

For instance if you only want to write a small personal app targeting a single platform using the traditional controls would be a good start. But if your UI is more complex and you want to develop for different platforms QWidget, QPainter or QGraphicsView would be the right choice. If you already have an existing code base & assets QGL Widget might be the right one for you. For developers who want to target multiple platforms but are depending on native code hybrid applications might be of help. Instead of using Qt widgets you can design your UI in a full web view that is build on top of webkit. Simply put use web development techniques to create the GUI and Qt C++ for your business logic (hybrid development) . And if this is still not enough variety for you feel free to combine, match or mix the different techniques with each other.

 

Final (side) note

Since I attended a round table with a topic on push service let me talk at the end a little bit about Nokia's new push notification service which is still in beta. Yes there will be a push service and developers can already apply to it (but I don't know where, sorry). Right now there are no specific charging plans. It depends on how users/developers will take usage of it were the kind of words the guy from Nokia used. One channel to push them all, even Nokia plans to move their services to this one channel. The reason why Nokia combines all services into one channel is efficiency. In that way battery life should be improved. Developers should be aware of it and implement a setting where the user can turn on/off the push service since Nokia does not provide push service configuration for a specific application on the device.

 

Thanks again to Simon and Enough Software for this great summary!