For quite some time now there have been rumours about Windows Phone 8 (WP8) being based on the Windows NT kernel (WinNTk). More recently a blogger called MS Nerd made the case that this is not true. Well, I’m going to add fuel to the fire and make the case that Windows Phone 8 can and should be based on the Windows NT kernel.
The first thing that we need to get out-of-the-way is the difference between saying WP8 will be based on Windows 8 (Win8) and saying it will be based on WinNTk. Saying WP8 is based on Win8 implies that it would bring along the Win8 user experience and legacy support. Microsoft has indicated that it wants the phone experience to stay optimized for phones, so the Win8 user experience is not going to make its way there anytime soon. But this has nothing to do with whether or not Windows Phone continues to use the Windows CE kernel or makes the switch to WinNTk. The kernel is focused on things like process structure, memory management, scheduling, device drivers, etc. It has little to do with the user experience. So when the rumors are circulating about WP8, Win8, and WinNTk it is important to keep in mind that the likely scenario is WP8 on WinNTk.
So why should Microsoft switch kernels? There are both technical reasons and practical reasons for the switch, and in the long-term doing so has one awesome benefit that I’ll save for the end. One important point is that when you do the same things twice it is almost impossible to have them both be completed at approximately the same time, be truly compatible with one another, and be of equivalent quality. Second is that the cost of staffing to repeatedly do the same thing twice is outrageous, even for a company the size of Microsoft. And third, the closer you get to wanting two things to be almost the same the less the justification for having two different things!
The history of Windows CE (and Windows Mobile) is that teams around Microsoft build things for the Windows NT-based operating systems and then either they or the Windows CE team itself takes that code and ports it (or hacks it into a subset) for the CE environment. This is done with small numbers of people, and the results are often left to languish a number of versions behind the mainstream product. Take the Common Language Runtime (CLR) as an example. The .NET Compact Framework (CF) was spun off from the original CLR a long time ago. It eventually was left in maintenance mode with just a small team in Microsoft’s India Development Center (IDC) handling bug fixing and minor tweaks. Issues, such as a garbage collection algorithm that was tuned for very small memory footprints and caused applications with large memory footprints to stall, were never intended to be addressed. However, once Windows Phone 7 came along Microsoft found itself having to try to recreate many of the optimizations it already had done for the full CLR in the Compact Framework. It had to add resources, and more senior resources at that, to the team. And that wasn’t to get new functionality, it was just to make CF perform closer to what the full CLR already was capable of. More on this story in a moment.
The Windows CE kernel itself has also been lacking many modern OS features such as SMP. While the latest version of Windows CE added SMP support, those who have been involved in operating system development for quite some time know that it takes multiple versions to really get this tuned up and running well. I’ve seen this on operating systems from TOPS-10 to VMS to Unix to Windows NT to Linux and a few others. Also no doubt the Windows CE SMP support was optimized for dual-core situations, but we know that multi-core (already the norm on x86) is coming to the ARM world too. WinNTk already has the most well tuned SMP support of any operating system kernel, and the resources and time required to bring Windows CE up to snuff (and keep it there) is high.
The same is true here in many other areas. Think about all the security work that has gone into WinNTk. Windows CE is designed for embedded systems that allow for a tightly controlled environment, and although they have added security features in recent releases a lot of work will be required to continue to track evolving requirements for general purpose devices such as Phones. Sure it can be done, but at what cost in resources to Microsoft?
You see Windows Phone without full drive encryption, a problem for enterprises, even though Windows has Bitlocker. Is the full-drive encryption you want on your Phone sufficiently different from the full-drive encryption you want on your Tablet to justify two different implementations? I don’t think so. You see Windows Phone without support for document encryption/decryption, even though Windows has RMS. You might want the management benefits of being able to join a domain. Sure these are possible to add to a Windows CE-based Windows Phone, but that takes resources and time. If Windows Phone were based on WinNTk this would take a lot fewer resources and a lot less time.
I bring up these resource issues both because its been obvious over the years that resources allocated to CE have been far lower than those allocated to Windows, but also because Microsoft has made dramatic personnel cuts in traditional businesses since 2008 and continues to look for ways to cut costs. Funding Windows CE development to support specific low-memory embedded scenarios makes sense. Increasing the funding for it to chase Windows in the general purpose OS market does not.
Now let’s go back to the .NET Compact Framework. When the Windows Phone 7 effort began we realized that CF was going to require a lot of work to make it meet their requirements. Garbage Collection was going to need significant rework, and performance work was needed across the board. At the same time Microsoft Research had a prototype of the full CLR ported to ARM and we were urged to use that for Windows Phone 7 rather than increase the investment in CF. Our analysis (and that of the CLR’s architect) was that there wasn’t enough time to meet Windows Phone 7’s aggressive schedule with a full CLR port (i.e., productization of MSR’s work plus a port to Windows CE) and so we added resources to the CF team and went to work on Windows Phone 7’s requirements. Windows Phone 7.5 continued with improvements in CF garbage collection, improvements that would not have been necessary with the full CLR since it has had them for years. At the same time Microsoft’s layoffs were taking hold, and Developer Division was hit hard. So now you have a much smaller organization devoting a larger percentage of its resources to doing little but duplicating work that it had done years earlier. It makes no sense. Porting the full CLR to Windows CE wouldn’t maximize the resource savings because you’d still need a porting team. However, if you had a Windows Phone 8 based on WinNTk you get full CLR for free. The .NET CF investment can shrink to cover maintenance. Lets take the new WInRT introduced in Windows 8. Does Microsoft really want to invest in porting the WinRT to Windows CE, and maintaining that port, when switching to WinNTk would allow WP8 to have WinRT at little or no cost?
Now let me go into two things missing from Windows Phone that will hopefully be addressed in WP8. The first is dual-core support. Yes Windows CE added dual-core (SMP) support, but apparently not before Windows Phone 7 took a snapshot. So why didn’t Microsoft just upgrade to the newer CE kernel for its Mango release? I can think of three reasons. One is that the dual-core support in CE just wasn’t up to snuff and so the Windows Phone team decided they weren’t going to introduce something that was non-competitive with IOS or Android. Another is that the kernel upgrade was too disruptive (which is why major kernel changes usually cause things at Microsoft to be labeled “.0” releases) relative to the benefits that would have been accrued. But I believe the most likely reason was that what was the point of putting a lot of effort into supporting a newer Windows CE kernel when you were already putting that effort into a WinNTk port?
Perhaps the biggest overall complaint about Windows Phone, starting with Windows Phone 7 and continuing through NoDo and Mango, is the lack of 3rd-party native mode application support. Originally some of this was schedule (for the first Windows Phone 7 release) and some of it was philosophical (the phone could be made more reliable by just having managed applications). But some of it, and I think the continuing reason, is that no one wants to embed Windows CE’s idiosyncracies in new apps. Again some of that is reliability (e.g., scenarios where a native mode application’s shared memory is not freed when the process is killed) and some is a desire to make apps portable across the three-screens (PC, Phone, TV) and a cloud world. Moving to WinNTk eliminates the CE idiosyncrasy problem and makes native mode applications (and particularly WinRT-based ones) more of a no-brainer.
I think that lays out most of the case of why Windows Phone should move away from Windows CE to the Windows NT kernel. So let me address a key objection to the move, “size”. Windows CE has a reputation for being small and modular, Windows has a reputation for being big and bloated. But Windows itself is about 6 years into an effort to completely restructure and clean up the code base, its resource requirements have actually shrunk over the last two releases (Win7 and Win8), and Windows 8 is very much focused on the low power/constrained resources environment that characterize both tablet and phone devices. Indeed I am running the Windows 8 developer preview on a tablet that is less powerful and has no more memory than the current generation of smartphones and even at this early stage it is as responsive as those devices. In some regards, such as boot time, it is actually faster! So could a WinNTk-based Windows Phone 8 run well on a 1Ghz CPU with 512MB of RAM? Of course it could. What about 800Mhz? Almost certainly. 256MB? Well, now I start to wonder. It is pretty clear that Microsoft is focusing on enabling low-cost smartphones from Nokia and others as a key part of its strategy. The question is, what does a low-cost smartphone’s specs look like in the fall of 2012? And how big a target is RAM for cost reduction? And how much savings can you really get using Windows CE over WinNTk.
The two biggest cost areas on a smartphone bill-of-materials is are the logic complex (processor, GPU, radio) and the screen. Memory is the third largest, but is composed of both RAM and FLASH memory so those represent two different discussions from a kernel decision standpoint. Mechanical aspects (packaging, buttons) are fourth, and cameras are fifth. Moore’s Law allows for two things to occur over time, either increased performance at constant cost or constant performance at lower cost. High-end smartphones absorb the electronics following the increased performance at constant cost track. Low-end smartphones can either try to go for reduced specs, purely follow the constant performance/lower cost track, or a mixture of both. The most likely path is to follow the constant performance/lower cost track on pure electronics and go for reduced specs in areas that don’t fully benefit from Moore’s Law. So, for example, stick to the 1Ghz processor/512MB RAM that is characteristic of first generation Windows Phone 7 devices because this will be dirt cheap in late 2012 but use cheaper materials in packaging and really focus on reducing display costs. The latter might occur from lower-quality displays, different resolutions, or both. A different resolution is the change that would require the most work in Windows Phone and is completely orthogonal to the Windows CE vs WinNTk decision. I would also expect cameras to either be eliminated or very low-cost/low-resolution. And some sensors (e.g., gyroscope) avoided. But the main point here is that spec changes that would make adoption of WinNTk undesirable are very unlikely.
Ok, so I think that is about it. Oh, there is one more thing! You might know about the Motorola Atrix. It’s an Android Smartphone that you can plug into a PC-like notebook body and it becomes an Android PC. It isn’t very interesting because of course no one really wants an Android PC (e.g., no apps for it) and so had little success. Someone else made an Android smartphone that plugs into a tablet body and turns your phone into a tablet. But without real support from Google for this it seems to have gone nowhere. Well, at least as early as 2006 Microsoft envisioned that you would carry around a phone that morphed into a full PC when attached to PC peripherals (large screen, keyboard, mouse). It just didn’t have the ducks lined up to pull it off (unless you wanted a dock that converted your Windows Mobile phone to a Windows CE PC, which a third-party did indeed create, and have about as much luck with as the Atrix). The move to WinNTk is a prerequisite for ever bringing this vision to reality. If you have the common kernel then you could have high-end smartphones that shipped with both the Windows 8+ user experience and Windows Phone 8+ user experiences and swap between them based on what peripherals were available. Maybe this is a “Windows 9” thing, or maybe it is a “Windows 10” thing, but the point is that going to a common kernel clears the path for a lot of innovative possibilities. Sticking with two different kernels will always make these scenarios difficult or impractical.
So I think I’ve laid out the case for Windows Phone 8 to be based on the Windows NT kernel. There is lots of upside and very little downside for Microsoft. Will it happen? I really don’t know. There are definitely a lot of Microsoft people, both current and former, who want it to happen. I could point out that a chunk of the WinNTk team moved over to the Windows Phone organization a couple of years ago, and while that proves nothing it certainly shows that the expertise to pull off the kernel switch is in place. If this is going to happen we shouldn’t have long to wait to find out. For Windows Phone 8 to release in 2012 Microsoft would need to hold a developers conference for it (e.g., Mix12) this coming spring. So we are likely within 4 or 5 months of knowing the answer.
Hey Hal, congrats on writing one of the very few articles on this topic that are really worth reading. There is something I don’t understand though. Your main point is that using the WinNTk on WP would give the WP division access to the .NET CLR and the .NET Framework for free (without having to port it). However, neither of these are part of the WinNTk. All of the .NET infrastructure runs in user-mode. Therefore, I doubt the benefits you mention can be realized to the degree you are implying…at least not solely by using the same kernel. On the other hand, the WinNTk includes things like the GDI and USER (windowing) subsystems, which makes no sense on a portable device. Furthermore, some things probably just shouldn’t work the same on a portable device as on a desktop (memory paging and swap files for instance). To me, something smells fishy.
Nevertheless, your article has convinced me that it is at least technically feasible to use WinNTk as the basis for WP (mainly due to the six year effort put into modularization). I’m just not convinced the issues you’ve raised can be driving forces behind such a move. Am I missing something?
Note that I’ve been intentionally vague as to what the definition of “WinNTk is. But the most likely definition is that it is the Windows 8 version of MinWin (plus perhaps some other intentionally chosen components). And even the Windows 7 version of MinWin does NOT contain GDI and USER.
The WinNTk port itself doesn’t itself bring something like the .NET CLR/Framework along, but having WinNTk enables the WP AppPlat and DevDiv Mobile teams to pick up and package the .NET CLR/Framework into WP rather than picking up and packaging the .NET CF. This extends to other user mode pieces as well.
As for things like pagefile/swapfile this would be a longer discussion. I guess I could make the argument that you might want these features, but more importantly you can turn them off in NT. And since the Windows Phone app model is already designed to run well on an OS that can’t page out dirty data, it would work just fine with this turned off! Really though I go back to the point about Windows 8 (and thus the Windows 8 MinWin) being tuned for tablets. The specs for a tablet are no different than for a high-end smartphone other than the larger screen size. So if your typical device has a 1-2Ghz, 1-2 Core, 1GB RAM, 8-64GB FLASH hardware base then you have to tune your algorithms to perform well on that. And to a large extent it doesn’t matter if that is a Windows 8 tablet or a Windows Phone 8 phone.
Hey Hal. Thanks for your reply! By referring to MinWin instead of the kernel (or WinNTk), your elaborations instantly made more sense to me. To my understanding the kernel is a rather well defined entity (at least academically). In it’s strictest sense I understand it to refer only to those components running in kernel mode. Referring to the future foundation of WP as MinWin instead of the WinNTk makes it much easier to envision from where the synergistic benefits are expected to develop. Great article! Now I agree 😉
Pingback: Could and should Microsoft change the heart of Windows Phone? | ZDNet
Pingback: Could and should Microsoft change the heart of Windows Phone? | Microsoft Powerpoint
This article makes perfect sense in so many ways. One thing you don’t seem to mention is this: why still call Windows Phone exactly that: a *Windows* Phone? Many people have said it would make more marketing sense to device a catchy name for WP7 and drop the Windows moniker as for many people it means a previous version of Windows Desktop OS (including the problems they’ve had with it) and it doesn’t seem to look anything like it. If the upcoming kernel-unification turns out to be true, that would perfectly explain why to keep the name “Windows Phone” as well. Very interesting article…
You’d have to look at this from two different standpoints, one being the classic marketing brand extension characteristics (in which Microsoft thinks that all operating systems should be called Windows and that the baggage the brand brings is far outweighed by the positives). The second being what its dreams around Windows have been since at least the mid-90s, where Windows was the OS for anything that needed an OS. To be honest with you I don’t see the kernel change as the real “oh that’s why they should use the name Windows Phone” moment. Windows 8 adopting and evolving Windows Phone’s Metro design style for its new UI does that for me. I expect to have a user experience that is optimized for my desktop, tablet, or phone yet is clearly and naturally part of the same experience. If Microsoft succeeds at that then they’ll have reinvigorated the Windows brand.
Pingback: Could and should Microsoft change the heart of Windows Phone? | Windows Updates
Pingback: Could and should Microsoft change the heart of Windows Phone? | Microsoft Security Essentials
Great article, I look forward to reading more of your stuff.
Thank MJF for the link-to 🙂
Great article, my feelings exactly but with more details and reasons. And as you mentioned, I believe this explains why Microsoft didn’t put mango on windows CE 7 for dual core SMP support. I mean, it would’ve been the most ready and reasonable approach (for early support in 2011 at mango launch) as opposed to waiting Q3/Q4 2012 with Apollo.
You are absolutely right. That’s exactly why MS put so much effort into MinWin and WinRT is the one complements the stack to run anywhere. Here my two cents on that topic http://janhannemann.wordpress.com/2011/11/07/the-shift-from-wpfe-to-windowse/
Just read your take on it too and I must say that it makes a whole lot of sense especially when spiced with Hal’s ‘perfect vision’.
Yea, Hal is a much better writer than me and this deep dive post is great.
Actually I meant to say that your article along with Hal’s, forms a clearer picture into the future Microsoft is headed. You gave me a good vision (especially with that spectacular chart) and Hal explained in detail, a step towards achieving that vision. Heck I could even see Microsoft using that chart themselves.
“WIndows Everywhere” has always been Microsoft’s strategy, though it was clear back in the 90s that this meant multiple implementations supporting the same API. Indeed their was a “Windows for Devices” (I don’t recall the real name) being worked on in the 16-bit era. It was abandoned in favor of what became Windows CE once Windows 95 shipped. So in essence the strategy was that Windows was a family of operating systems that implemented the Win32 API. But this has had limited success, and even if you look at Microsoft’s embedded strategy it is now to lead with the NT-derived embedded product and reserve Windows CE for only the most constrained devices. So I do think that Windows Everywhere is now starting to mean NT everywhere.
As for the whole Silverlight/WPF thing…I guess I should do a blog post.
Of course it was always the aim to have Windows everywhere, but the family will be downsized to one member, MinWin which basically is the latest NT kernel + essential OS components. In order to get a modern UI layer on MinWin they came up with WinRT that can run on PC, Tablet, Phone and XBox in the future. Windows 8 is the first incarnation of this strategy. To use the analogy of your post title, the Windows 8 and WP8 are twins living in different homes. Same genes but different environment.
Pingback: Convincing argument made to ditch the WP7 WinCE kernel for Windows NT in WP8 | WMPoweruser
About the atrix style usage, I guess it will be a simpler approach to just having a WindowsToGo SSD drive embedded in the phone, with data accessible both from the phone and the PC OS.
This way you will be able to plug also the CPU once you dock the device…
Pingback: Hal Berenson：为什么 Windows Phone 8 应该切换内核？ - 爱范儿 · Beats of Bits - 发现创新价值的科技媒体
Pingback: Hal Berenson：为什么 Windows Phone 8 应该切换内核？ « 清泉石上流
Great article! Good solid arguments and insights.
I’ve been thinking of this possibility since the first little snippets of Windows 8 UI came out in January, but I was thinking that they should go without the traditional desktop UI. The native argument + the scenario in which you just hook up your phone to your large monitor is very compelling however. With Win8 you’d even get the option of doing this wirelessly.
At this point, for me, the biggest decider is ecosystem. There’s the Apple, the Google and the Microsoft ecosystems – and here I’m thinking about everything from a phone, to the personal computer or laptop to the media center (xbox) experience. This is where it sounds like Microsoft is progressing at the moment and I’m hoping that we’ll see some big announcements around this at CES. Going with the same kernel for all of these form factors could potentially yield some compatibility advantages for Microsoft.
On the other hand, we’ve also seen that projects that have been built on top of Windows (such as Home Server and Media Center) have stagnated from becoming a part of Windows, partly I guess because they have to wait until certain things in the main branch gets done before they can roll their own features and partly because enterprise has such a big say in the development of Windows that the end user faced extensions get a lower priority. But I’m guessing that with Sinofsky at the helm and with Microsofts new found understanding of the potential in the consumer market, enterprise and consumer experience will get at least equal prioritizing.
The “stagnation” problem you mention is real, but unrelated to the point about using the same kernel. XBOX uses an older NT-based kernel and it certainly hasn’t stagnated. The problems with Home Server and Media Center are numerous. For one thing they are side shows, not part of mainstream Windows organizationally. Home Server comes out of the WIndows Server organization in STB while Media Center lives in the Interactive Entertainment Business (although it used to live in Windows). Both were done as “toe in the water” exercises, and when they didn’t quickly take off the OEMs that Microsoft relies on lost interest. Not only that, but Microsoft was stubborn on some important things. Microsoft has refused to seriously court the custom installer community with Media Center. The argument has always been that people who do customer A/V installations are a really small part of the market. But that ignores that the custom installations are the early adopters and their installers are the enthusiast community. And so Microsoft lost the opportunity to have thousands of model showhomes (sometimes literally given things like the “Parade of Homes”) and a positive mystique for Media Center. Instead it was mostly derived as “why would you want a PC in your living room” with no way to counter that impression. To this day I walk into open houses and see new Escient Fireball installations where I should see a Media Center. And as a former Escient Fireball owner myself, that makes little sense to me. Home Server has some similar problems, but to me the biggest is that it never achieved a decent retail footprint. The reason for that, and one people just don’t realize, is that you actually have to buy shelf space in retail stores. The Home Server team never had the money to do this, and apparently neither did their partners, and so Home Server’s biggest problem is that few potential customers know what it is and fewer still have ever seen one. And the longer that goes on the less anyone believes that Home Server will ever amount to anything. At this point the OEMs have abandoned it, so I think it is effectively dead. It just proves the adage “Go Big or Go Home”.
I do think experiences like Media Center and Home Server are why Steve Ballmer has been killing smaller projects. Microsoft doesn’t have a good track record with projects it is unwilling to throw its full weight behind.
Good points, very interesting to read your insights!
Home Server certainly faced/faces many challenges – still it had a very dedicated fan base who could have helped the perception of Microsoft as a consumer friendly brand…
I do think that the new storage features in Win 8 Server sound interesting and could potentially revive Home Server v1’s magical storage pool.
For simplicity’s sake they could drop Windows Home Server entirely and fold its features into Windows 8 proper. What’s really there anyway, that couldn’t run within the Windows Home Premium SKU? For example, the admin console could be replaced by the Immersive Start Screen, which could actually also be remoted directly into from a tablet. With the new found ability to run on ARM, we could potentially see power saving special purpose and compact setups, where Windows would be acting as a sort of competitor to all of these NAS boxes that never really seem to work entirely as one would wish…
Pingback: Convincing argument made to ditch the WP7 WinCE kernel for Windows NT in WP8 - HTC VERIZON – HTC VERIZON
Pingback: IT资讯生活 » 为什么Windows Phone 8应该更换内核？
Pingback: Google Reader Share: Hal Berenson：为什么 Windows Phone 8 应该切换内核？ « Kailai's Lifestream
Pingback: Hal Berenson：为什么 Windows Phone 8 应该切换内核？ | IT & 数码
Pingback: WPDang || Apollo与NVidia四核
Pingback: WinRT Wishlist: Live Tiles for “Classic” Apps
Interesting article, it sounds like any WP7 device that exists now, would be able to run WP8 (even if it were to change to the new kernel). What is your take on this? Would it be worth getting one now or waiting til WP8?
It is likely WP8 will run on first generation WP phones, and near certain it will work on the second generation (those that initially ship with) WP7.5 Microsoft wants a reputation of being as end-user friendly as Apple and so will not drop updates on older phones until their is a technological reason to do so. Plus it isn’t likely to want to piss people off who are sill in a 2-year contract period, which will be the case with most of the installed base. So I don’t see WP8 as a reason to wait. Now if you already have a first gen device (e.g., Samsung Focus) you might want to skip the second gen (e.g., Focus S) and see what happens next summer or fall.
also kinda explain why MS was trying to not get too many native code apps or engins.
ex http://wmpoweruser.com/unity-game-engine-skipping-wp7-may-come-to-wp8/ or unreal engine
You barely addressed the most important point: Apps can be written once and run anywhere: phones, tablet, or PC. That’s a powerful message.
Pingback: Boot up: Apple offers iPod nano 1st gen replacements, Windows Phone 'on road ...
Pingback: Boot up: Apple offers iPod nano 1st gen replacements, Windows Phone ‘on road … | My Blog
Pingback: Boot up: Apple offers iPod nano 1st gen replacements, Windows Phone ‘on road … | 3mgmedia.com
Pingback: What would WP8 look like if it replaced it’s WinCE kernel with WinNT .. | Silverlight and other cool things …
Pingback: Windows Phone 8 (Apollo) for all devices? - Page 2 - Windows Phone Forums at wpcentral.com
Pingback: Win 8 and Windows Phone 8 code-combine rumored
Pingback: Win 8 and Windows Phone 8 code-combine rumored « News « Etget.com – All about Technology and Social Media News
Pingback: Win 8 and Windows Phone 8 code-combine rumored | Rob Cell Phones
Pingback: RedHawk to be part of Microsoft's Windows Phone 8, too? | ZDNet
Pingback: RedHawk to be part of Microsoft’s Windows Phone 8, too? | Technology News
Pingback: Windows Phone 8 – RedHawk | Windows 7 Editing
Pingback: RedHawk to be part of Microsoft’s Windows Phone 8, too? « Technology News with Daniel St-Louis
Pingback: I will buy a WP7 phone now but... - Page 2 - Windows Phone Forums at wpcentral.com
Pingback: A Tale from the Trenches: porting (or not) a Windows Phone app to Windows 8 | virtew
Pingback: No Phone App Left Behind on Win8: A Proposal