Since October 2006 we’ve been porting Qt 4.x to Windows CE 5.0 and Windows Mobile 5.0 and we’re starting to get somewhere, so I thought it was time to break the news. The plan is to have a Technology Preview ready late this summer, and have a final release together with the rest of Qt 4.4.0 sometime next year.
So how far are we? We’ve ported QtCore, QtGui and QAxContainer (ActiveQt) as well as updated the buildsystem (configure.exe, qmake etc.) for supporting shadowbuilds and compiling to host and target platforms. We’ve got our QMenu stuff integrated into the native Windows Mobile menubars, and we’ve got two new styles: Windows CE and Windows Mobile. We’re also running nightly autotests of the Qt/CE branch running through the hundreds of autotests we’ve got for our different modules. Wanna have a look? Here is some obligatory screenshots:
|
| Tetrix running on Windows Mobile 5.0. We were very quick to map the softkeys so we could pla^H^H test this application when testing packages. |
|
| Textedit demo running on Windows Mobile 5.0 (Smartphones). Notice how the menu is the actual native Windows Mobile one. |
|
| Textedit demo running on Windows CE. Here the menu is more like we’re used to in desktop apps. Also - notice the crappy style…. It’s not our fault - we’re just following the “guidelines” :). |
At the moment we support these SDKs from Microsoft:
- Windows Mobile 5.0 Pocket PC Edition (ARM)
- Windows Mobile 5.0 Smartphone Edition (ARM)
- Windows CE 5.0 Standard SDK (ARM)
- Windows CE 5.0 Standard SDK (X86)
and we already had our binaries running on Windows Mobile 6.0. Windows CE 6.0 we don’t support yet, but the moment there is an SDK available from Microsoft (if ever?) we will add support for it ASAP. We develop and test both on the emulators provided by Microsoft, but also on a Dell AXIM X51v (Pocket PC) and a Qtek 8310 (Smartphone).
Now if you want to try out the stuff, here is Tetrix statically built for Windows Mobile 5.0 (ARM). It’s around 3 megs. And if you want to get serious and get your hands on the current code to help us with suggestions and bug reports, you can do that too! Just send a mail to support and/or sales and ask them nicely about joining the Qt/CE testing program (you need to sign an NDA at the moment - and don’t worry there will be publicly available previews later).
So what is left you ask? Well, we need to make all the other Qt modules compile and work on the platform. But more importantly we also need to make sure that Qt performs well on the Windows CE devices. As you know we already support embedded Linux with Qtopia Core. Now we need to give the same love and caring to Windows CE as embedded Linux has been getting all these years. At the moment we are working on optimizing painting performance (we’re trying to make Qt/CE use 16bit colordepth internally rather than 32bit as it is at the moment) and also ways to make the size of the Qt libraries smaller. The cool thing is that we now have two embedded platforms where Qt will run, and since we’re working together it will improve them both!
Is this one of the few places where I can use the word synergy? I think it is!
30 Responses to “We’re porting Qt 4 to Windows CE and Windows Mobile”
That’s awsome. Just now I was having a discussion on using Qtopia on a project but we were having problems finding cheap devices for it. Is there any expected release date? And would it be possible to have a Windows CE 4.2 version too? *smile*. Unfortunally that’s what my Motorola MPX200 phone runs… and otherwise it might have to suffer some sort of accident to justify a new phone hehe ![]()
Wow, very nice. Unfortunately my pocketpc only runs Windows Mobile 2003 SE (and it has good specs too, a 400mhz arm and 64mb ram, just an old os…)
Damn, seems that most apps nowadays require WM5. But hey, as it’s opensource, maybe it could be possible to port it to an “older” platform.
We’re not planning on supporting 4.2. We had it working for QtCore, but parts of our textrendering code in QtGui didn’t like 4.2 so we skipped it (we never planned to support it anyways).
And hey - accidents happen ![]()
Damn, I knew this would happen
I have been maintaining a private port of Qt4 for CE since Qt4.0, but using my
pet mingw32ce project (http://cegcc.sourceforge.net) as compiler
(think gcc/mingw32 for WinCE - compiling from linux possible).
In fact, I got into mingw32ce because of Qt4, and then ended up spending
90% of the time on mingw32ce. I am now in the process of submitting most of
the gcc/gdb/binutils changes upstream, so I could finally release Qt4 for WinCE
to the public, and then I read this… There goes my 15 minutes ![]()
That should teach me to release early, release often.
What will be the license for this Qt/CE? I’ve based my port on GPLed Qt/Win32.
Maybe we can cooperate? - I would certainly love to.
Cheers,
Pedro Alves
Oh, and it also runs on Mobile 2003 (4.2).
Cheers,
Pedro Alves
Wow, that’s really nice !
Btw, I just saw Symbian announced PIPS (POSIX on Symbian - http://developer.symbian.com/wiki/display/oe/P.I.P.S.+Home ) et Open-C (OpenSSL, GNOME, LIBZ, … - http://www.forum.nokia.com/main/resources/technologies/open_c/index.html ). What about a Qt port to Symbian ? ![]()
Pedro Alves: Well, your port is not useless yet, given that Trolltech’s apparently requires M$ tools whereas yours supports mingw32ce.
Espen Riskedal: Does Trolltech plan to support a Free compiler which can be used to cross-compile from non-M$ systems, such as mingw32ce? (Note that cross-compiling Qt 4 apps is definitely possible, I’m doing it already with regular cross-mingw and Qt/Win.)
Kevin Kofler: At least for the first public release we are not planning to support other (free) compilers. But this might change in the future.
This is really GREAT news. Ever since the Zaurus platform pretty much died, we have been stuck with a nice program and no viable devices to run it on. Now, it seems there is a way out for us, that will enable us to reach a larger public as well! Excellent news indeed.
André
We are porting since January
http://sourceforge.net/projects/scusi
We have a msvc/cmake based build for QtCore and QtGui.
QtCore compiles and links but it misses some functionality.
For the libc/posix functions we use wcelibex:
http://sourceforge.net/projects/wcelibcex/
The actual version is in the Scusi repository.
wcelibcex is also used for the CE port of D-Bus:
http://sourceforge.net/projects/windbus
Nevertheless great news,
Peter
PEDRO: Recently we discovered your port of newlib to wince.
We would like to use some functions in wcelibcex but we
are not sure about the license. wcelibcex is MIT, newlib BSD
like, but cegcc is GPL, does this mean the wince port of newlib
is also GPL? Is it possible to release the newlib part of cegcc
under BSD /MIT (when not already done)?
Peter
Great news!
I recently sold my Zaurus, and looking for a new one. The biggest trouble for me was that I cannot develop for WinCE under Linux. Now it seems to be possible. Can I check porting status somewhere?
Which license will it use?
Mikhail
What’s the reason of differentiating Windows CE 5.0 *and* Windows Mobile 5.0 ?
It’s like saying: we will support Windows NT platform and Windows XP system.
Are you planning to introduce any specific support like Pocket PC-only shell etc.?
BTW, great news though I have to say it’s shame you’ve decided to port it so late.
As Peter announced above, there is Scusi project in progress and I wonder if there is any interest to join forces in wider community for Windows CE platform instead of forking or concentrating port development only by Troltech. What do you think?
Mateusz
As I understand Trolltech’s policy on this issue I assume they
will never use code provided by the community, instead they would
reinvent the wheel. I assume this is to avoid a “license-Trojan”
and I could understand it, because we live in a world of
bad boys called lawyers.
But it would be nice to have some reactions from TT
(but don’t forget to ask your lawyers first
)
Mikhail: “Can I check porting status somewhere?”
Try it ![]()
There is also a diff which shows the changes we’ve made to the TT code:
http://scusi.svn.sourceforge.net/viewvc/scusi/trunk/Qt4.2.2-changes.diff?view=markup
The port is based on the GPLed Qt code of TT, all our contributions are licensed
under MIT/BSD, so you could use it in closed source project, BUT you have to ask
TT if they will allow you to use their commercial Qt on Windows CE.
When you use the GPL for your code you don’t have to ask anyone.
Peter, good point.
Although, I’ve not asked my lawyer
I think I can fire away an idea to transform Scusi project a little to a community-driven (re)port of official QT for Windows CE, ha!
I still can’t catch the idea of supporting Windows CE/Windows Mobile “separately”.
From the article it seem the only difference in handling particular shell, but is this all about it?
@Mateusz Loskot:
We separate between Windows Mobile and Windows CE because of different reasons. First of all Windows CE is basic subset where Windows Mobile is build upon. As an example Windows Mobile has a lot of UI changes/differences compared to core Windows CE. For instance we support the native Menu handling for Windows Mobile for PocketPC as well as for Smartphone. They are completely different to the Windows CE ones.
Supporting Windows CE in general is a complicated topic as everyone can build his own SDK through Microsoft tools, which are all called Windows CE in most cases. So there is no generic Windows CE. For Windows CE 5 there was a Standard SDK which was supposed to support a default set of functionality working on each Windows CE device. But with Windows CE 6 this attempt has been dropped.
Maurice,
Hmm, I replied to your comment with pretty long post but I don’t see it.
I tried to submit it once again but got a message that it’s been already submitted.
Does it mean my comment has been removed?
Peter: I’m going to try to clean up my Qt port and get a clean patch out of it.
Maybe we can colaborate at Scusi?
Maurice, espenr, is it really true that Trolltech won’t even look at my code?
Even if I assign them the copyright to the code? I would be ok with signing papers,
much like one does with the FSF to work on GNU tools (gdb/gcc, etc.)
Of course, I would guess most of the work is duplicated, but still…
Cheers,
Pedro Alves
P.S.
Is it just me, or the security code validation sometimes doesn’t work correctly?
Pedro: Maybe we can colaborate at Scusi?
As for a member of Scusi project, it sounds great to me!
BTW, yes I think the security code validation does not work stable.
I rarely have a luck to submit my posts with a single click. I usually have to reload the page and use new image.
I’m trying to submit my big reply to Maurice’s comment:
Maurice, I believe perfectly understand Windows CE/Windows Mobile differences.
These diffrences you’re talking about are 3 different types of UI shells:
native (you call it Windows CE), Pocket PC shell and Smartphone shell (both last come from Windows Mobile brand).
Windows CE does not provide a common and standarized UI - one for all - but UI is built as a separate layer usually specific for a hardware device.
Windows Mobile, as an official brand and design of Windows CE for “business class” devices supports devices of Pocket PC and Smartphone formats and provide IU shell accordingly:
Windows Mobile for Pocket PC
Windows Mobile for Smartphone
(there was also WM for Phone Edition, in fact it was Pocket PC + GSM)
Summarizing, *all* other stuff not related to UI shell is common and unified for all Windows CE family systems.
Certainly, some components may not be included in custom designs but some may be.
Is my understanding correct that you are going to support UI shell for: Pocket PC and Smartphone ?
Plus, “native” Windows CE UI in *some* but not full range?
Also, I can not agree with statement that “supporting Windows CE is complicated”. Windows Mobile *belongs to* Windows CE systems family.
Windows CE is a platform serving core OS components and there is no way to build Windows Mobile without Windows CE components.
So, I can not imagine how QT elements like strings, threading, networking, and other core and non-GUI stuff can work on Windows Mobile but e not on Windows CE.
Putting away specifics of UI elements for a while, I expect these core elements of QT will run Windows CE designs (images, customizations, whatever we call it)
that are not Windows Mobile.
Let’s look at Windows Template Library (WTL), it’s a set of headers and perfectly supports all shells available for Windows CE-based systems, without a lot of hassle.
So, If you don’t mind I’d suggest to keep things clear to not to confuse users.
Finally, I’d really suggest to consider adding complete support of custom designs of Windows CE.
If you don’t want to do it in Trolltech, then I believe the community would be happy to take care of it.
There are plenty of custom OS designs especially in professional devices for field services, surveying, etc.
That would be pity if users could not use QT on devices like MobileMapper CE, Leica’s devices or Trimble GeoExplorer CE.
There is a huge community gathered around The Free and Open Source Software For Geoinformatics and OSGeo Foundation (see mailing lists, projects, ie. http://moss4g.telascience.org) is looking for well designed and portable framework for mobile platforms for development of GIS FOSS.
I see QT as a great candidate to fill this niche.
I’ve tried twice, but I’m not able to submit my reply to Maurice’s comment.
May be there is a comment size limit or something like this, anyway I didn’t get any error/warning message.
So, I put my comment on a web server and here it is:
Mateusz, your comment was marked as spam by Akismet. I de-spammed them now. ![]()
Regarding the CAPTCHA, is possible that you sometimes type the wrong letters and it fails? Like ’s’ instead of ‘S’ or mixing ‘l’ and ‘I’? There’s nothing special in the captcha which would indicate that it works most of the time, but not always.
The timeout was 10 minutes, so I’ve changed that to 30 min. Still, if you need to write a comment for more than 30 min consider using a normal texteditor and paste the text when you’re done.
I’ve also tuned down the wave factor, to make it a little more readable in some cases.
Hopefully this will help the issue you’ve experienced.
Will you try to port it also for symbian?
Pedro: Maybe we can colaborate at Scusi?
That would be great. Maybe we could use
the cmake generated MinGW/Unix Makefiles
also for ceGCC.
What about switching to the Scusi mailing list?
https://lists.sourceforge.net/lists/listinfo/scusi-devel
@Mateusz Loskot
I agree with you on everything you said. So I will shortly comment one or two things of which I think need some clarification.
Yes, you understood it correctly, that we are going to support the Windows Mobile UI (both Pocket PC and Smartphone) as well as the core Windows CE UI, which is much more basic.
> Finally, I’d really suggest to consider adding complete support of custom designs of Windows CE.
This is exactly the point I meant with the term “complicated”. As each device vendor can configure his very own SDK by using the Microsoft tools, we have to take care it will be most easy for him to be able to build Qt on top of it.
And this is the reason why we have the Standard SDK for Windows CE 5 supported, because it was an attempt to ensure a minimum default configuration for most devices out there. Additionally we try to use as less CE API as possible to ensure Qt/CE will work on most devices without modifications to the code.
I hope this could clarify some of your concerns. If not, feel free to contact me.
@Pedro Alves
We very much appreciate your work and feel pleased that you took so much effort into it. But at the current state I can only repeat myself that at least for the first release of Qt/CE we are not targeting support for alternative compilers/buildchains. This might change for a further coming release, but there is still some time left until then.
Kamil:
You are welcome to work with us on such a port.
We could help you with Qt related questions, and you could help us with the symbian specific stuff.
Even when we only port QtCore we have the benefit of the platform independent classes like QString.
Very interesting! Is there any chance to get .NET 4.2 supported? I recently purchased a device and it runs 4.2 ![]()
Some replies to questions/suggestions not already answered by others:
Q: What will the license be
A: Not yet decided - you’ll have to wait and see. But I wouldn’t be too worried - we’re Trolltech
Q: Can I check porting status somewhere?
A: Yes. By joingin the pre-release program you’ll get packages and updates.
Q: Is there any interest to join forces with the wider open source community for the Qt/Windows CE platform instead of forking or concentrating port development only by Troltech?
A: We always want to cooperate with the community. When we started we had no idea about the project(s) alread out there. When it comes to contributing code to Qt/CE we need to obtain the copyright of the code if it’s above a two-liner or something like that. The code in Qt is GPL but also provided under a commercial license therefore we cannot just take GPL code and put it into Qt/CE.
Thanks for the interest guys and girls - until next time.