R.I.P, Windows CE
RIP
I feel quite heavy-hearted writing this article. After all, I invested so much energy and sweat into this platform. You could say I witnessed Windows CE’s growth, and CE witnessed mine. But now, it’s time to say goodbye.
Strictly speaking, I first encountered Windows CE around 2000 on Sega’s Dreamcast console. Windows CE 2.x played its role well as an embedded operating system, staying behind the scenes. It was only many years later that I learned Dreamcast actually used CE.
My first exposure to Windows CE development was in 2002, with Windows CE 3.0. Professor Wan had placed a folder on the school’s server with materials from his earlier work on CE drivers at a company. I stumbled upon it while browsing the server idly and learned about this system called CE. I downloaded the CE development tools and SDK from Microsoft’s website, and compiled my Windows programs to run on CE without much effort. At the time, I thought, “This is just like Windows.”
My deep understanding of Windows CE began in 2004, when I was about to graduate from undergrad. I participated in a project with the Automotive School, responsible for CE system customization and building an in-vehicle platform. This was my first exposure to OS-level development, and it gave me deep insight into CE’s architecture and底层 (low-level internals). This project also launched me onto the path of embedded development.
During my Master’s, I had plenty of free time and read a lot of CE documentation and source code. I even spent a year writing the first Windows CE textbook. It sold about 30,000 copies and earned me around 100,000 RMB—people still buy it today. For a student, earning 100k before even graduating was quite something, so I was pretty proud during my school days. But I didn’t parlay this first pot of gold into anything bigger. It was converted into half a house in Weihai, Shandong, and that was it—though the house price has since doubled.
Later, our school partnered with Microsoft to offer joint CE courses and training. I taught “Windows CE Embedded Systems” at the school, and I still teach it today.
I also attended Microsoft Certified Trainer programs and even did CE development training for several companies. Personally, I don’t really like training—compared to teaching in a classroom, it’s quite boring. So I’ve turned down all corporate training invitations since 2008.
From 2007 to 2010, I was a Microsoft Windows CE MVP for four years. I voluntarily gave it up before coming to Hong Kong in 2011. It was the highest recognition for my contributions to CE.
——————————————————
Windows CE has come a long way since 1996—16 years. Version numbers went from 1.0 to 7.0, and according to an unnamed Microsoft employee, version 8.0 is in development. But Windows CE’s glory days are long gone.
Let’s briefly回顾 (review) CE’s history. You can draw your own conclusions.
CE was born in 1996. Why did Microsoft create it? Because Apple released the Newton PDA in 1993. Apple was on its last legs and could have gone under any moment, but the Newton showed Microsoft the market for handheld computers. Palm also started around the same time, releasing their first PDA in 1996. CE’s first version was designed for this kind of handheld computer, called the Handheld PC. As we all know, neither Apple’s Newton nor Microsoft’s H/PC—both premature births—came out on top. I call them premature because hardware, battery (AAA), storage (RAM for data), display (monochrome), and networking (no connectivity) technologies weren’t mature enough to support a decent OS. Meanwhile, the simpler, sometimes naive Palm prevailed. For a long time, Palm was synonymous with PDA in China, with many山寨 Palm devices like Lenovo handhelds. When Jobs returned to Apple, one of his first acts was to kill the unpromising Newton.
After CE was born, the embedded field began to develop gradually. Microsoft found H/PC wasn’t profitable—but Microsoft, with deep pockets, could afford to lose a few hundred million dollars and move on to other areas. Dreamcast was one example. Microsoft even developed a CE-specific version of DirectX for it.
CE’s peak came 10 years after its birth. As technology matured and hardware grew more powerful, CE’s late-mover advantage became evident in its competition with Palm. The pinnacle was around 2005, when Palm announced it would use Microsoft’s Pocket PC system (based on CE) as its PDA operating system. This essentially declared victory in the decade-long CE vs. Palm war—Pocket PC unified the PDA market. I clearly remember Microsoft proudly advertising Palm devices on their website: “It’s okay, don’t buy Pocket PC—buy Palm instead. It’s all our system anyway.” To appreciate how shocking this is, imagine if Apple suddenly announced that MacBook Pros and Airs would all ship with Windows 8, abandoning OS X, and then Microsoft’s homepage ad read “Go buy a Mac.” That’s how crazy it was.
But the victory was short-lived. The PDA market rapidly died out, replaced by the surging smartphone market. PDA functions became a subset of smartphone capabilities. Smartphones could do everything PDAs could, at similar prices. Who would buy a standalone PDA? In the first round of competition among new smartphone systems, CE’s performance could only be described as “not disappointing.” Microsoft began developing CE-based phone systems in 2002, called Smartphone. I saw internal documents during my 2003 internship at Microsoft. This system was designed entirely for keypad phones without touchscreens. Some actual products were released. Then phones rapidly evolved into the touchscreen era. No problem—Microsoft had the Pocket PC system. Adding phone functionality to PPC created a phone system, initially called Pocket PC Phone Edition, later unified as Windows Mobile.
Why do I say CE’s performance was “not disappointing”? Well, they say it’s not the god-like opponent you fear, but the pig-like teammate. In the first round of smartphone system battles, the god-like opponents (Google, Apple) hadn’t yet appeared. Google was a fledgling startup, almost acquired by Microsoft. Apple’s Jobs was busy selling music to pay off debts. What fate gave Microsoft was a pig-like opponent: Nokia and its Symbian system. Any programmer with any aesthetic sense who wrote Symbian code once would never want to touch it again. Comically, Nokia rounded up a group of pigs to fight Microsoft—called the Symbian Alliance. A group of pigs is still pigs. After being scattered, Nokia panicked and started randomly acquiring companies to fight Microsoft—QT being one example. The essence is that Nokia lacked the software基因 (gene) and system development capability. Looking back at Microsoft, they didn’t introduce anything revolutionary in the smartphone battle—just living off Pocket PC’s legacy. Of course, that legacy was enough to beat the pig-like opponent. It wasn’t that Microsoft was strong; it was that Nokia was too weak.
Another opponent was Canada’s RIM with BlackBerry. BlackBerry and Microsoft never had a direct confrontation. BlackBerry wasn’t originally a phone—it was a device for receiving emails on the go. Americans are addicted to email the way Chinese are addicted to QQ. If around 2000 there was a device costing a few hundred yuan that could only chat on QQ, it would have sold like crazy. Phone features were added later. BlackBerry mainly dominated the enterprise market—CEOs’ favorite. But Microsoft always believed in making small amounts of money from most people. Like our Party—encircling cities from the countryside. Microsoft prefers vulgar mass appeal over highbrow exclusivity. Oracle vs. SQL Server, Windows vs. Mac—same principle. So what if every US executive carried 10 BlackBerries? Many BlackBerries were company-issued anyway, breeding a two-phone crowd who also bought personal phones. Before the market saw full-fledged WM vs. BlackBerry conflict, the god-like opponents arrived.
Before iPhone, everyone thought Apple would make an iPod that could make calls—after all, the only profitable Apple product was the iPod. Anyone with that opinion was treating Apple like Bird, and iPhone like a “Tianyu music phone.” Apple fought 1 vs. n, knocking down WM, Symbian, and others with two heavy punches. The first-generation iPhone showed the world how human-computer interaction should work on a phone, winning over users. The second-generation iPhone and the accompanying App Store showed coders how software distribution should work on a phone, winning over developers. These were iPhone’s revolutionary innovations. At this point, CE’s 10-year accumulation became a burden. The main reason was that the “Phone is PC” assumption was wrong—which I’ve analyzed in previous articles. Before WM could get up, Google’s Android stepped on it, burying it forever. But Microsoft is Microsoft. They cut off their own arm—abandoned WM and developed WP7 from scratch. WP7 is still based on Windows CE, but with layers of封装 (encapsulation) that hide CE’s appearance entirely.
Why have I spent so much time on CE’s development in PDAs and phones? Because operating systems don’t create productivity on their own. For a system to generate value, it must be driven by applications. CE’s positioning as a general-purpose OS—the more general, the less useful—like philosophy, which feels hollow to everyone. It had to develop CE-based specialized systems. Windows CE’s development has always been driven by applications. Applications are the driving force of technological progress. For example, you develop an OS and want to add a cool new feature. If no application needs that feature, why develop it? It would be a solar-powered flashlight—cool, but useless. Looking back at CE’s history, H/PC, Pocket PC, SmartPhone, and Windows Mobile were its biggest drivers. Many CE versions introduced new features specifically for these applications. Features from these platforms in turn nourished CE—like 6.0’s large memory support, ARM device emulator, distinctive power management, Exchange/Push Mail, etc. Now, that biggest driving force is gone!
CE 7’s biggest feature is Native Silverlight—using native code (C++/COM) to write Silverlight’s cool UI. Sounds familiar? Yes—isn’t this the WinRT that some people hype as the UX savior and C++ savior on Windows 8? Unfortunately, Windows Phone 7 doesn’t use it—it uses managed code for the UI. Doesn’t that seem backwards? To quote Fan Wei: “Hold on, this is confusing, let me sort it out.” A resource-constrained phone system (WP7) uses managed code, while resource-plentiful desktop/laptop/tablet uses native code? What’s going on? Here’s the realization: WP7’s managed code is just a temporary measure. Once Windows 8 is ripe, the next-generation Windows Phone will replace its CE kernel with the NT kernel. Desktop/Laptop/Tablet/Phone—all platforms running one Windows 8! That’s Microsoft’s vision. Truly “Write once, run everywhere.” Write a program that runs on tablets, desktops, laptops, netbooks, phones, and game consoles.
A magnificent vision. But wait—what about our protagonist, Windows CE?
As I said, Windows CE has lost its biggest driving force. Like a sailboat on the ocean without power, drifting with the wind and current. One big wave could sink it. And with Windows now supporting ARM CPUs, it’s essentially competing with its own little brother for food. So let’s re-examine what “legacy” Windows CE has left:
-
Customizability. Also called “trimming”—castrating a full system by removing features. Why trim? Because you lack resources. Otherwise, just use the full system.
-
MIPS and SH CPU support. Does anyone still use MIPS? What’s SH? In all my years working with CE, I’ve never seen a real SH.
-
Excellent real-time kernel. A unique advantage, but real-time applications account for a tiny proportion (as Linus said).
-
Headless Device support. No UI—how can it compete with Linux, which is naturally headless?
-
Cheap. Cheaper than Android? And in China, plenty of people use it for free anyway.
-
Win32 compatibility. For old-timers with 10+ years of coding experience (like me), this still has some appeal.
-
Power management. Good for battery-powered devices. But if Windows 8 can run on tablets, it’s unlikely power management was completely ignored.
-
Partial open source. Not directly relevant to development. Windows kernel source code has been open for academic purposes for years—downloadable online. Has that made any difference?
So, while Windows CE won’t die anytime soon, its application domains will be severely compressed. Stepping down from the glorious stage of phones/tablets/PDAs means losing 80% of its market. What remains? It might be squeezed into marginal fields like industrial control and medical devices. In the coming years, CE will undoubtedly slide from peak to trough.
Could it revive and resurrect? That depends on whether there’s another application with the massive impact of mobile phones to drive it. If so, it would be the last two of the three堡垒 (fortresses) I believe embedded development will conquer: digital TV and smart cars. But for now, Microsoft’s digital TV weapon seems to be Xbox, not CE. As for cars, Microsoft has been negotiating with Ford and others. Whether it will explode isn’t something we can see in the short term.
Anything else to mention? What about the “Windows CE Embedded Systems” course at our school? Looking at the 2012 enrollment plan, the course is still there. Curriculum adjustments always lag years behind.
Irresponsibly speaking, it’s fine. Chinese universities are full of outdated content—16-bit assembly language, FoxPro, VB6, Delphi, even Dreamweaver are still taught. Why can’t I teach the soon-to-be-outdated CE? The excuse is always “learning the principles”—as if invoking “principles” makes something eternal. Responsibly speaking, we should keep up with the times—thick at both ends, thin in the middle—teach more ARM and WP7, less CE itself. Or simply cancel the course and teach Linux/Android properly.
————————————————————————
Finally, I must say: this article represents only my personal views. It does not represent Microsoft, Google, Apple, or any other company.

