If you follow tech news at all, you may have seen reports recently that Microsoft is preparing a leaner new kernel for the next major Windows release, codenamed Windows 7. Dubbed MinWin, this new kernel is notable for a few reasons. First, it's the first major bit of actual news about Windows 7 yet revealed. And second, it suggests that Microsoft is preparing to push Windows into even more markets, since the current version of this kernel can run in as little as 40 MB of memory.
It sounds really interesting. There's just one problem: MinWin isn't new. And if you're running Windows Vista or a pre-release version of Windows Server 2008, you're already using this technology. In fact, it's the basis for Microsoft's componentization work on both of those OSes.
I first wrote about MinWin way back in May 2003, in an article describing how Microsoft was componentizing Longhorn, the project that went on to become Windows Vista. MinWin, I wrote, was "the base OS" component of Longhorn. "This base OS component is completely language independent and is a subset of all of the editions of Longhorn Microsoft will create. Thus, Microsoft and its hardware partners will be able to use this base OS to create actual Longhorn editions (referred to as Longhorn 'SKUs' after a retailing term); at this time it appears that IT administrators (and individuals, naturally), will not be able to perform this feat, but will rather license specific Windows SKUs and go from there." That is, of course, exactly what happened: Microsoft used MinWin and Vista's componentized base to create a record number of Vista product versions. (I also previously wrote about MinWin here and here.)
In early versions of Longhorn Server, which went on to become Windows 2008, MinWin was called Server Foundation, but it was later renamed to Server Core, which I assume is a name you're familiar with. In a 2005 article about Longhorn Server, I wrote that Server Foundation (MinWin) was a core server OS component that would provide minimal server OS functionality and be used as the basic building block for job-specific server implementations and even other Longhorn Server editions. Server Foundation would be extended with a number of server roles that add functionality to the base component. This too, is exactly what happened.
So why all the excitement about MinWin now? In late October 2007, Microsoft Distinguished Engineer Eric Traut appeared in an online presentation in which he discussed Microsoft's work on MinWin for Windows 7. "A lot of people think of Windows as this really large, bloated operating system, and that may be a fair characterization," he said. Noting that a full Vista install image takes up over 4 GB on disk, MinWin, by comparison, was a tiny 25 MB, and Microsoft is working to make it even smaller. This touched off articles by every tech news agency on earth, all excited to finally have something about Windows 7 they could write about.
They should have Googled the term first. Obviously, the Windows 7 version of MinWin is enhanced over the work Microsoft did with Vista and Windows 2008, but suggesting that it's completely different is disingenuous. Not doing even an iota of research about a topic, however, is perhaps even worse.
But wait, there's more
Microsoft technical fellow Mark Russinovich emailed me to address my comments about about MinWin and let me know that the MinWin efforts on Windows 7 are "the first step to layer the system from a dependency perspective and isolate pieces in their own build trees" and is thus somehow different from the MinWin efforts on Longhorn (Windows Vista and Windows Server 2008). To me, this MinWin description sounds identical to the way Windows 2008 was developed, a process I outline in great detail in Inside Windows Server 2008.
Here's a short excerpt:
Microsoft has restructured the build process for Windows 2008 so that it, like the product itself, is more compartmentalized. There is a main OS build every day, as with previous product versions, but the process of getting revisions into that main build is far more granular than before ... Because of the componentization of the development process with Windows 2008, the ship room strategy has changed since Windows 2003 as well. "It's more evolved now," Alex Hinrichs, the Windows 2008 project manager, said. "We don't just have the main ship room. Now we also have seven distributed ship rooms, run by people who meet with the people checking in code below them. They all have daily meetings, as does the main ship room. The main ship room's agenda is simple: Who in the seven distributed ship rooms is ready to bring code up [the tree into the main build]?"
In other words, Windows 2008 appears to be built in exactly the way as described by Russinovich above: Code is added only to the main OS build when the dependency problems in isolated sub-components have been resolved in one of the sub-build trees.
So are these really two completely different technologies? Microsoft may argue otherwise, and certainly Russinovich has the insider's view, but the names are the same, the goals are the same, and the descriptions and functions are almost identical. I'm not saying they're exactly the same, but my guess as an outside looking in is that the MinWin work in Windows 7 is a continuation of work that started in the Longhorn project.
December 2007 update: Russinovich discusses MinWin again
Microsoft this week released a Channel 9 video featuring Microsoft Fellow Marc Russinovich, who continues his argument that the MinWin feature previously revealed for Windows 7 is somehow a completely different from the MinWin work that first occurred in Windows Vista and resulted in the Server Core feature in Windows Server 2008. Microsoft has been working on componentizing Windows for years, and finally achieved that goal with Vista. In subsequent releases, including Windows Server 2008 and Windows 7, that work is being continued and refined. But Russinovich continues to maintain that MinWin/Vista, Server Core/Win2008, and MinWin/7 are completely different. Frankly, he would know: Russinovich, aside from being one of the smartest people in the world, has more knowledge of Windows internals than anyone.
So I was hoping that this Channel 9 video would shed new light on his contention that MinWin/7 is, in fact, completely different from MinWin/Vista and Windows Server 2008's Server Core feature. Unfortunately he doesn't supply any new information.
Here are his arguments in a nutshell. If you want to follow along in the video, dive in at about 13:00.
1. The name usage is coincidental. "It's kind of unfortunate that the name MinWin was used with Server Core [which it wasn't actually; it was first used with Vista --Paul]," Russinovich says. "So a lot of people, when they heard 'MinWin,' thought, oh, that's the basis for Server Core. Actually, the MinWin we're talking about today is tot--, something pretty different." Note how he catches himself there.
2. Server Core is much bigger than Windows 7's MinWin. Server Core is 1.2 GB in size, a "pretty big chunk," as he says. MinWin/7 as we know, will be much smaller. Thus these two things are completely different.
3. Its all semantics. People use the word "kernel" to mean different things, which confuses matters. "When I say kernel/MinWin, what I'm saying is that the kernel is NTOS kernel, the core of Windows that runs in kernel mode," Russinovich says. "It's got a lot of support components around it ... That includes some system level stuff. There's no windowing manager ... inside of MinWin. With Server Core, they're really just snipped those lines with a scissor basically where you still bring it in but nothing you're doing will ever exercise those lines going out. It's OK." So... In Server Core, one might say that Microsoft went to a certain length to separate the core of the OS from the supporting components. In Windows 7, the company will go further in isolating these components.
Here's the thing. As has always been the case, Russinovich's description of MinWin/7 sounds substantially, no, exactly, like the work Microsoft did with MinWin/Vista and Server, just evolved to new but recognizable heights: "Analyze the dependencies and carve out the lowest, smallest core component of Windows, that would be a standalone, testable slice of Windows, and that--analyzing the dependencies, cutting the lines, the cycles, from MinWin to higher level components, making sure that MinWin doesn't depend on anything else, that it's totally self-contained. It can be built separately from the rest of Windows and run independently."
I'm sorry, really. But that does sounds like Server Core. It sounds like an evolution of what came before, which is the way I've always described this. What this all boils down to, really, is semantics. Microsoft began work on something called MinWin several years ago. The goal was to isolate the core of Windows from its non-constituent sub-components so that the Windows OS could be componentized. That work can be seen today in Vista's image-based installation scheme and in Windows Server 2008's Server Core. And it appears to be evolving for Windows 7. From what I can see, the story hasn't changed at all.
Portions this article first appeared in the October 23, 2007 and October 30, 2007 issues of Windows IT Pro UPDATE. --Paul