From Flash to Qt: different tech, same themes

I’m at the Qt Developer Days in Munich, hearing the latest from Nokia on its cross-platform GUI framework. Qt was originally developed by Trolltech, a company acquired by Nokia, and the Qt folk here still call themselves trolls.

So what are the trolls up to? Coming straight from the Adobe MAX conference last week, I’ve been interested to find that many of the themes are the same: mobile, hybrid web/local applications, and even designer/developer workflow.

The obvious difference is that Qt is a C++ framework and most of the developers I’ve spoken to here use Linux and C++, both rare skills at an Adobe event. Still, it seems that may be changing. “Wouldn’t be good if designers and developers could work on the same project?” said Matthias Ettrich,as he introduced QML, a declarative UI language for Qt. Now where have I heard that before?

An interesting feature of QML is that it supports Javascript as well as layout and state definition; in fact, QML definitions are really Javascript expressions. This means you can program entire applications in QML, though you can also use it purely to define the visual part, and code the rest of your application in C++. A QML layout looks like any other Qt widget to your C++ code.

But let’s get back to the idea of coding purely in Javascript. Ettrich explained how this would enable designers to add logic and state management to applications, without needing C++ skills. QML projects live in Qt Creator, the same IDE commonly used for C++ Qt applications. This echoes how Adobe presents Flash Catalyst, the new “interaction designer” for the Flash platform. Another parallel is that we saw at MAX how Catalyst can be used to create entire applications, provided that they are simple in nature.

It strikes me that QML has the potential to open up Qt to a much wider developer audience, one that never wants to touch C++. It is also amenable to visual design tools, and for those C++ developers who are not 100% averse to such things it is likely to prove popular.