Ah, Windows Embedded. The Microsoft operating system that millions of devices and machines are running, typically with a custom application or skin running on top of it so that users don't automatically notice the OS. The operating system that underpins hundreds of thousands of medical devices, automatic teller machines, kiosks at airports and other crowded public places, industrial machinery and control planes, set top boxes, game consoles.
Windows Embedded is a relatively unheralded version of Windows whose existence might surprise you. But it seems like Windows Embedded's existence might also surprise a lot of folks up in Redmond. Here, at the Microsoft campus, despite all of the hullabaloo about Windows 10 and device updates -- and the new Creators Update and Redstone versions that will be coming down the pike at an almost breakneck speed -- Windows Embedded suffers from an opposite problem. It appears unfortunately stuck in a place where no future has clearly been laid out for it.
One indication that Windows Embedded may be on its way out is the introduction of Windows 10 IoT, which Microsoft has started pushing as a replacement. However, first, a bit of background of Windows Embedded.
A brief history of Windows Embedded to date
How has Windows Embedded worked in the past? Most vendors chose Windows Embedded because, unlike the traditional desktop operating system, it was modular: You could choose which features to install or not install, both to reduce the supportability burden on the vendor (you don't need Solitaire on an ATM, for example) and to reduce the potential attack surface, since laser cutting machines do not generally need IIS web serving capabilities, for instance.
The modularity also included the ability to customize some parts of the OS that were not open to modification in the full version, like splash screens and filters, so you could insert your own branding or the branding of the machine directly into the OS. Essentially, you wanted a stripped-down operating system so you can fully customize both the hardware and the software in a system, as well as save space on often limited storage media in devices.
These were the most recent Windows Embedded versions:
- Windows Embedded Standard 7 (WES7): Windows Embedded Standard 7 was essentially Windows 7 with different parts ripped out and different levels of customization ability. There were three "notches," called, C, E, and P, each of which denoted different additions of features to the base image of Windows Embedded and had correspondingly different prices. P was the most expensive and was essentially identical to Windows 7 from a features perspective.
- Windows Embedded 8 Standard (WE8S): This took Microsoft's embedded operating system but pulled it up to Windows 8. It also got rid of all of the C, E, and P versioning so if you bought WE8S, then you received authorization to run all of WE8S -- and you paid for all of it, too. You did not have to use all of the features and you could still carve out parts and do any required customization, but you could not opt out of some of the features and pay a cheaper price, either.
There were also versions that came with a full pre-built image of Windows Embedded and were mainly for use in otherwise full computers that were deployed in appliance-like settings, such as point-of-sale devices and cash registers, digital signage, or thin clients that booted only to connect to a full user session running on some other machine.
Embedded into the internet of things
Now Microsoft has decided that if you want to build devices and large machines out of discrete components, what you're really building is a Thing. The naming is a nod to the internet of things (IoT) phenomenon, where the reflectors in the roadway and sensors in your refrigerator are all connected to the internet and possess "smart" capabilities.
The fact of the matter is that the IoT versions of Windows 10 are replacements for the line of Windows Embedded SKUs that have existed before now. There are now three editions of the IoT version of Windows 10, and they are each designed for different device form factors, as follows:
- Windows 10 IoT Core, for small devices: This version of Windows 10 has no shell and essentially supports only universal apps -- those coded to run in the managed environment of the Universal Windows Platform (UWP) and not traditional x86 or x64 apps. This OS version has a maximum of 256MB of RAM and 2GB of device storage, and can run on the x86 chip platform or the ARM platform for low-power devices. Currently, this is the only edition of Windows 10 IoT that can be obtained directly by end users.
- Windows 10 IoT Mobile Enterprise, for mobile devices: This version of Windows 10 adds the "tablet" shell -- the skin that you run apps from the Windows Store in -- and also supports universal apps and drivers. Storage and memory support are doubled, but you can run this version of Windows 10 only on ARM-based devices; there is no x86 chip support. Windows 10 IoT Mobile Enterprise is specifically intended for use with mobile point-of-sale and handheld systems with display sizes less than eight inches. Think bar-code scanners, automotive testers, control pads, and the like. This edition of Windows 10 IoT is available to OEMs and system builders only.
- Windows 10 IoT Enterprise, for industry devices: This version of Windows 10 brings the traditional desktop shell back to the fray, doubles the memory and quadruples the RAM supported by the OS. It also adds x86 chip platform support, but it removes ARM support. This edition of Windows 10 IoT is available to OEMs and system builders only.
The lifecycle of Windows 10 IoT Enterprise is: Give five years of regular production support plus another five years after that of extended, security update only-style support. For those familiar with the branches of Windows 10, this is the Long Term Servicing Branch, or LTSB, choice. This edition also includes deferred online activation, the Unified Write Filter, Embedded Boot Experience and Logon (the customizable splash screens and boot sequence), and the Windows Shell Launcher.
One interesting note: according to Direct Insight, Microsoft has created three levels of license pricing for Windows 10 IoT Enterprise: (a) Entry, which targets lower performance processors like the Atom and Celeron, and provides a 75% reduction in cost; (b) Value, which targets the Intel Core i3, Core i5, and Core M processors, with a 50% reduction in cost; and (c) High End, targeting the Core i7 and Xeon, with no cost reduction.
The consequences of these divides between editions of Windows 10 IoT are pretty clear.
- If you want to use Windows on an ARM-based device, you can only use the "small devices" or "mobile devices" editions, since the full edition is not yet ready to run on the ARM platform.
- If you want to build mobile devices with more than 256MB of RAM, they had better support the ARM platform, because there is no x86 chip support in an edition that supports more RAM than that.
- If you want more than 4GB of storage, you are dealing with x86 chips, insofar as embedded Windows goes.
- If you are looking to provide an operating system for single-board solutions or very small embedded devices, then the Windows 10 IoT Core edition could be suitable. The most frequent target for this type of development seems to be hobbyists working with the Raspberry Pi and other single-board devices -- these "makers" are really whom Core is aimed at, although there is little preventing its use in other applications and scenarios.
It also appears that users have lost the option of purchasing a "license-only" version of Windows 10 IoT, something that was possible for Windows 7 Professional for Embedded Systems and Windows Embedded 8.1 Pro. This was essentially a feature that allowed you to license a full installation of Windows on a system that was part of a larger device. The operating system itself could be standard, an identical copy of Windows 7 or 8, but since it was a component of a larger system or machine, you could assign a less expensive license to it.
No such option appears to exist for Windows 10 IoT, although nothing is preventing Microsoft from putting this old practice back into availability at any time.
What changes? The implications
For applications that currently run on Windows Embedded that are not Universal Windows applications, but that are instead standard x86 apps, it's difficult to see any advantage for the IoT editions of Windows 10, save maybe the Enterprise version. The other editions are essentially just stub operating systems that can run limited applications that understand how to make Windows API calls and interpret the results.
While developers can target each of the IoT editions of Windows 10 easily within Visual Studio, porting existing x86 apps to the Universal Windows platform is another project entirely. And recreating existing apps from scratch just to meld to Microsoft's new vision of what embedded operating systems should look like is an entirely different question -- one that would require some justification, and some return on the time and money invested in the porting effort.
The best that could be said about these IoT editions of Windows 10 is that they are additions, augmentations, and extensions of the Windows Embedded platform, and that they make new applications possible. It seems unlikely that Chase Bank or American Airlines is going to rewrite their ATM or kiosk software to target Universal Windows Platform-capable operating systems, especially when, at this point, UWP apps have capabilities that are a subset of full x86 apps (which is likely what these companies are currently running). These apps also will not generally run on the ARM platform, so these companies will most likely stay with what they know and what works well, at least for their existing applications.
For that reason, it is unlikely that Windows 10 IoT is going to replace Windows Embedded 7 and 8. Instead, we might see Chase Bank developing a new payment machine using Windows 10 APIs or American Airlines deploying new RFID bag tags that run Windows 10 IoT.
The question then becomes: Is this more than an IoT play? Is Windows 10 IoT a play to get Windows back on ARM? Shades of the ill-fated Windows RT operating system and Surface RT immediately come into mind, but it's hard not to draw the comparison. Windows has been for decades exclusively x86. Linux, on the other hand, has a vibrant community around the ARM chipset and has pretty much a complete repository of software and packages available to run on ARM.
Microsoft is just getting started in ARM and its single entry into ARM did not end well (can you say billion-dollar writedown?). Is this another trip to nowhere?
Another question: What is the roadmap for those currently running Windows Embedded? Confusingly, this statement from Microsoft seems to hint at an end of support coming: "Through July 17, 2017, Skylake devices running Windows Embedded 7, 8 and 8.1 will be supported according to the lifecycle support policy for those products. During the 18-month support period, these systems should be upgraded to Windows 10 to continue receiving support after the period ends. After July 2017, the most critical security updates will be addressed for these configurations, and will be released if the update does not risk the reliability or compatibility of the Windows Embedded 7/8/8.1 platform on other devices."
Much is still unclear. But there are tons of devices and systems bigger than a Raspberry Pi but different than a full desktop that a typical knowledge worker would use, and these Windows 10 IoT editions do not seem to be full replacements for the Windows Embedded versions you would have chosen for these applications until now. Buyer beware.