This question came up at the local .NET User Group meeting held last night.
The relationship between the Windows Mobile and Windows CE operating systems is one which is not well understood by some ISV developers and the recent naming nomenclature changes have not helped.
So to answer the question “Is Windows Mobile 6 powered by Windows Embedded CE 6.0?” I will first have to explain the difference between these two products.
Windows Embedded CE is an operating system designed by Microsoft that targets a wide range of embedded hardware devices – set top boxes, wireless routers, robots and PDAs etc. Unlike the Windows XP or Vista operating systems which are quite fixed in their feature sets, Windows Embedded CE is heavily customisable by the OEM who choices to “install” it. By using a product called Platform Builder an OEM can pick and match which features of the operating system should be built into their device (from a catalog of 1000’s of components). In many cases if a feature doesn’t operate exactly how an OEM desires they have the option within Platform Builder to alter it’s behaviour and/or to replace the component completely with a custom one. This is quite a different process from the process you go through to install a copy of Windows XP on a desktop PC.
On the other hand Windows Mobile is a platform designed by Microsoft for smartphones and PDAs. A big part of this platform is a specialised operating system designed for use on smart devices (PDAs). Windows Mobile devices at their core are running the Windows Embedded CE operating system. In very simplistic terms someone within Microsoft has gone through the Platform Builder IDE and configured all the options until they came up with an operating system that all Windows Mobile devices will be based upon. Some parts of Windows Embedded CE have been replaced completely (for example the GUI shell which looks like Windows 95 complete with the desktop by default), and other components have been added (for example the Connection Manager APIs).
So in summary Windows Mobile devices run a variant of the Windows Embedded CE operating system. So it would make sense that Windows Mobile 6 would at it’s core have the Windows Embedded CE 6.0 operating system, right? Well if you answered yes to this question you would be wrong….
Windows Embedded CE 6.0 was released officially on the 1st of November 2006. It included a vast range of changes and additions, but the most talked about within the Windows Mobile space at least was the redesigned kernel which removes some long standing limitations. Rather than a 32 process limit, there is now support for up to 32,768 processes (in theory at least) and instead of a 32MB virtual address space, applications now have access to a 2GB address space.
Windows Mobile 6 on the other hand was announced on Feburary 12th 2007 at 3GSM World Congress 2007 with devices shipping slightly later.
So within Microsoft both developement efforts were going on internally at the same time. The Windows Mobile team decided that it was too risky to use the new version of Windows Embedded CE as the basis of what became Windows Mobile 6.0 so stuck with their current version and made a few alterations to it (in some cases back porting changes from Windows Embedded CE 6.0).
So a Windows Mobile 6 device is actually running the core Windows CE 5.02 operating system, not the latest 6.0 release. Windows CE 5.02 is a slight variant of the Windows CE 5.01 release shipped with Windows Mobile 5.0 devices.
So we will have to wait until the next version of Windows Mobile (code named Photon and due for release in 2008) to get a Windows Mobile device which is powered by the Windows Embedded CE 6.0 operating system.
Some may have noticed that I have referred to Windows CE 6.0 as “Windows Embedded CE 6.0″ through out this blog entry. Windows CE and Windows Mobile have gone through minor naming nomenclature changes with the recently released versions to help further align related products. This will be the topic of my next posting.