My last week’s post about how Nokia’s plans to ship 50 million Symbian^3 devices can lead to a major fragmentation among Nokia devices, running 5 different OS flavors at the same time, sparked quite a discussion. A lot of Nokia experts and fans chimed in, to tell that there’s one major thing I missed, that will put all my fragmentation fears to naught.
That thing is QT – a cross-platform application and UI framework, as Nokia calls it. According to Nokia watchers – QT is that magic sauce, that will bring all those fragmented Symbian^1-Symbian^4 and Meego platforms together. The best explanation of what QT is, and how it is supposed to work, was given in the comment area of the original post by Marcus Christopher McFann from Symbian Freak and Maemo Freak. Here are the relevant parts of his comments:
To understand how Qt will work, you must understand what it is. Every OS has APIs, or interfaces to access certain functions and hardware, like a location API or camera API. This is the way developers connect to the device via software. While OSes are different, the API list of advanced systems are usually similar and work in similar ways, just without compatibility between each other. To explain it generally in my informed but certainly non-developer way, Qt is like a universal translation layer that can be made to connect to ANY APIs of ANY OS to which it is ported to. It connects to the native code in a way that causes no major loss to system resources.
So right now, Qt is just on Symbian and MeeGo officially, and has community provided unofficial ports to WebOS as well. So any application written in Qt can be packaged for the OS (as a .deb, .rep, .sisx, exe. or other compatible file type) and work the same as if it were written using native code.
This is nothing new. Remember, on desktops, we already have Qt, Flash, Adobe AIR, Java, and other types of apps that work on any major OS. We know Windows APIs and OSX APIs aren’t alike, but similar. So obviously, these technologies are proven years ahead of today’s foray into mobile, and Qt’s cross platform is able to translate multiple different “languages”, or code ecosystems, with success. Just as Java works on all desktops and most basic mobiles, so the same for Qt devices, only Qt isn’t actually a runtime, but a translation layer to native code. So instead of writing complex Symbian C++ code, just write simple Qt code, and it connects to the native runtimes for you, regardless of OS.
Now the problem I had with your article was fragmentation. The reason why is because it is a fallacy. S60 5th, S60 3rd, S^1, S^3, S^4, and MeeGo are akin to Windows XP, Vista and Windows 7. There are slight UI differences, but the core of the OS is the same, and most of the APIs are the same. And all Adobe AIR, Flash, Java, and Qt apps work the same, don’t they? Skype works the same. Google Earth, same thing. VLC is a mainstay on them all, and the same version. Are those OSes fragmented? Of course not.
All the Nokia supported OSes support the current implementation of Qt. As long as they do, these OSes remain a UNIFIED ecosystem using the same toolkit to make the apps. Instead of heavily relying on Symbian SDKs and MeeGo SDKs, you use it as a reference mostly, and rely on the Qt SDK. Qt is the centerpiece, not the OSes. Any OS or device supporting Qt will run apps designed with it. That simple.
Since graphical scaling is at the heart of Qt, there is little worry of aspect ratios and resolutions. And since it can be ported to other OSes, it can also be maintained for those OSes to stay on the latest version, extending the life of the past OSes. This was Nokia’s plan all along. Remember, they went from 2nd Edition to 3rd Edition with a full code break, and abandoned all of theprevious apps, and zero apps for the new version of Symbian at that time.
A good example of how it’ll work is shown in the Java based Limewire Gnutella P2P client, as well as Tweetdeck. When these apps are created, updated, etc., ALL OSes benefit. From Windows 98 onward, all using the same install package, we can see that with proper support of the Java and Adobe AIR systems/frameworks, we eliminate developer fragmentation, not create it.
The reason applications haven’t been as prevalent as we’d like is up until now, the only way to get the Qt support on a device was to load the libraries yourself. If you coded an app, you could include the necessary Qt libraries needed in your install package, but it would create a large install file, something not quite optimal for various reasons.
Also, Qt was still in beta for the longest, and just recently became hardened. It is now in final form and ready to be part of the OS, not just installable libraries like Python in the past.
Now that devices are shipping having all of the libraries installed, and those devices are mass market targeted devices, developers can be assured that the Qt commitment is solid. Expect to see other OSes adopt Qt to connect with their native platforms, especially those with paltry runtime support, which is everyone but Symbian and MeeGo.
The only one I expect WON’T adopt any technologies to make development easier across multiple OSes is iOS. Android likely will support Qt, since they already embrace XCode and other cross platform technologies. RIM’s main toolkit is based on outdated and inefficient Java technologies, and may benefit from a native platform for developers based on C++ or another technology, and Qt could accelerate app development should they do so. WebOS’ developer community has already done an unofficial port of Qt for its environment. Microsoft supported Qt in WinMo/WinCE, and could add it again down the road in WP7, but that is just speculation on my part.
With all of these OSes supporting cross platform technologies, and Qt being the only one that crosses mobile and desktop OSes and x86 and ARM platforms, it has to intrigue any developer looking to reach a mass market. 100% of all addressable markets and device architectures is a good start. What can iOS and Android get you? Not there, that’s where.
I forgot that Adobe AIR is also a cross platform framework/runtime that crosses mobile and desktops, and both architectures, which is true. But AIR isn’t as resource efficient as Qt, nor is it a free open source toolkit, but run entirely by Adobe. But both are good tools. I’m for supporting as many tools as possible, since devs have preferences, and prefer to not have to relearn how to code for a platform. Supporting common tools that all devs know is Nokia’s forte.
I agree with most of the above – QT can become the tool that overcomes Nokia device fragmentation and offers developers a great working environment to create their apps in. My problem and fears are with Nokia’s execution. I’ve been hearing about how QT will change things for Nokia for 2 years now. QT has been shipping on Nokia Symbian^1 and Maemo devices for more then half a year. And I’m still waiting for any big interest or enthusiasm towards QT from any significant number of developers. And all I see for now is skepticism and enthusiastic embrace of other platforms.
Also, those comparisons to unified development environments/runtimes on desktop are not at all encouraging. The may have obviously been “proven years ahead of today’s foray into mobile“… But, despite the unified “write once run anywhere” application development nirvana promised by Qt, Flash, Adobe AIR, Java- for years – for some mysterious reasons, most of available software applications today are still written natively. Flexibility of development and hardware limitations come to mind as one of possible reasons. And they are much worse in mobile today.
The history of cross platform development tools on desktop tells us, that the hope that QT will become the development tool of choice on all the competing platforms, will remain an elusive dream for a long time yet. The best we can hope for the foreseeable future, is that Nokia will finally make it work across all of it’s own platform and devices for real. And that that once written, QT app will work across all Nokia devices that have necessary hardware, only with minor tweaks.
Yes, as Symbian Foundation’s Brendan Donegan told me, there is some evidence that QT is already there and is useful now – try (Symbian^1 apps written in QT) Shazam, Wikitude, Skype, AccuWeather, WordPress, and that’s just to start with… And then, with N8 and other Symbian^3 devices on the way, any developer working on a new Symbian app will not be too wise doing that with the old tools. So more and more developers should start switching to QT real soon now.
Those are the hopeful signs. Against the years of milling around, empty promises and botched execution. I hope that this time, things are coming together for Nokia, and the company will finally start it’s long awaited turnaround.
Well, we know one way or another within the next 6-12 months, anyway.
If you liked the post, you might find these interesting too:
- Apple relaxes app development guidelines
- First handsets running Symbian Foundation’s open-source OS out in 2010
- GetJar gives developers option to measure conversion rates of apps on all open platforms
- Nokia launches Ovi SDK Beta, new Ovi APIs
- Nokia buys mobile analytics company Motally