The relationships between Android operating system versions are easy to understand, and they all have delicious codenames – you have Cupcake (v1.5), Donut (v1.6), Eclair, Froyo, and Ice Cream Sandwich to name a few, with “Obesity” and “Type II Diabetes” expected to debut somewhere between 2030 and 2035. Although phone and computer manufacturers may take that OS and change it drastically from device to device, you essentially know that your computer is running Android, and for the most part, an app made for Cupcake works on every OS release following it. Yummy.
The same is only sort of true with the Microsoft Windows Embedded OSes, which tends to really confuse application developers planning to develop or port their application across embedded OS versions. Adding to that, there isn’t really one guide that explains all the OS lineage or name changes. So with this article I’m going to attempt to to touch on the versions of embedded Windows products, and provide a conceptual overview of how they’re connected. For sake of brevity, I will be leaving out many many details and adding overly simplistic introductions. If you find you need more meat, please consult the Links and Other References section near the end of this post.
Here we go.
In the beginning, there was a big bang in Redmond, Washington, and amongst the cloud of blood, sweat and tears, Windows CE was born. Windows CE was designed from the ground up as a tiny, modular (after CE 1.0) operating system that supported a subset of the Win32 API. Modularity meant that the embedded computer manufacturer could pick and choose what pieces of the OS it wanted to include for its specific hardware, while trimming the unnecessary fat. For example, if you make a computer with a Bluetooth chip in it, you include the Bluetooth OS package. You certainly don’t need all the WiFi software in your tiny operating system if you don’t have a WiFi radio, so you leave it out. The name of the game in embedded devices is obviously small, fast and efficient. In addition to the benefits of modularity, Windows CE supported a subset of the Win32 API, ensuring that all those Windows 95 software programmers didn’t have to learn a new way of life to jump on the CE programming bandwagon. In many ways, Windows CE seemed ahead of its time.
And so Windows CE (also known as “Windows Embedded CE”) grew all the way from version 1 to version 7. However, that did not happen without a few confusing name changes. In version 4, Microsoft decided to add a “.Net” to the end of the “Windows CE” name, which actually has nothing to do with the .Net Framework. Thankfully, it was reverted back to the original name for versions 5 and 6. Now going back to confusing people for fun, Microsoft more recently decided to have another change and renamed the product line at version 7 to “Windows Embedded Compact.” So the Windows CE is essentially just like the lineage of the Android OS. Let’s draw it out as a crudely drawn horizontal text tree, for all those visual learners. Happy now, visual learners?
WinCE 1 (1996) –> WinCE 2 –> WinCE 3 –> WinCE.Net 4 –> WinCE 5 –> WinCE 6 –> Windows Embedded Compact 7
Now, let’s go back to the beginning of Windows CE again, and branch out that horizontal text tree. When Microsoft was coding away at Windows CE, they immediately envisioned three types of hardware platforms running Windows CE: set-top television boxes, automobile computers, and handheld PCs. First, Microsoft created a set of hardware and software requirements to certify what they deemed a Handheld PC (H/PC), such as (*1):
- Run Microsoft’s Windows CE
- Have a pocket form factor
- Weigh less than 1 pound
- Contain a QWERTY keyboard with Ctrl, Alt and Shift
- Have a grayscale LCD touch screen display with a resolution of 480×240 pixels
- Stylus to use like a mouse on the touch screen
- Run on the SH3, MIPS 3000 or MIPS 4000 processor architecture
HP 300LX Handheld PC based on Windows CE 1.0 (*2)
Eventually the hardware requirements changed — grayscale LCDs are cool (if you’re a hipster), but not as cool as, say, actually being able to play solitaire without memorizing the color of each suit of cards. The Handheld PC based on Windows CE 2.11 then became known as Handheld PC Professional. After one more release, the Handheld PC family died with a name of “Handheld PC 2000,” which was built on Windows CE 3. (Nerdy side note here – there was actually a version of Linux developed for some of these handhelds. Check out JLime Linux if interested: http://jlime.com)
HP Jornada 720 Handheld PC 2000
At the same time as the Handheld PC, Microsoft developed a product line for automobile computers. It started off as “AutoPC,” but has since been renamed with each new version – to “Windows CE for Automotive,” then “Windows Mobile for Automotive,” then “Microsoft Auto,” and finally “Windows Embedded Automotive.” Not confusing at all. To make it even easier to understand the product line, Microsoft even changed the base OS from Windows CE to Windows 7 somewhere in there.
Rewinding again on the Windows CE trunk, version 2.01 introduced support for the new Palm PC – a keyboardless computer that fits in the palm of your hand. After legal battles with 3Com over the “Palm” name (referred to just as Palm Pilots for almost everyone), Microsoft had the product line renamed to “Palm-Size PC.” Somehow, that was legally acceptable, but akin to creating a tablet PC called the iPad-ish Tablet (henceforth, iPad-ish Tablet™). The Palm-Size PC OS was either built on the Windows CE 2.01 or 2.11 cores, and eventually phased out in 2000.
HP Jornada 420 Palm-Size PC
In 2000, Microsoft needed a new device that could directly compete with the stylings of 3Com’s Palm computers. Everyone knew what a Palm Pilot was, but not a Microsoft Palm-Size PC. To achieve this, the Palm-Size PC user interface was redesigned and coupled with a Windows CE 3.0 core OS. With the addition of some new hardware requirements and software packages, this OS became the Pocket PC 2000.
And the Pocket PC line was so successful that it continued for many years with different version names and core Windows CE versions. Although it was mostly targeted at enterprise devices, the product line made it’s way onto consumer PDAs and phones as well. Additionally, in the later years, the terms “Professional” and “Standard” appeared in OS names. This essentially meant “touchscreen” and “non-touchscreen,” respectively. In order of OS appearance:
- Pocket PC 2000, with a Windows CE 3.0 core OS.
- Pocket PC 2002, with a Windows CE 3.0 core OS. There were also “Phone Editions” which contained a WWAN (cell) radio.
Intermec Model 70 running Pocket PC 2002 (*3)
- Windows Mobile 2003, with a Windows CE.Net 4.2 core OS.
Intermec 700 Series Computer running Windows Mobile 2003
- Windows Mobile 2003 Second Edition – basically the same as #3 with some bug fixes and small changes.
Windows Mobile 2003 SE
- Windows Mobile 5, with a Windows CE 5.0 core OS.
Windows Mobile 5
- Windows Mobile 6, with a Windows CE 5.0 core OS.
Windows Mobile 6
- Windows Mobile 6.1, with a Windows CE 5.0 core OS.
- Windows Mobile 6.5, with a Windows CE 5.0 core OS.
- Windows Embedded Handheld 6.5, with a Windows CE 5.0 core OS. This is essentially the same as Windows Mobile 6.5, with a shiny new name for the enterprise/vertical (think business computer) market OS line.
- Windows Phone 7, with a Windows CE 7 core OS. Note that this OS is for the consumer market, and broke compatibility with previous product line OS releases.
And unless I forgot something (which I most likely did), that pretty much covers where we stand today! If you need more information, the following articles and books are fantastic references – I’ll add more as I remember them.
Links and Other References
- “The History of Windows CE” http://www.hpcfactor.com/support/windowsce/
- Murray, John. Inside Microsoft Windows CE: [in-depth Details of the History, Architecture, and Ever-expanding Potential of This Remarkable Operating System]. Redmond, WA: Microsoft, 1998. Print.
- Boling, Douglas. Programming Windows Embedded CE 6.0 Developer Reference. Redmond, WA: Microsoft, 2008. Print.
*1: Tilley, Chris. “The History of Windows CE: Windows CE 1″. HPC:Factor, 18 Feb. 2001. Web. 20 Mar. 2012.
*2: Kajac123. “File:300lx.jpg.” Wikipedia. Wikipedia, 17 Apr. 2011. Web. 20 Mar. 2012.
*3: “Intermec_70.jpg.” PenComputing.com. Web. 20 Mar. 2012.