X
Business

Qt: Cross-platform futures in a mobile world

Benoit Schillings, head of tech for Qt Software, talks about Nokia, Mozilla and going deeper than Java
Written by Adrian Bridgwater, Contributor

Benoit Schillings is chief technologist for Qt Software (originally Trolltech). Based in the Bay Area around San Francisco, he sets the direction of the company's cross-platform application deployment product.

Newly renamed after its recent acquisition by Nokia, Qt Software held its fifth annual Developer Days conference in Munich this week. To push its 'write once, deploy everywhere' message, this year's event had its first tracks for business managers, alongside the more normal developers' briefings.

Belgian-born Schillings is bullish about the prospects for his company's technology as the web, desktop and mobile domains continue to align and customers want the same experiences on all. ZDNet.co.uk caught up with him to find out why software engineers should invest their time in developing the skills needed to use the Qt toolset.

Q: Qt's cross-platform application framework claims to provide developers with the power to write once and then allow deployment to many desktops
 and embedded operating systems without rewriting the source code. Doesn't this inherently restrict an application's final form if it is not bespoke-coded for its exact function?
A: Look, a cross-platform framework will never be a panacea, every platform has things it will need to do differently. What we aim to provide with Qt is 95 percent of the core functionality that will be required for an application to be deployed anywhere, whether that be in a Windows, Mac or Linux environment. Qt is sometimes used for Windows programming even when there is no need for cross platform, just for the quality of the framework.

Java promised write once, run anywhere — and gave us write once, debug everywhere. How does Qt's cross-platform promise play out in practice?
When you write an application using Qt it will look and feel like a native application: ie, write a Mac application and it will look like Mac. Java tried to look like Java on every platform and I think we go one step deeper than this.

If you look at the mobile market, manufacturers need to use the best performance platform at all times because if your code takes twice as long to execute, then you will need twice the power and this is a particularly bad thing on a handset. Qt's alignment to C++ as a compiled language means we can provide cross-platform functionality with the speed of C++. What we are saying is you don't need to write in Java for cross-platform functionality; instead, write in C++ for speed, and align to Qt for cross platform.

So would you say you are anti-Java?
No, absolutely not. I'm not going to say negative things about Java because it is very successful in many fields. But there is no universal tool, OK? Let me give you another example; the Swiss Army knife has a great knife, corkscrew, can opener and screwdriver, but the magnifying glass sucks. It's the same problem with those multi-tool infomercial products. You cannot apply one tool to every problem and get a perfect solution.

Your message seems to be heavily channelled towards the 'code and deploy' process. Have 'design and test' been left out of the equation?
When it comes to testing, we do provide tools such as UI validation, memory-corruption checkers and performance-profiling tools, but again these exist...

...down at the C++ level. We also have partners such as Froglogic who provide automated testing tools. From a design viewpoint, you can do quite a bit of design without writing any code using our QtDesigner product.

How is Qt's work with web-facing applications and Mozilla going?
Even though our WebKit product is now the DHTML engine integrated in Qt, we do have a relationship with Mozilla and Netscape which goes all the way back to 1998 when the Mozilla source code was released and we had a team of five engineers writing a complete user interface for it inside a single week.

We do feel that the integration of WebKit in Qt really opens the door for the creation of 'hybrid applications', part DHTML, part Qt, but this doesn't negate the fact that many users of Mozilla/Firefox will want to see a port of their browser on top of Qt, for instance to be able to use it on KDE-based machines. This is the difference in our mind between the 'browser as an application' versus the HTML-rendering engine.

Aside from this week's event in Munich, how will Qt aim to attract users, and what makes your product a good option for developers to invest their time and skills into, compared to any of the other platforms?
In my opinion, picking a non cross-platform environment to work in these days is not a smart option. You need to choose a platform to work with that is capable of evolving as the market and the technologies within it evolve. As a developer, you may want to look for a choice that gives you a large playing field. Qt covers the market from desktop to embedded and mobiles. In terms of how we aim to attract developers; there is no piece of source code on the Qt website that is not fully downloadable for free use under the GPL. So open source has been a superb channel in terms of awareness for Qt, and 30 percent of our customers for the commercial version of our product have resulted from initial exposure to the free version.

Is Qt's move to work with GTK indicative of future integration and cross-group interoperation?
GTK is a great cross-platform widget toolkit, for sure, and it boasts some of the same flexibility that you can find in Qt. But at the end of the day, people like to pitch Qt against GTK and I think that does us a disservice, as we are not merely a graphics engine focused on GUIs.

But look, there is no reason why Qt and GTK can not sit side by side in the market, this is the way modern systems evolve. There will always be a variety of ways and means available to achieve our aims. Some days you need Microsoft Paint, some days you need Adobe Illustrator. You could write a letter in Excel if you absolutely had to. Certain tools work better in certain environments at certain times for certain jobs.

Key players in open source such as Ubuntu leader Mark Shuttleworth are bringing in people to work on Qt development, and want to urge the different component writers to synchronise their release timing and look and feel of their products. What's your feeling about this, or do you instead agree with Shuttleworth's suggestion that poor usability and release synchronisation is hurting open source?
We think this is a good idea, but we think this is quite difficult to co-ordinate in practice. On the other hand, by developing good interfaces between components, we can simplify the consistency across different release schedules and avoid the need to try and have multiple releases co-ordinated for a synchronous release.

Nokia recently acquired your organisation. What's the most significant impact of this move in terms of the way you will develop your technology now?
I think there was initially some conjecture in the media over whether our mobile and embedded derivation Qt Extended would become the sole focus our activities. But Qt for the desktop remains the bulk of our business with around 70 percent of our customers existing in this space. 'Embedded' for us means rugged industrial appliances, 'commercial' for us means products such as printers or even chicken-egg incubators, and then there's 'consumer' — and by this we mean mobile.

What Nokia will bring to Qt is breadth and scope of market. The best way to ensure our product quality and innovation is cutting edge is to expose Qt to as broad a set of requirements and use cases across numerous industries, form factors and platforms as possible. In short, it's good news for cross-platform development.

Editorial standards