Episode 27

Wednesday, March 7, 2012
  • Update on Qt 5

Mark Hatch and Jeff Tranter

Intro: Welcome to Integrated Computer Solution’s, This Week in Qt, the podcast that keeps you informed of significant events that may impact your engineering projects. ICS is unleashing the power of modern devices with the best independent team of Qt developers in the world. Whether you are starting a new embedded or mobile multi-touch project, or need help solving a Qt development challenge, please contact us at sales@ics.com. To learn more about ICS, please visit our website at www.ics.com.

Mark: Hi this is Mark Hatch and I’m from Integrated Computer Solutions. I run the Qt business here at ICS and today with me is Jeff Tranter. Jeff is one of our engineering managers and he runs the Qt business out of our Ottawa office. Today Jeff is going to talk about Qt 5.

So, how are you doing today Jeff?

Jeff: I’m doing good.

M: Great! We are all excited to find about what’s going on in Qt 5. So why don’t you tell us about it? What is Qt 5?

J: Sure, well Qt 5 is the next major release of Qt. It’s been some time in development. It’s going to offer some interesting new features. Probably the most notable is the new SceneGraph based graphics architecture that’s going to be leveraged in the new QML 2.0. It’s also the first new release that’s being driven by the new open-governance process, and because it’s a new major release, this is going to be an opportunity to remove some of the obsolete API’s that have been there for backwards binary compatibility, and can be removed now that Qt 5 doesn’t have to remain binary compatible with Qt 4.

M: So why don’t you talk a little about SceneGraph, and what that’s going to mean for developers.

J: Ok, well SceneGraph is the new graphics architecture and it’s going to improve the performance of graphics. It’s going to reduce the number of layers between your application and the graphics hardware, and it’s particularly going to be usable from Qt Quick, or what’s called Qt Quick 2.0. This is partly going to leverage OpenGL, which is now going to be required on platforms. It’s also going to make use of the Qt platform architecture which was formerly known as Lighthouse, which is the new back-end that’s used by Qt to talk to the platform-specific graphic system.

M: So what this means is that Qt is going to perform faster on chips with hardware OpenGL ES 2 acceleration, correct?

J: That’s right. Some of the other interesting things also happening, as I mentioned, because it’s a new major release, we can get rid of some of the deprecated API’s that have been there for a while and really need to be removed. It’s also an opportunity to modularize the source code a little bit, so it’s going to be feasible now to release individual components of Qt, like WebKit for example, and not wait for the next complete Qt release. What was Qt Mobility will now become a number of modules in Qt that you can use if needed. Also of interest to developers, widgets are now going to be optional. They are not used on some platforms like smartphones typically, so they are now optional and you won’t be required to use widgets in your application if you don’t need them. So you can avoid the extra baggage.

M: So this means that on an embedded system that you can reduce the size of the Qt footprint by a lot, right?

J: That’s right. Typically you’d like to be using QML and not using desktop widgets, so there is really no need to pull in all the widgets.

M: You mentioned also that this is the first kind of release that’s been under the open-governance project. Have we seen any significant kind of input from the community yet in this area, or is it still under development?

J: I would say this is working quite well. It’s been going for some time and there are a lot of modules that have been assigned maintainers and not all of them are Nokia employees. In fact, the maintainer of the core of Qt is not a Nokia employee, so it’s really leveraging a community, and people are stepping forward and taking over different components of Qt to maintain them and oversee them.

M: So when you talk about deprecated API’s that were removed, you are talking about things like the Qt 3 support library and things like that?

J: Right, that one is definitely going and there are some others that have a better alternative replacement. In most cases there is something… a better replacement for each of the deprecated API’s, so if you are using them you won’t be stuck, there’ll be something that you really should have been using for some time but was need to be there for backwards compatibility.

M: Any other ones that people might have thought about, or at least know about that are going away, besides the Qt 3 support library?

J: I believe some of the networking API’s like QTFTP are going away because there’s better placements for them. A number of them are things that people just aren’t generally using a lot because they weren’t well supported, or maybe they weren’t supported on all the platforms, so it’s a good opportunity to remove them or replace them with something new.

M: So, what’s the level of effort going to be in your opinion to move from Qt 4 to Qt 5? They had some difficulties and issues from Qt 3 to Qt 4. What’s it going to be like moving to Qt 5?

J: Right, the people that were around in the days of the Qt 3 to 4 move will remember that was quite a significant change in the API’s and it was quite a bit of effort to move your applications from Qt 3 to Qt 4. The changes from 4 to 5 are definitely going to be less drastic. In most cases it looks like the new version is going to be source-compatible and it will just be a recompile. If you are using some of these deprecated API’s that we talked about, you are going to need to change your code but there’s likely some new API’s that you can use. If you want to leverage the new SceneGraph code in Qt Quick 2.0, than you are going to have to make some changes to your QML code, but there is still going to be support for what they are calling Qt Quick 1.

M: So, what’s the status of Qt 5? Where are we? How quickly can we get these bits?

J: Well, the first step was a feature-freeze, and that happened last month. And the next step is moving toward an alpha preview and then one or two betas and then ultimately a 5.0.0 release this summer probably around the June timeframe. And actually just today, discussion started on the mailing list about the alpha release and the hope is to get that out within the next two weeks.

M: Oh wow that’s pretty quick then. That sounds like when DevDays rolls round again, we should have a Qt 5; a new major release to play with, right?

J: Yes I would hope so. I could say a bit about the state of the code now. People can try the code. It’s being developed publicly in GIT. You can use it today for kind of experimental work, but it’s definitely going to get easier to use. It will become more stable with the alpha and betas as they come out. Realistically for production use, you are going to want to at least wait until the 5.0.0 is out, see how stable it is, and probably follow the general guideline that you don’t want to use a dot zero release for production code. So, we’ll want to take a good look at how stable 5.0 is on your particular platform. I think it will depend a little bit on the platform your own. There’s a number of platform that are being focused on as the well-tested ones initially. If you are on one of the more obscure platforms, it may take a little while to catch up and be stable. For Qt 4, the latest release 4.8.0 is the current stable release, and we are probably going to see at least a 4.8.1 release, but probably not much more than that. I think people will start moving pretty quickly to Qt 5 this summer.

M: Actually, one of the surprising things to me is that we haven’t seen a 4.8.1 by now. In the past they’ve had to release quicker updates, right?

J: Right. I’ve seen a discussion this week on the mailing list and there’s actually a list of bug fixes. It looks like it will be purely a bug fix release, but quite a large number of bugs fixed, but nothing really major that will be new.

M: So speaking of Qt 5, one of the platforms that’s got a lot of publicity is Raspberry Pi. Any update on that?

J: Yeah, we’ve been following that pretty closely. There’s a lot of excitement about it, and they finally officially started taking orders last week. They’ve licensed two manufactures to actually build and sell the boards. There is an initial build, which the Raspberry Pi folks had done of 10,000 boards, which actually sold out very quickly on the first day. But you can now place orders, and there should be a lot of manufacturing coming behind that. They also announced there are two different models of the device, and if you recall, there is the model A which is a $25 board, and a model B which is the $35 board. The model A was going to have less RAM capacity, but they’ve decided they can afford to bump that up to the same as model B, which is 256 megabytes. So it will have the same amount of memory, the only difference will be the lower-end board has one USB port and no Ethernet, while model B has two USB ports and Ethernet. So we are starting to see some Linux distributions available ported to it. So far there’s Debian, Fedora and Arch Linux, either available or imminently available to be released. Qt on Pi is the port of Qt 5 and it’s got a wiki page where it’s documented at qtproject.org, and they’ve got images now for the development kit. And there should be about 200 boards that have been allocated for Nokia to use for partners and open-source Qt developers. There’s a bit of confusion about when we will actually get our hands on these first development boards, but it looks like we should be getting them pretty soon, and they should be coming out of this first batch of 10,000 that have already been manufactured. So there has been a huge amount of interest. The Raspberry Pi twitter account has over 50,000 followers, and apparently there has been one report that as many as 2 million people have either placed a pre-order or have said that they are interested in being on a mailing list to hear about orders. What I think is particularly interesting is that the real goal of this was to get low-cost computing into the hands of students, and try and address what they are seeing as a shortage of young people learning to program. So potentially, every student in the U.K. will get one of these. In the meantime, it makes a great development platform for people like us who want to try Qt 5, and it looks like we are going to see a market for add-on devices like cases, and things like that like we see for platforms like the Arduino, for example. So it’s going to be interesting to see how this plays out and see how many people actually start using these boards.

M: Yes, and the other thing that goes in favor of the Raspberry Pi is that people get excited about the idea of Qt 5 being more spread among the people, and people see it as an opportunity to use it on other platforms and get the performance benefits.

J: Absolutely.

M: So I’m sure we’ll have some pretty stable ports of Qt 5, not only on Raspberry Pi, but we are working on some stuff with the i.MX51 Quickstart platform too, so there will be a Qt 5 version on that. So it’s a pretty exciting time, especially considering the price of it, and if we could just get availability, a lot of people will be very happy.

So anything else we should talk about today about Qt 5?

J: Not really. I saw another posting this week that PySide, which is the LGPL Python port of Qt has now been rolled into the Qt project and it’s going to be maintained and operated the same way, so we are going to see a number of components that will now be Qt modules that are all part of the larger project. We also saw desktop QML components that look like widgets but are implemented in QML. They look like they are coming along quite well and will make it easy to do QML-based desktop applications. It looks like there is going to be a lot of interesting modules available for Qt 5 and not just the usual ones that we’ve seen in the past.

M: That’s really nice. We are all looking forward to Qt 5.

Thank you for updating us Jeff, it was good to talk to you about it. I’m sure everybody has some interest in how this progress, so we will update people again in a few weeks.