Engineering Windows 7

Welcome to our blog dedicated to the engineering of Microsoft Windows 7

Reflecting on a few recent threads…

Reflecting on a few recent threads…

When we kicked off this blog, the premise was a dialog – a two-way conversation about the engineering of Windows 7.  We couldn’t be happier with the way things have been going in this short time.  As we said we intended to do, we’ve started a discussion about how we build the product and have had a chance to have some back and forth in comments and in posts about topics that are clearly important to you.  To put some numbers on things, I’ve personally received about 400 email messages (and answered quite a few) and all total we have had about 900 English language comments from about 500 different readers (with a few of you > 10 comments).  Early numbers show we have about 10x that latter number in readers+page views.

A number of folks on the blog have asked for more details about how we build Windows—what’s the feature selection process, the daily build process, globalization, and so on.  And in keeping with our new tradition of seeing the other “side” of an issue, many folks have also said they feel like they have enough of that information and want to know the features.  So in this post I want to offer a perspective on a couple of features that have been talked about a bunch, and also a perspective on talking about features and feature selection.

We love the response.  We have seen that some topics have created a forum for folks to do a lot of asking for features, and we will do our best to respond in the context of what we set out to do, which is to have a discussion about how Windows 7 is engineered, including how we make choices about what goes in the product.  I admit that it might be tempting (for me) to blog a big long list of features and then say “give us feedback“.  It is tempting because I have seen this in the past and it is a certainly an easy thing to do that might make people feel happier and more involved.  However, there are some challenges with this technique that make these sorts of forums less than satisfying for all of us.  First, it is “reactive” in that it asks you to just react to what you see.  Absent a shared context we won’t be remotely on the same page in terms of motivations, priorities, and so on.  This is especially the case when a feature is early and we aren’t really capable of “marketing” it effectively and telling the story of the feature.  Second, a broad set of anecdotal feedback (that is free text) is not really actionable data and doesn’t capture the dialog and discussion we are having.  Making decisions this way is almost certain to not go well with the “half” of the folks who don’t agree with the decision or prioritization.  And third, there's a tendency to feel that feedback given yields action in that direction.  These are some of the reasons why we have taken the approach of talking about how we are making Windows 7.

Some have suggested that we publish a list of features and then have a ranking/voting process.  In fact some have gone as far as doing that for us on their own web sites.  Thank you--these are interesting sites and we do look at them.  But I think we can all agree that there is also a challenge that many folks are familiar with which is that a self-selected group provides one type of feedback which is likely to be different than a group that is selected intentionally as being representative.  I was recalling an old episode of Saturday Night Live, “Larry the Lobster”, where for a toll call you could vote to save Larry from the stove or not.  We all know that is a non-scientific poll, but we also don’t even know if it is a non-scientific poll of views of animal rights or of food preferences.  I think the value of voting on specific features goes beyond just entertainment, but we also have to spend the energy making sure we are thinking about the issues within the same context.  We also want any sample of customers we do to be representative of either the broad base of customers or the specific target customer “segment”.

Thus a big part of this blog is about creating a forum where we hear from each other about what is important and what our relative contexts are that we bring to the discussion.  That’s why we think about this as a dialog—it is not a question and answer, request and response, point and counter-point, or announcement and comment.  Personally, I am genuinely benefiting from the dynamic nature of what we are going to blog about based on those participating in the blog.  So this is much more like a social where we all come to meet and talk, than a business meeting where we each have specific goals or a training class where one party does all the talking. 

In that spirit, it seems good to continue a conversation about a few points that have come up quite a bit and I think folks have been asking for a point of view on these.  Each is worthy of a post on its own, but I also wanted to offer a point of view about some specific feature requests.  Let’s look at some topics that have come up as we have talked about performance or the overall Windows experience.  Because this is “responding” to comments and input, there is a potential to delve into point/counter-point, I am hoping we can look back at the “context” discussions we have been having before we get too deep in debate.

Profile-based Setup

In terms of feature ideas, a number of you have suggested that we offer a way at setup time to configure Windows for a specific scenario.  Some have suggested scenarios such as gaming, casual use, business productivity, web browsing, email, "lightweight usage", and so on.  There is an implication in there that Windows could perform (speed, space, etc.) better if we tune it for a specific scenario along these lines, but in reality this assumption probably won’t pan out in a consistent or general way.  There are many ways to consider this feature—it could be one where we tweak the contents of the Start Menu (something admins do in corporations all the time), or the performance metrics for some low level components (disk block size, tcp/ip frame sizes, etc.) or the level of user interface polish (aka “eye candy” as some have called it), and so on.  We’ve seen scenario or role-based setup as a very popular feature for Windows Server 2008.  In the server environment, however, each of these roles represents a different piece of hardware (likely with different configurations) or perhaps a specific VM on a very beefy machine, and also represent very clearly understood "workloads" (file server, print server, web server). 

The desktop PC (or laptop) is different because there is only a single PC and the roles are not as well defined.  Only in the rarest cases is that PC dedicated to a single purpose.  And as Mike in product planning blogged, the reality is that we see very few PCs that run only a specific piece of software and in nearly every study we have ever done, just about every PC runs at least one piece of software that other people do not run.  So we should take away from this the difficulty in even labeling a PC as being role specific.  Now there are role-specific times when using a PC, and for that the goal of an OS is to adapt well in the face of changing workloads.  As just one example of this in Windows Vista, consider the work on making the indexer a low priority activity using the new low-priority I/O APIs.  I know some have mentioned that this is “something I always turn off” but the reality is that there is an upfront cost and then the ongoing cost of indexing is indeed very low.  And this is something we have made significant improvements in for Desktop Search 4.0 (released as a download) and in Windows 7.  The reality is that a general purpose OS should adjust to the workloads asked of it.  We know things are not perfect, and we know many of you (particularly gamers) are looking for every single potential ounce of performance.  But we also know that the complexity and fragility introduced by trying to “outsmart” core system services often overshadows the performance improvements we see across the broadest sampling of customers.  There’s a little bit of “mythbusters” we could probably embark on so -- how about sharing the systematic results you have achieved and we can address those in comments?

Another challenge would be in developing this very taxonomy.  This is something I personally tried hard to do for Office 95 and Office 97.  We thought we could have a setup “wizard” ask you how much you used Word, Excel, PowerPoint, and Access, or a taxonomy that asked you a profession (lawyer, accountant, teacher).  From that we were going to pick not just which applications but which features of the applications we would install.  We consistently ran into two problems.  First, just arriving at descriptors or questions to “categorize” people failed consistently in usability tests—the classic problem when given a spectrum of choices people would peg all of them in the middle or would just “freeze up” feeling that none fit them (people don't generally like labels).  Second, we always had the problem of either multiple users of the same PC or people who would change roles or usage patterns.  It turns out our corporate customers learned this same thing for us and it became routine to “install everything” and thus began an era of installing the full suite of products and then training was used to narrow the usage scenarios. 

The final challenge has been just how do you present this to customers and when.  This sequence of steps, the out of box experience, or OOBE, is what you go through when you unbox a PC (the overwhelming majority of Windows customers get it this way) or run setup from a DVD (the retail “packaged product” customer).  This leads to the next item which is looking to the OOBE as a place to do performance optimizations.  Trying to solve performance at this step is definitely a challenge and leads to our “context” for the out of box experience.

Out of Box Experience - “OOBE”

The OOBE is really the place that customers first experience Windows on a new PC.  As many have read in reviews of competitive (to Windows PCs) products the experience goals most people have relate to “how fast can I get from packing knife to the web”.  For Windows 7 we are working closely with our OEM partners to make sure it is possible to deliver the most streamlined experience possible.  Of course OEMs have a ton of flexibility and differentiation opportunties in what they offer as part of setting up a new PC, and what we want to do is make sure that the “core OS” portion of this is the absolute minimum required to get to the fun of using your PC. 

By itself, this goal would run counter to introducing a “profiling” or “wizard” help gauge the intended (at time of purchase) uses/usage of a PC.  That doesn’t mean that an OEM could not offer such a profiled experience that could provide a differentiated OOBE experience, but it isn’t one we would ask all customers to go through as part of the “core OS” installation. 

I recognize many of you as PC enthusiasts have gone through the experience of setting up a Linux PC using one of the varieties of package managers—probably many times just to get one installation working right.  As you’ve seen with these installs (especially as things have recently converged on one particular end-user focused disti), the number of ways you can produce a poorly running system exceeds the number of ways you can produce a fully functional (for your needs) setup  In practice, we know that many components end up depending on many others and ultimately this dependency graph is a challenge to manage and get right, even with a software dependency manager (like Windows Installer).  As a result, we generally see customers benefitting from a broad base of software on the machine so long as that does not have a high cost—developing that install is a part of developing the product, balancing footprint, architectural connections, system reliability, etc.

So our context for the out of box experience would be that we don’t want to introduce complexity there, where customers are least interested in dealing with it as they want to get to the excitement of using their new PC.  I think of it a bit like the car dealers who won’t hand you the keys to your car until you sit and watch a DVD about the car and then get a guided tour of the car—if you’re like me you’re screaming “give me the keys and let me out of here”.  We think PC buyers are pretty much like that and our research confirms that around the world.

We also recognize that there are expert users who might want to adjust the running system for any variety of reasons (performance, footprint, surface area, etc.)  We call this the “Turning Windows Features On or Off” which is the next item we’ve heard from you about.

Windows Features

If we install the typical installation of Windows as one that is basically all the features in the particular SKU a customer purchased, then what about the customer that wants to tweak what is installed and remove things?  Customers might want to remove some features because they just never use them and don’t want to accidently use them or carry with them the “code” that might run.  Customers might be defining a role for the PC (cash register) and so making sure that specific features are never there.  There are many reasons for this.  For many releases Windows has had the ability to install or uninstall various features that are part of Windows.  In Windows Vista this was made more robust as the features are removed from the running system but also remained available for reuse without the original DVD.  We also made the list of features longer in Windows Vista.

For Windows 7, many have asked for us to make this list longer and have more features in it.  This is something we are strongly considering for Windows 7 as we think it is consistent with the design goals of “choice and control” that you have seen us talk about here and quite a bit with Internet Explorer 8.0 beta 2.

Of course we have the same challenge that Linux distributions have which is you can quickly remove things could break other features by being removed, and then you have to have all the complexity of informing the customer of these “dependencies” and ultimately you end up feeling like everything is connected to everything else.  On some OS installations this packaging works reasonably well because there is duplication of features (you pick from several file browsers, several web browsers, several office suites, several GUIs even).  The core Windows OS, while not free from some duplication, does not have this type of configuration.  Rather we ship a platform where customers can add many components as they desire.

For customers that wish to remove, replace, or just prevent access to Windows components we have several available tools:

  • Set Your Default Programs (or Set Program Access and Defaults).  In Vista these features allow you to set the default programs/handlers by file type or protocol.  This was introduced in Windows XP SP1.  In Vista the SYDP was expanded and we expect all Microsoft software to properly register and employ this mechanism.  So if you want to have a default email program, default handler for GIF, or your choice of web browser this is the user interface to use.  Windows itself respects these defaults for all the file types it manages. 
  • Customizing the start menu or group policy.  For quite some time, corporate admins have been creating “role-based” PCs by customizing the start menu (or even going way back to progman) to only show a specific set of programs.  We see this a lot in internet cafes these days as well.  The SPAD functionality takes this a step further and provides an end-user tool for removing access to installed email programs, web browsers, media players, instant messengers, and virtual machine runtimes. 
  • Removing code.  Sometimes customers just want to remove code.  With small footprint disks many folks have looked to remove more and more of Windows just to fit on SSDs.   I’ve certainly seen some of the tiny Windows installations.  The supported tool for removing code from Windows is to use the “Turn Windows Features on and off” (in Vista) user interface.   There are over 80 features in this tool in premium Vista packages today.

Many folks want the list of Windows features that can be turned on / off to be longer and there have been many suggestions on the site for things to make available this way.  This is more complex because of the Windows platform—that is many developers rely on various parts of the Windows platform and just “assume” those parts are there.  Whether it is a media player that uses the windows address book, a personal finance package that uses advanced print spooling, or even a brand new browser that relies on advanced networking features.  These are real-world examples of common uses of system APIs that don’t seem readily apparent from the end-user view of the software. 

Some examples are quite easy to see and you should expect us to do more along these lines, such as the TabletPC components.  I have a PC that is a very small laptop and while it has full tablet functionality it isn’t the best size for doing good ink work for me (I prefer a 12.1” or greater and this PC is a 10” screen).  The tablet code does have a footprint in memory and on the 1GB machine if I go and remove the tablet components the machine does perform better.  This is something I can do today.  Folks have asked about Photo Gallery, Movie Maker, Windows Mail, Windows Calendar…this is good feedback and good things for us to consider for Windows 7. 

An important point is that a vast majority of things you remove this way consume little or no resources if you are not using them.  So while you can reduce the surface area of the PC you probably don’t make it perform better.  As one example, Windows Mail doesn’t slow you down at all if you don’t have any mail (or news) accounts configured.  And to be certain you could hide access with SPAD or just change the default protocol handler to your favorite mail program. Another example is you can just change the association and never see photogallery launched for images if that is your preference.  That means no memory is taken by these features.

This was a chance to continue our discussion around how we are learning from our discussion and some specifics that have come up quite a bit.  I hope we are gaining a shared view of how we look at some of the topics folks have brought up. 

So this turned into a record long post.  Please don’t expect this too often :-)


Leave a Comment
  • Please add 4 and 4 and type the answer here:
  • Post
  • OOBE is also the cause of law suits THAT you guys consistently lost. I am fully aware a big company like your always busy with law suits. But the bundling of software (IE, WMP, even Calculator) will lead you to law suits that you guarantee to lose.

    I am fully aware of ongoing Windows Live Development. But by the time you bundle Windows Live for OOBE reason, you will lose the case again.

    So here is my suggestion.

    Introduce Windows Lite, an OS without IE, WMP, and other applications. When people sue you, you can bring it up and say everyone has the choice to buy Windows Lite.

    When buying other version of Windows Edition that include IE and WMP, the customer specifically asked for it, thus, you have a protection from law suits.

    Note that the attack surface is the same, only there are less holes for successful attack.

  • @Domenico

    What's wrong with eyecandy? Doesn't Windows Vista add eyecandy?

    Ubuntu boots and performs petty good, arguably better then Windows. I got it on a 5 year old PC that Vista won't even install on, so I won't argue with you about this.

    I think Ubuntu is a great operating system. I use Windows & Linux, and they both have strengths and weaknesses. You need to get over you biases because it just makes you look like a zealot.

  • @joemoe

    I use Vista Ultimate in 3 PC  

    1) Enthusiast

    2) Notebook

    3) OLD PC build in 2003 with:

    Asus p4p 800

    Intel P IV 2,4 ghz

    Nvidia 7600 GS (update 2nd time)

    1,5 gb ddr 400

    VISTA Ultimate x86 work superb with this hardware+ hotifix .

    Ubuntu crash crash and crash

    and is SLOW.

    this is my experience.

  • I may be completely off base here, but if there's a fresh installation of Windows without IE (which is the only browser that would be included with Windows), how exactly is it that people would get online to download the alternatives?  

    If WMP and other Microsoft applications weren't bundled with Windows by default, it seems like OEMs would have even more of an excuse to bundle extra trial applications with their PCs.  

  • Your average PC user (me included) will buy your product based on what they can see.  The controls that are visible to them.  It looks terrific when switched on.  What you want to do and how you get there is easy to follow.  You can customize the look of it easily.  There are lots of new things (programs) to play with - that are useful.  (I wouldn't push 'touch' as the main selling point if I where you.)

    The other thing is your OEM partners will always sell with an all-in-one motherboard as this is the cheapest way to get the cost down.  So, making sure the on board graphics can cope with Win 7 would be important.

    I know that everyone else is an expert here - plus they install top-of-the-range graphics cards, and strip the guts out of Windows, but I only represent average Joe PC user.

    Even if I do know 'shift' right click opens an additional menu in Explorer. What % of Windows users know that?

  • Windows Vista for Beginners has ran a survey exactly about this topic and just published an article called "How to make Windows 7 the best Microsoft OS ever":

  • I would like to say a thanks to Steven and the rest of the Windows team for providing us with the opportunity to have these discussions.

    I have been reading the comments for this post and have picked my favorites that I would like to hear more about:

    1. In this post, you touched on the concept of "Profile Based Setup". I would also like to hear your thoughts on creating a "Profile Based Bootup" similar to the Safe Mode.

    2. I would like to echo what many are saying about Crapware ruining the OOBE as well as the general runtime experiences that users have with Windows. You could fine tune Windows and have it streamlined and fast.. but once the OEM's get their hands on it and install trialware and poorly written bloat, any hope of a good user experience disappears. Please make investments in finding ways to solve the "Crapware" problem as it hurts the public perception of Windows and PCs in general.

    3. I have always thought that it would be neat if Microsoft created a set of universal software update APIs that developers could use to provide software updating functionality for their apps. I would love to see those APIs integrated into Windows Update so that it could serve as an all in one hub for any/all updates for the computer. This would improve the user experience of updating their computer because they wouldn't have to worry about a dozen different unique update systems running on their computer.

    4. Lastly, I believe that there are a lot of misconceptions about Windows Vista and memory. I think it would be a good idea to do a post on how Windows Vista handles memory and how you will be applying any lessons learned on this subject to Windows 7.

  • Sweet.

    So this means that the XP start menu will be making a comeback right?????

    It was the perfect start menu.

    I also hope the picture viewer being able to play animated gif's like Windows Picture and Fax Viewer in XP will also make a return.

    Windows 7 FTW

  • Im not sure if this has been answered yet, I couldn't find it anywhere, so hopefully not..

    But is one of the main ideas behind Windows 7 going to be Image installation... Meaning there is one image that is put on all machines that is setup with basic hardware drivers, and then from there the computer changes settings based on the detected hardware?

    I belive this is close to how vista was setup, but I havn't heard much about the method in 7.

  • Personally, I think removing things with 'little or no impact at all in performance' is about removing desktop *noise*; letting the user feel he or she has control.

    In addition, the less icons I need to sort out, the more increases my productivity. The "customized menus" feature is supposed to take care of this, by hiding the least used programs or menus. However, I think it in fact adds more noise.

    Many times, removing a feature could be done by simply removing the entry in the start menu and file associations, although the required libraries could still be there for a third party application to take profit of.

  • Why is it that I always feel the sense of insecurity when I use windows?  I have this feeling that something is watching me, a virus is lurking, or I am on the brink of losing my work and confidential information to a wittingly unknown security issue.

    Why is it that when a person sends me an email with the extension ".exe" or an artist sends me their work from flash that's an ".exe" file, that I am somehow going to contract a virus that will send my information to some unknown source in China or Russia?

    Will we ever get the sense that we're safe?  Is there some way to constantly monitor the traffic that's coming to our machines or leaving our system?  Is it possible that with the tools today, someone knows a way to mask their presence so even if we were looking for such attack, it would go unnoticed?

    This is the world we live in today.  It's not good enough to ask me if "I am sure I want to run something".  It's not good enough to know that "windows defender" is watching every move of the file system.  I have seen viruses get by windows defender without a trace.  It's time to rethink the security strategy and the way applications or windows allow code to execute.

    Please let us know if there's any way to recover from these security concerns.

  • Hai Steven,

    I think you have a technical background :-)

    You wrote "...An important point is that a vast majority of things you remove this way consume little or no resources if you are not using them.  So while you can reduce the surface area of the PC you probably don’t make it perform better.  As one example, Windows Mail doesn’t slow you down at all if you don’t have any mail (or news) accounts configured....


    More implicid then explicid you are saying to us "Dont bother about the things we install with W7, if you are not using it it doesn't slow down the PC"

    That is ecxactly the WRONG thought, more often it is the FEELING that I dont want to have windows mail on my PC, than that I actually think its slowing the PC or whatever.

    Feelings that customers have are not always rational, but they are always important :D

    In the issue "...that is many developers rely on various parts of the Windows platform and just “assume” those parts are there...."

    you have an architectural chalenge I think.

    Maybe a way of working like an Enterprise service bus is something to consider?

    Don't put to much effort in a Profile-based setup, it wil not work.

    If you give customers the three options

    - Clean (only things that are necesary, notbing else)

    - Custom

    - Everting (speaks for itself)

    It will do.

    The first might for you be the most important, the users that will want that and don't get it are the ones to complain the most :p



  • I am a developer so my view is not of a general user.

    I agree you can't profile people so successfully, but i think you can "profile" applications easier (similar to Default Programs).

    I use my home PC for a lot of different stuff and I think it would be better to be able to "switch" my current "profile" or "OS state" at runtime than at setup. It's something like Power plans for batteries, yet for applications. I guess having applications profiled can help choose what tweaks to be done to running processes.

    I guess it may not turn out be so straight forward for general users, or even user friendly.

  • I would like to see a discussion on the subject of legacy as in what Microsoft are doing to remove as much as possible etc

  • In Vista, when you use the “Turn Windows Features on and off” to disable the TabletPC functionality, it results the TabletInputService service to be remained set as Automatic startup. Why is it not disabled?

    Will you fix this bug in the next Vista's SP2?

Page 3 of 9 (126 items) 12345»