The state of Qt on Symbian

I’ve meant to write this for a long time, because there’s not a lot of information about what it’s like to use Qt on Symbian. There is the Nokia marketing and there are some short developer testimonials, but the situation in the trenches can be different from what gets out in the news.

This blog post is structured in a Q&A format. The questions are those that I would have liked to have had an answer to when I started Qt Symbian development + some others that I have found interesting to think about.

Q: How hard is it for a Qt desktop developer to make the transition to mobile?

A: Qt is almost the same on Symbian as on other platforms. The Symbian-specific idioms (e.g the dreaded cleanup stack) are hidden from the programmer, but there are new UI concepts and new .pro statements and options. The Symbian build and deployment processes are notable differences that normally won’t give you trouble, but when they do give you trouble you will have to interact with the Symbian side.

Q: I have experience with Symbian C++, how does it compare to Qt?

A: Qt is much easier, you can avoid the cleanup stack, two-phase constructors, descriptors and active objects and the native UI classes. I have talked to people that did Symbian C++, Android and iOS dev. According to them, Symbian C++ is ~2x more time-consuming than the other two, Qt is about the same.

Q: What books / tutorials should I read?

A: Unfortunately, there is no one place where you will find all you need, the info is split between Forum Nokia, the (ex)Symbian Foundation, the Qt bug tracker, the Qt docs and books.

Let’s discuss them one by one:

* Forum Nokia hosts a Wiki and the Qt for Symbian section of the discussion boards. This is the best place to ask questions, because Qt Symbian devs and other experienced people read the boards. Some Wiki articles are part of the Knowledge base and contain info that’s not available elsewhere.

* The Symbian foundation websites had quite a few tidbits of info, but AFAIK those aren’t easily accessible any more because the Symbian Foundation has been merged into Nokia. You had the option of asking more technical Symbian questions on the forums there.

* It’s useful to browse the bug tracker to look out for Symbian bugs and their potential workarounds. Once again, some of this info is not available elsewhere (like a known bugs document).

* The Qt docs contain Symbian-specific sections that you must read. Some classes/functions contain platform notes.

* The “Porting to the Symbian platform” book is useful for a Qt on Symbian newbie since it explains differences between platforms, Symbian stuff such as the security model or PIPS and even contains example ports.

Q: How do I set up my development environment?

A: Just download the latest version of Nokia Qt SDK. There’s a naming problem here, because there’s also a “Qt for Symbian” download package, and a Qt SDK for [your OS]. You need the “Nokia” Qt SDK. Silly, I know, but it has gotten much simpler since the beginning where you had to watch a video to get a dev environment running.

Make sure you use the Qt Creator from the SDK, it has some special Symbian enhancements.

Q: What are the biggest problems that I should expect?

A: The look & feel is not completely adapted to Symbian, and in 4.6.3 there are UI bugs that you have to work around. The Symbian .pro options are not documented enough, and you might have to resort to trial and error.

I think that despite all the available comm channels, Nokia still has a communication problem when it comes to developers. I have gotten good results with the Qt bug tracker and by talking to Nokia devs. On the other hand Ovi store support is only done by e-mail for example and you don’t get a case number for support inquiries or a case history.

Q: How cross-platform is Symbian Qt?

A: Right now it’s probably the most cross-platform framework. I have done Symbian apps that run on Windows or Linux, and this was a major selling point for me. The UI must be carefully designed and will probably be different for each platform, but it’s still Qt and you still use QWidgets.

Q: What phones should I target?

A: Nokia has a lot of smart phone models on the market and most of them support Qt. The important difference is whether they use touch screens or not. You can and should target all the touch screen devices without much trouble. Check the phone stats report published in the Ovi newsletter for hints on popular phones.

Non-touch phones are a different story, and as far as I’ve seen there are few Qt apps targeting them. A potential opportunity, but my own experience indicates that Qt is significantly harder to use on those phones. The UI in particular is troublesome.

Q: Is Symbian Qt ready for commercial use?

A: Yes, but there are a few nuissances.

* You have to use a “Smart installer” when shipping on Ovi. This installer will download Qt if it’s not already available on the target devices (a 6-13MB download). The Smart installer isn’t very user friendly and your Ovi app description must contain a warning that the app might download 13MB of data. Needless to say, the customers can be confused by the message and they can even become upset if it’s a simple app.

* Ovi only allows Qt 4.6.3 which has some annoying bugs on Symbian. Use the bugtracker to see if anything you need is not working and check for workarounds.

Q: Can I ship software with Qt now?

A: You can ship either on Ovi store, on 3rd party stores or on your own website. Ovi supports only Qt 4.6.3 at the moment. If you want to publish outside of Ovi, it is very likely that you will need a Publisher ID and you will have to sign your app. The ID costs about $200 and signing costs $10.

Nokia will take care of signing if you publish on Ovi, but you will not get the signed setup package, it is published directly to the store.