MinWin

MinWin is a term used informally by Microsoft to describe the kernel and operating system components that form the basis of releases of Microsoft Windows starting with Windows Vista. The term was first used in 2003 to describe approximately 95% of the common components of the operating system, but has over time come to refer to a significantly smaller portion. Its most recent and most well-known variation was a minimalistic, self-contained set of Windows components that shipped as part of Windows 7 and Windows Server 2008 R2.

Contents

Through the history of Microsoft Windows, the core of the operating system was generally designed to be a single large, inter-related set of components. With successive releases, the set of components considered to be the core of Microsoft Windows numbered into the thousands, with numerous dependencies that prevented the company from producing a version of Microsoft Windows that (for example) didn't include the graphical user interface and printing components. Further complicating this was the issue that many configuration tasks could only be performed using the graphical user interface. Windows reviewer Paul Thurrott described the approach to Windows's development as "a house of cards [which] is precariously shifting in the breeze."[1]

In an April 2003 interview coinciding with the release of Windows Server 2003, Rob Short, the vice-president of the Windows Core Technology group, explained that creating a command-line version would involve "looking at the layers and what's available at each layer and how do we make it much closer to the thing the Linux guys have -- having only the pieces you want running. That's something Linux has that's ahead of us, but we're looking at it. We will have a command line-only version, but whether it'll have all the features in is another matter. A lot of the tools depend on having the graphical interface."[2] Windows Server 2003 was seen by reviewers such as Direction On Microsoft's Michael Cherry as having reduced the reliance on graphical tools to configure the operating system,[3] but the operating system itself still required the full graphical interface to be installed, even on servers where it would never be needed.

After Windows Server 2003's release, Rob Short assembled a team of kernel architects at Microsoft, with the intention of untangling and documenting the dependencies within the core operating system. The kernel development team had realized that they were having difficulty being able to "predict the impact of changes and to make broad, cross-group changes to Windows",[4] and the new kernel architecture team would aim to improve software engineering practices both within the Windows kernel itself, as well as with the other components of Windows. To do this, every component of the operating system (consisting of about 5,500 distinct files in late 2005,[4] during the development of Windows Vista) was assigned a "layer number" that represents its dependency position relative to other components, with lower-numbered components being closer to the core of the operating system, and higher numbers representing high-level components. With this information, the core architecture team began to address a range of issues where low-level components were reliant on high-level components, and finding ways to resolve those dependencies. In doing so, a number of new options for creating focused sub-sets of Windows for different purposes became possible.

Larry Osterman, a developer on the Windows Audio team at Microsoft, described the effort in a November 2008 posting to the Channel 9 discussion forum as, "refactoring code along architectural layering lines, and it's the natural extension of what we've been doing since the Longhorn Reset (so arguably Vista was the first "minwin" based operating system)."[5] Brandon Paddock, also a Windows developer, expanded on this, saying, "It's more like a set of guidelines and principles, kind of like how SDL (Secure Development Lifecycle) guides our development process toward more secure software, the MinWin effort guides Windows components to fit into a more clearly and well-defined layered architecture."[6]

The first use of the term "MinWin" by Microsoft was in 2003 during the development of Windows Vista, known at the time by its codename, Longhorn. MinWin was described at the time as consisting of approximately 95% of the total Longhorn code base,[1] with the additions for each edition of Longhorn layered on top of that. While the name MinWin was never used as part of Windows Vista's marketing efforts or in presentations to developers or IT professionals, some of the kernel architecture team's componentization and refactoring work was shipped with Windows Vista.

One of Microsoft's goals for Windows Server 2008 was to produce a variant with a sub-set of the entire Windows operating system that contains enough components to run a number of common server roles, such as Active Directory, Microsoft DNS Server, DHCP Server, and Internet Information Services. During its development in 2005 and 2006, this installation option was internally called "MinWin",[7] and sometimes externally "Server Foundation",[8] before its final name of Server Core was chosen. By the time Server Core was ready to be shipped with Windows Server 2008, however, the term "MinWin" had changed to describe a much smaller set of components, and its focus and intent had shifted from being a large sub-set of the complete Windows operating system with some high-level components removed, to being a small, self-contained operating system that has no dependencies on higher-level components.

Andrew Mason, the program manager at Microsoft responsible for Windows Server Core, explained in a February 2008 interview for TechNet that Windows Server 2008 (both the full installation, as well as Server Core) is built on top of this smaller set of components.[9] In this release, MinWin is "the definition of the lowest-level pieces of the operating system", including Windows kernel, the hardware abstraction layer, file system and networking support. Other parts commonly considered part of the core operating system, such as the event logs, performance counters, Windows Management Instrumentation, are part of Server Core.

In October 2007, Eric Traut, a developer at Microsoft, demonstrated a self-contained MinWin system, made up of about 100 files, on which a basic HTTP server was running.[10] Traut noted that MinWin takes up about 25 MB on disk and has a working set (memory usage) of 40 MB. It lacked a graphical user interface and is interfaced using a full-screen command line interface. Traut explained during the demo that MinWin would not be offered as a stand-alone product, but would instead be used as the basis for future operating system releases such as Windows 7.[11]

Several months after Traut's demonstration, some confusion arose from an interview by Ina Fried of CNET's News.com with Steven Sinofsky, the vice-president of Windows engineering at Microsoft. Sinofsky described the Windows 7 kernel as a further evolution of the Windows Server 2008 kernel, itself an evolution of the Windows Vista kernel.[12] This was interpreted by web sites such as Slashdot[13] to mean that Windows 7 would not include MinWin. Mark Russinovich suggested that some of the confusion surrounding MinWin may be related to the imprecise use of the word "kernel";[14] MinWin is not, in and of itself a kernel, but rather a set of components that includes both the Windows NT Executive and several other components that Russinovich has described as "Cutler's NT".[15]