Notes on comments.
Welcome to our blog dedicated to the engineering of Microsoft Windows 7
The theme of “choice and control” has been applied in many aspects of how we have designed Windows 7. We’ve certainly received lots of positive feedback about the theme and about the choices we’ve made in the design, and we’ve also received a few suggestions for how we might continue to implement this theme in the future. We’ve received feedback for features that should be even more customizable (such as Explorer or the logon screen) or features that should be added to Windows (such as a PDF format reader, security tools, or disk utilities). And we’ve received feedback that some users might prefer to run Windows without certain features. This post is about a point of choice and control in the Windows 7 control panel called “Windows Features” which is where you can choose to turn various features of Windows on or off. This continues our discussion of changes we have made based on feedback from the Beta as we progress to the Release Candidate. This post is by Jack Mayo who is the group program manager for our Documents and Printing team and also worked on Internet Explorer 8. --Steven
“Turning Windows Features On or Off” has a long history in Windows, going back to the earliest days of the 32-bit code base. We’ve received a lot of suggestions about features that you would like to turn on or off using your own criteria for choice. For Windows 7 we’ve engineered a more significant list of features and worked to balance that list in light of the needs of the broad Windows platform as well. We want to provide choice while also making sure we do not compromise on compatibility by removing APIs provided for developers. We also want to strike the right balance for consumers in providing choice and balancing compatibility with applications and providing a consistent Windows experience.
We know many have specific ideas of what constitutes a “feature” or a “program” in Windows and what constitutes an identifiable “part” of the operating system, and yet we also know different people can have different points of view, often strongly held. Some might take an end-user approach and identify a feature based on a window or start menu shortcut. Some might take an approach based on one perspective of architectural subsystems, such as storage or security. Some might take an approach based on what to some are alternate choices to some similar functionality. All of these are valid in some context, but would not result in consistently identifying “features” considering these varied points of view. As engineers we know that no software system can be decomposed into an arbitrary set of layers or parts and any decomposition is likely to change over time.
We don’t want the discussion about this feature or these choices to digress into a philosophical discussion about the definition of an operating system, which is ultimately a challenging exercise (judging by the revision history on the community page), but we do want to improve a feature centered on helping to meet the feedback expressed by some over the summer when this blog started.
In the Release Candidate for Windows 7 we have extended the control panel called “Windows Features” which is available from the standard “Programs and Features” control panel (we often call this ARP, for the original name of Add/Remove Programs). This location is unchanged from Vista and XP, though the wording has been clarified. In Windows 7 if you bring up the Windows Features control panel by clicking on “Turn Windows Features on or off” (or just typing “Windows features” in the start menu) you will see the following in the Release Candidate (by default the hierarchy is not fully expanded, but in this screen shot I’ve expanded some elements for additional information):
For those familiar with the Vista version or the Beta version of this dialog you will notice the list has grown. Let’s talk about what we’ve added and briefly how it works.
If a feature is deselected, it is not available for use. This means the files (binaries and data) are not loaded by the operating system (for security-conscious customers) and not available to users on the computer. These same files are staged so that the features can easily be added back to the running OS without additional media. This staging is important feedback we have received from customers who definitely do not like to dig up the installation DVD.
For any of the features listed you can change the state to enable it or disable it. The Vista and Windows 7 beta control panel lists a wide range of features. Some are targeted towards Developers working on a client workstation (IIS, MSMQ, etc.), others are utilities for network administrators and enthusiasts (RSM, SNMP, Telnet, etc.), and some are features customers have asked us to make optional (Games, Fax and Scan, Tablet PC components).
In Windows 7 we are expanding the number of features you have control over in this regard, giving customers more control, flexibility and choice in managing the features available in this version of Windows. In addition to the features that were already available to turn on or off in Windows Vista, we’ve added the following features to the list in Windows 7:
It is worth describing the details of “remove” since this too is a place where there are engineering and customer decisions to be made. We’ve already seen one decision which is to make sure we keep the features staged for future use so that a DVD is not required. A second decision is that we also continue to support the APIs available for features where these APIs are necessary to the functionality of Windows or where there are APIs that are used by developers that can be viewed as independent of the component. As many of you know these are often referred to as “dependencies” and with Windows the dependencies can run both internal to Windows and external for ISVs.
It should be no surprise, but when we develop new features in Windows we tend to use the underlying infrastructure and associated APIs rather than duplicate code which would create extra working set, slow performance, and increase the surface area that needs to be secured, etc. We all know code reuse is a good engineering practice. As a platform, Windows tends to emphasize the creation of APIs for many systems, even when those subsystems are viewed as part of a larger system. When we have APIs that are used, we faced the choice of breaking software that just expected those APIs to be there or to continue to support the API. When we continued to support the API our approach was to remove a feature by making sure that an end-user could not invoke the feature via traditional end-user mechanisms. These are often difficult decisions as we work to balance the expectations of developers, the shared desire to deliver a robust release of Windows 7, and to maintain the goals set out by the feature “Turn Windows Features On or Off”. Because there are so many combinations of dependencies just represented in this list, selecting some options might provide you with some explanation as to the challenges in selecting a combination (for example Windows Media Player and Windows Media Center share a lot of code so turning one off might introduce a pretty complex situation for the average end-user).
Finally, we know some have suggested that this set of choices be a “setup option”. Some operating systems do provide this type of setup experience. As we balanced feedback, the vast majority of feedback we have received was to streamline setup and to reduce the amount of potential complexity in getting a PC running. We chose to focus this feature on the post-setup experience for Windows 7.
don't you think you are claiming code re-use is a lazy thing? so basically if every one follow your thought process, we will never have any shared libraries. Every one will code 100% of the functionality of their softwares from scratch. Don't you think that kind of scenario would have been worst nightmare for all users? e.g. how about each software dealing with any type of files showing you a different file open dialog, instead of Standard Windows file dialog (I know File Open dialog is from core component comdlg32 which is not part of the scope of this blog post). Similarly each program writing there own HTML rendering would have messed up every thing, (just ask any web developer who have to test/tweak their code to work similar on handful of major browsers) with each showing the content in different ways.
You are basically asking/questioning the way how software development works in today. Nobody has time or money to reinvent the wheels every single day. You are asking down the street bike builder to cast each part of the bike he is building from scratch. that is not how it works, he goes out, buy a motor, two wheels, design his won body and assemble and sell. hope this analogy will help you understand.
That sounds like a change from Microsoft. I somehow agree that unneeded features shouldn't be installed at the first place, but also realize the dependencies challenges. Would be interesting to see how users react to this in the future.
It's not fair that EU says to remove IE, Windows Media Player and others because Mac's came's with Safari and other tools why doesn't EU sues Apple ?
This feature remids me of Windows 98/95 :))
And good job with Win7 i've been impressed on how great it works
I once saw a sign in the dressing room for the servers at a restaurant. It said the way to provide the best customer service in the world was to "Just be kind."
Why can't MS do that instead of all this BS?
"It's not unfair that EU says to unbundle Windows"
When you do things like refusing to sell windows to OEM's if they install other browsers, pretends you can't remove WMP and IE, buys other browsers and software and OS's just to shut them down and eliminate competition etc. etc,. etc... there are prices to pay. MS is lucky Bush is evil and stopped the US lawsuit against them.
Of course Bush isn't in office any more is he? Maybe it'll come back.
mvadu (and others): instead, if you were kind, you was make HTML rendering part of the OS and the browser a separate program that used that, duh, not the MS way of the other way around. They went through a lot of extra work to make it so that it could be called part of the operating system. and they did it on purpose.
I've had enough, just being on this blog makes me feel dirty.
Sometimes it feels like Microsoft is pushing some of us out of the platform. Not having the ability to not install or delete things like IE is a shame. I am 100% sure that I will never use IE, WMP, the useless games that come with Windows and many other things that I hate about Windows.
I DO NOT WANT IE or WMP or the useless paint applet in my computer, I do no want them to hog even 1 byte of space. There are better programs than what you at Microsoft provide, it is not 1995, wake up. FF is a far better browser than IE, even Safari kicks IE to the touchline; I prefer iTunes to WMP by a wide margin. I do not like any of your games. I never and will never use the Paint App and other useless things like that. All which I do not want, I want to be able to not install or be able to permanently delete.
Why not provide the rendering engine to developers while giving us a choice to permanently delete IE?
I do no buy these excuses from Microsoft anymore!!!
While I will buy a new system soon and it will be Windows (Vista or W7), because I need to run a Point of Sale system and it happens to be Windows only, for personal use I am considering OSX or Ubuntu. I am tired of Microsoft’s childish games and excuses!
I cannot wait for computer software to go fully online and be centralized like it has been done by Apple for the iPhone (and hopefully developers respond and create great Apps for other platforms/OSes), because if that happens I will have fewer and fewer reasons on why I must continue using Windows.
Time is running out, daft decisions like this do not help.
Such is Microsoft's power: I am forced to use IE6 at work and other sorry Apps from Microsoft.
I guess with that kind of power, why bother giving customers TRUE control of their systems.
This blog I visit it most of the time using IE6, and I am sure Microsoft is happy about that, but I am not! So much for 90% market share the boss always talks about...
Do you people ever consider the possibility that most of the 90% you keep qouting is not happy with your work and what your are producing and in some funny way you still "force us" to use it through huge coporations we work for?
Rob Scott - South Africa
You're still avoiding the core of my argument:
The "Open file" dialog box is valid code re-use. It's a core part of the OS. It's part of the functionality of an Operating System.
WMP is not.
IE is not.
.NEt is not.
Solitaire is not.
Etc etc etc.
These are all apps, or dll systems which have either valid competitors (far superior competitors in the case of IE and WMP), or have valid alternative codebases *within windows* which will provide the same functionality. You are constantly going on about the "need" to have a HTML rendering engine in Windows. Firstly, this is utter nonsense as Windows has more than enough *core* functionality to display all sorts of content, if the developer is prepared to use it. Secondly, *if* there was a need for a desktop app to display HTML, there is *no* reason to assume that it has to be displayed in IE. The app could simply generate the content and then look for a browser to display it. The only reason to *need* IE is if the dev is using non-standard compliant code, in which case he deserves not to be supported for not adhering to W3 standards. The only reason Web page authors "need" to run multiple browser tests is because so many authors don't bother to write compliant code, and companies like MS and Apple do their best to encourage this behaviour in order to lock everyone into a certain platform (IE or iTunes). Neither the developer or the Platform maker deserves my support, my money, or my time in these cases.
As has been pointed out, Windows supports millions of developers. So the following scenario is what we have:
Say there is a market for an application.
1000 developers work on projects to fill that market.
85% of those developers are lazy script junkies who don't write quality code, don't put in the effort, and rely on Microsoft's massive "default install" of various functionalities to get the job done, slap their own frontend on it (probably using HTML rendering in IE), and call it saleable.
-- These people do not deserve our money or
patronage, and they won't get it.
10% of developers will put in some effort and create some functionality over and above the default MS install, but will still assume that the "legacy" code will still be there.
-- These people may be putting in some effort but
again, I have a choice of 1000 projects. Why
should I go for "run of the mill"?
4.5% of developers will think about what needs to be done, work out the cleanest and most efficient method of doing it, and will take the time to make checks that the code they need is actually installed, and offer to install it if needed.
-- These people deserve the money or patronage
they ask for, but:
0.5% of developers will be like the guy that coded uTorrent, and write a clean, quick, quality, small, application with no needless dependencies, no "additional" code, concentrated on what the USER needs -- and will get MY patronage and 90% of the market, once word gets out, because they wrote a high quality app that did exactly what it needs to do, in the minimum space, and respects the user.
According to you, EVERY user of the OS should have their time, resources, and effort wasted, just so that the 95% of developers who can't be bothered writing quality code can continue to try and shove substandard, lazy products on us. My attitude is this:
Why should I have *MY* time wasted in order to save *YOUR* development time?
I see no reasons why users should have to justify why they want to save disk space. It's none of MS or the development community's business what I am using my HD for, or what I want to install on it. It's mine, not theirs. If they want to claim more of my computing resources, they can come and ask me for them. Maybe I'll hand them over, maybe I won't. But the decision should be mine, and since there are thousands of developers, I'll pick the one that suits me, thank you very much.
Wow. All I can say is wow.
It is just an OS. Important yes. However, some of the comments here border on completely ungreatfulness and ignorance. I just can't stand some of the folks coming in here with such hatred. Microsoft isn't a saint, but every company with an OS does what it has to do.
If you don't like Windows, its okay. Use something else. However, don't come in here with false outrage and BS, to demonize Microsoft. If they didn't do it, I'm sure Apple, IBM, Cannonical, or someone else would have.
This has been a great beta and a great rebuilding of an OS. But if you're so mad at Microsoft that you "feel dirty" being on this blog? Get a life! Use something else.
Windows 7 is a nice departure from a lot of the hangups of previous Windows versions. Its not what everyone wants, but no OS is perfect. Windows has always been a great compromise from the tight rigid control of Apple to the everyone can get the blueprints vulnerability of the Linux OSes.
However, the problem with both Linux and Apple is that they are both less secure than Windows. Don't believe me?
At least Microsoft doesn't leave you vulnerable on average for 72 days like Ubuntu. Apple leaves you vulnerable on average for 97.95 days. Red Hat Enterprise left you vulnerable for an average of 105 days.
Microsoft's average days of risk? 24.2 days.
The source of all this information? IBM, Security Researcher Secunia, Apple Support Website, Ubuntu's Security Notice's website, and many others. Also, the National Vulnerability Database(NVD) run by the U.S Computer Emergency Response Team(CERT) and the National Institute of Standard's and Technology(NiST).
All the NVD information is based on 1st quarter 2008 vulnerability information. The information at the IBM website is based upon 1st half of 2008.
Who are the top 2 most vulnerable OSes for the past 3 years?
Apple OS-X and the Linux Kernel of every Linux variant on the web. The facts are the facts, ladies and gentlemen.
If you really think Windows is so bad, then switch to something else. Just quit the false outrage. Its sad and pathetic. You aren't going to change anyone's mind if they like it. Its not like IBM has any love for Apple, Microsoft, or any other player. Its report was fair and accurate to every other I've read concerning security.
Windows 7 will be even more secure. Do you really want to gamble with your machine? You put your hard earned cash into your machine.
I'm greatful for what Sinofsky and his team has done with Windows 7. Its not perfect, but you don't always get what you want. Hopefully, some changes will make it to the next version of Windows. However, Windows has always been about getting everyone involved. Computing shouldn't be a domain of the rich and well off or just the technically gifted. Everyone can be apart of Windows.
Steven and the Windows 7 team, don't listen to these hater's. Useful criticism is fine but some of this is worthless. You guys are doing a great job. I for one will be glad to buy my next copy of Windows when its done. Thanks so much!
@Domenico YOU ARE RIGHT !!!
Why would i pay 1200 - 3000 $ for a mac ?
When i can make a great pc with less than 1000$ and maybe it is better than a 1500$ mac
Hey there folks, let's work to improve the dialog and conversation. I know we deal with many topics that have strong feelings about design choices associated with them, but we should all be sure to express views in a constructive and factual manner, and to be contributing to a mutually respectful dialog.
Perhaps with that money is included wig, lipstick, nail polish
I'm looking into this blog entry and wanted to add some things:
Some people will naturally defend Microsoft, some not. But the truth is, that main task of operating system (in more classic meaning) is providing environment (functions for managing filesystem, memory, devices, etc.) for running some processes. Nothing more. Current operating systems are providing services on higher level too - file explorers, HTML browsers & libraries, codecs, etc.
Microsoft mixed it a lot - in system directory you have everything and this is very wrong for example from security point of view. Additionally Seven is not saving HDD space - it's putting files in various languages (not compressed), etc. etc. (see my post above). This is very wrong.
1. please note, that leaving some libraries in system directory look a little strange for me. My questions: how will be detected, that application X is requiring for example IE6 or IE7 ? Or will installing new IE will (potentially) break compatibility with applications using IE engine ? If yes, what is sense of leaving it on the HDD ?
2. wasn't it possible to make modular system similar to Server editions ? it would close similar "discussions"
Windows 8 should be a little different. There should be clean rules defined and internal MS developers should respect them - one directory for logs, one directory for drivers, etc. etc.
So, how to resolve problem of compatibility then ?
For example (I was writing a little earlier about it, I will repeat some part of it):
1. You're trying to run some exe file
2. Windows is detecting it (using SHA or other checksum)
3. WIndows is asking for application name (or this step is not necessary - system will create some ID instead of it)
4. Windows is creating "Program FIles\Application Name" directory with Windows and "Program FIles" and "Application Data" inside (when run application will want to read content of Windows, will receive content or real directories + files from these one, when will want to add something, will add to these "virtual" directories; when run application will want to read content of Program Files, Application Data, will receive empty directories)
5. Windows is creating Registry files for this application (when application will want to register Explorer extension, will do it on real Registry; when will want to change something else will do it on this virtual file)
Applications are very separated (sandboxied) and this is default behaviour (you can move without any problems "installed" software for example to other partition). When you will select special UAC option and will give admin user/pass, you will be able to run software in "old" mode with access to real Registry and system directories (this would be required, when you will use file manager for example). Such software should have differently looking windows (which could be sign for user, that they have more privileges).
Each user account should have 2 options:
1. allow running/installing new applications (steps 1-5 above)
2. allow running only installed applications
What with UAC ?
1. for installing new applications (giving application name - step 3 above)
2. for installing new driver
and few other things.
This is only draft, but the true is, that such system should have few components:
1. core + drivers (there should be tool for removing some drivers to save space)
2. ms-dos subsystem
3. win32 subsystem with old libraries
4. .net subsystem
7. games, ....
Each of them (excluding core) should be removable.
Additionally there should be one place, where you should be able to disable ALL startup processes (setup in Registry, files, etc. etc.).
I understand, that deep changes need more hard work than work required for improving old solutions (NT line), but I have feeling, that many people (not only me) are expecting something more from Windows than is provided now.
Will we see something like that ?
Vista wasn't received good by market, MS is proposing Seven now. Some answers are still unanswered: for example what are details of DRM implementation ? What is sense of putting it, when Seven will not have native Blue-Ray play support ? (I'm not sure, if 3rd party players will use Protected Path) What will MS do, when this will be not received good enough by the market ?
These are doubts from customer (and programer and tester), not flames. I really wish everything the best to Microsoft and would like to change XP in some tasks to something new, but...
And once again: I had to write this, because Windows is affecting us in many places. I don't want flame here, decrease meaning of MS teams work, I wanted to make loud thinking about future only.
If you don't have constructive comments about it, PLEASE, PLEASE, PLEASE not comment.
The enthusiast population, the people essentially having this discussion, make up a *very* small percent of that total population.
But without sounding too self-important, I believe that the enthusiast population is to be catered to far more than their numbers suggest. Case in point: Vista.
Vista was the most stable and secure version of windows ever. But changes under the hood led to incompatibilities that frustrated the common user. It was also the biggest in terms of memory and HDD footprint - that led to reduced performance, and frustrated enthusiasts even more the the compatibility. Both sides had reason to be unhappy.
Regular users spread their discontent person to person, which is quite damaging. But enthusiasts - their spread their discontent far and wide through the internet echo chamber, and through the tech media. This was far more damaging IMO.
Now I personally think Vista in it's current state is very good. Amongst my real life friends and family, I'm the ONLY person who thinks so, because they only ever heard bad things.
But by and large, it seems like the enthusiasts are on board for Windows 7. Thats great for microsoft. Recently, a non-techie coworker was telling ME how great windows 7 was going to be. Why? Cause he read good things about it from a tech site. He's a mac user now after a bad Vista experience. And he wants to switch back to windows cause of what he's heard the tech media say about Windows 7.
So here we are. The enthusiasts here are almost entirely unanimous on what they want MS to do - allow them to *COMPLETELY* remove *ALL* the stuff they dont want.
And the PC world is so different now - there are netbooks, HTPCs, Home servers, things that hardly existed not too long ago. Not only do different users have different needs, but a user may have different needs for each of their systems. I dont need paint and wordpad on my HTPC, and I dont need DVD maker on my netbook, and I hardly need *anything* on my server.
Make it so only an enthusiast can do it. We can handle it. Put out a non-supported powertoy like Tweak UI, perhaps. Lets not forget the existence of vLite and nLite. I was very happy with my vLited Vista install, having no compatibility problems, until it came time to install SP1.
I always wished I didnt have to resort to such a dirty hack in order to make windows work my way. You dont need to get silly and remove APIs and backends to save a few KB, but its simply just not configurable enough yet.
If you make us like it, we'll make them like it. It should be obvious what a great job in that regard we're already doing. You're on the right track. Dont stop when you're almost there.
@Jack_Mayo and Steven,
Can you take the effort to make the window larger/full-screen by default? When 1024 x 768 is the minimum resolution, I see no reason why users should require: Expand, then scroll, expand/resize again, scroll again. Also, during deployment using tools like DISM, can these be customized before setup?
I tried turning off Media Center and Media Player. It asked me for a reboot. Then I turned them on again without rebooting. It again turned them on and then asked me for a reboot. Now if I visit ARP again without rebooting, it doesn't show them as Turned on. Is this a "bug or feature by design"?
I'm disappointed that the user doesn't have a choice of keeping everything on the installation media and off the hard disk. You made this decision probably for support cost reasons besides developers. Sure this won't prevent me from upgrading to Windows 7. Then again, this whole Component-based servicing system is broken by design. There have been more complaints about this CBS architecture than positive responses. It still makes me wait at logoff and logon and shows "Configuring features" and "Configuring updates". This should be done in the background using low priority I/O and if the user initiates a shutdown/restart while it's going on, only then should the logoff be kept pending till it is configured to prevent improper component configuration. As a user (and many others I've discussed this with), I don't expect to use an OS which makes me wait for configuring whatever updates or features at logon or logoff when its previous iteration didn't. That should keep me from upgrading to Windows 7. Now it's too late but perhaps by Windows 7 service pack 1, you can make this "feature" not interupt logon and logoff.
Windows since Vista has started compromising features, choice and control for power users in favor of less experienced users. Less experienced users indeed have all the choice and control.