Engineering Windows 7

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

Beta to RC Changes – Turning Windows Features On or Off

Beta to RC Changes – Turning Windows Features On or Off

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):

Windows Features control panel

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:

  • Windows Media Player
  • Windows Media Center
  • Windows DVD Maker
  • Internet Explorer 8
  • Windows Search
  • Handwriting Recognition (through the Tablet PC Components option)
  • Windows Gadget Platform
  • Fax and Scan
  • XPS Viewer and Services (including the Virtual Print Driver)

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.

--Jack

Leave a Comment
  • Please add 8 and 8 and type the answer here:
  • Post
  • @Domenico,

    As long as win32 architecture won't be improved (system should care about full uninstalling applications, not 3rd party developers), there is possibility, that OEM manufacturers will ruin image of EACH new Windows version. "Designed for Windows 7" will not change anything here.

    @Hairs,

    If I remember correctly, N versions also had WMP and IE only partially removed.

    In my opinion not compatibility/developer problems make, that they're still in the system, but rather "political" reasons.

  • What, so it's not possible to *remove* Spider Solitaire? Not at install-time, and not afterwards. And this is what you call what was it, "The theme of “choice and control”"?

    The theme of choice and control that "Microsoft will throw as much as at all possible into one monolithic folder (\windows), and if by some strange quirk of fate a MS application does qualify to be placed there, it definitely must be placed on the same partition. Because that's how we give users the "choice and control" to actually use the disk space they have. Everything must be on C:, no matter how big it is, or how many other partitions you have. Even the most pointless optional Windows feature like Spider Solitaire must be there. Along with all the installers I'll never use again, but which grows my \windows folder by several gigabytes.

    Oh please.

    Along with my pet peeve that some nonessential files in \program files are apparently magically untouchable, even though you can move them to another location where Windows will never see them, they're still "special".

    The only theme of choice and control is that it's a downhill slope. I actually liked using Win7 a month ago. Now I'm pretty convinced I'll go back to XP when the beta version expires.

    You've made some huge improvements to the presentation. Win7 actually looks and feel nice, unlike Vista. But it's still a pain to use because of the completely insane design decisions inherited from Vista and the ones added since.

    And no, this rant wasn't just triggered by this blog post. It helps that just today I tried to install a game, but it failed because:

    - Installers still can't understand junction points, and mispredict the amount of free space I have.

    - My Windows partition has grown by 3GB since last I checked, because of all the junk that accumulates in it because of your policy that "there's a theoretical chance that at some point in the future, I may need it, so we'd better put it smack in the \windows folder".

    A few days before this I attempted to install Win7 on a second computer where I ran into the aforementioned problem that all the files Windows puts in \program files is magical. I could rename the \program files folder without a problem. And then create a new \program files with the contents I wanted (or make a junction point in the original \program files location pointing to a different partition. I just can't *delete* the original \program files. This doesn't contribute to security (I can replace the files just fine), but Windows *chose* to control it anyway. Because some MS engineer at some point in the development of Vista or 7, decided arbitrarily that it'd be a good idea.

    As long as the theme is "Microsoft chooses to control" my computer I'm not impressed. There are aspects it makes sense for Windows to control (enforcing security permissions, for example), but the completely arbitrary areas where you *choose* to control my entire system are just ridiculous.

  • I do not know why I remember Jim Carrey in Bruce Almighty .

  • Yeah i read lots of the above comment , saying that we are happy to see new feature of windows 7 OS. Thats really good thing of it.

    Windows 7 is easy to use.

  • I think it's a great decision to have the files around on the disk for uninstalled features. And (IMHO) the right features are installed by default.

    While I agree that Win7 shouldn't need 10 GB in theory - In practice I couldn't care less.

    You did the right thing!

  • frankly, i don't really see how this is any different than the old "Add/Remove Windows Components" from XP.  you aren't REALLY removing anything, just simply turning it off.  On top of that you are STILL hogging up the disk space from those programs by "staging" it.

    Sorry, not an improvement.  Nice try though.

    Frankly, what I would like to see is what the other users have said.  THREE choices.  Use, Deactivate (IE: remove and stage) and Uninstall (IE: completely remove all configs and binaries).  No reason to MAKE people keep the staging data.  Otherwise people will simply figure out where the staging data is and MANUALLY delete it.  Why make them go through that?

    Also, including some of the more controversial UI features in this dialog would be nice as well.  Perhaps in a separate subsection (Windows UI).  This would include Aero, the Quick Launch bar, the Menu bars for IE and Explorer, the Classic menu, and various other features that people may or may not want.

    IF the theme REALLY IS "control and customization"  you have to let people change it to the way they want.  That includes "Legacy" styles and settings as well.  Some people just don't LIKE Microsoft's concept of the the "future UI" and like the old style.  Microsoft needs to respect these people and give them the option to revert to the old style.

  • Hairs  - the strength of Windows (and the reason it became so popular) is because it is easy to develop for.

    Take a look at this: http://developer.apple.com/documentation/Cocoa/Conceptual/DisplayWebContent/Concepts/WhyWebKit.html#//apple_ref/doc/uid/20002023-CJBEJBHH

    You'll see Apple also provide "lazy" developers with a way to use Safari in their applications.

    Can you imagine if every program had to reimplement the wheel? More security bugs, more disk footprint, less programs (because they'd take longer and cost more), all so 1 in 100 users can save a few megabytes of space.

    Marc

  • Thank you for letting us turn off IE, at least a little bit.  I still think someone deserves to go to jail for forcing that security hazard on us, but now I can make sure no one I know accidently runs it.

  • @manicmarc,

    1. if somebody want to have uninstalled something, this is his choice.

    2. IT IS possible to implement "install after first use" feature

    3. interesting, that you're speaking about security bugs. How many of them were found in IE engine for example ?

    Whatever we will write and say, there are two possibilities (that we can't uninstall something):

    1. "political" reasons

    2. MS doesn't have good enough programmers

    I will opt for first one.

  • I would really want to see one checkmark somewhere: keep Windows DVD files for future use (for easy adding/removing features, languages, etc.), or not to keep Windows DVD files for future use. And default should be: keep.

  • Your post doesn't refute my point at all - it re-inforces it - that this whole issue is about Microsoft *forcing* unecessary, bloated apps on end users *to suit some developers*. Pointing out that Apple are using the same model doesn't refute the argument either - only that bad practice is spreading. I should never have to justify to either MS or some 3rd party Dev whose apps I don't even use *why* I want to remove some inconsequential add on to the OS, or why I want to make that change. I own the computer, not them. If they won't give me what I need from the platform, I'll go elsewhere, or use some other company's software.

    Complaining that "developers will have to do more work", as I already pointed out, falls on deaf ears with me. Devs are there to make an app that they then need to convince *me* to use. A good dev won't shirk the hard work to do something right. A bad dev will give up - and good riddance to him!

    EG: why would anyone use Azureus/Vuze with its massive codebase (on top of the massive Java install) when they could use uTorrent instead.

    350kilobytes vs. ~150 Megs, and they both do the same job. One was coded by one man in a few days, the other has a massive team of devs all over the world who still can't write quality code over the course of several years.

    The "few hundreds megabytes" argument is also counter-productive to your cause - as the posts regarding PerfTrack and boot times pointed out, making a large number of small improvements all add up to big gains in speed, footprint, and code quality. In the general scheme of things, 100 megs is peanuts on a 1TB drive. But 100 megs of unnecessary code that potentially introduces more bugs, holes, dependencies and legacy hassles into an OS is NEVER a good thing.

    Windows is ubiquitous because it has the power of a huge install base. At this point in its development, it needs to maintain *quality* to the end user so they don't migrate. Screwing over the User to suit a developer who's still relying on the IE6 engine to display content in a desktop app helps *nobody* in the windows ecosystem.

  • A lot of people are talking about dependencies. and how removing programs as opposed to staging them would break these.

    A lot of people have apparently all but forgotten Microsoft's efforts to *increase* the modularity of their OS (Server Core, anyone?)

    All we ask is that by Win8, we get to the point that this is possible.  That Windows be modular enough to include or not include the built-in functionality.  No staging necessary.

  • I think there really is 2 scenario to consider here:

    1- netbook and notebook, around 8-16gb ssd.

    I personally have a 16gb partition to run win7 and it became quite full just by installing office 2007 and a few very small apps (FF, live mesh, etc.). I definatly would like to be able to remove all these setup files completly on my 16gb partition. Consider the new buyers of netbook ... many come with these SSD and I almost bought one and then remembered "I won't be able to install w7 and have the experience I want on it", it's sad that 8gb is not enough to install an OS in 2009 an even 16gb is barely enough.

    2 - desktop pc, comes with 250gb or higher HD, not a problem at all, keeping every setup files by default would be great. Allowing them to be deleted through the cleanup utility like in XP is also a good idea.

    If you do not want a custom choice on the basic DVD installation, support unattended version of your installation disk so we can slipstream/remove what we want/dont want with our own DIY disk.

    The idea of putting a new .ISO up every few months on microsoft website for people with a legit key would be great cause all the hotfix adds an extra ~1 hour of work everytime we do a fresh install. I can confirm that it is a pain in the ... to do every update every time (even though with w7 and the windows update during feature during the installation it might be less helpfull, we'll have to see with w7 sp3 and all hotfixes like there are for XP ;))

  • First of all, I think all Windows features/services should be changeable during the OS installation. It doesn't make sense in having to install a bunch of things that are going to be disabled right afterward. And disabling them is different of removing them. Removing should be always an option.

    If the user doesn't want certain programs/features to be installed, even if they're not running, he should be able to do that, easily. If the user only wants to run Windows' basic function, he should be able to do that. He should be able to install a naked Windows if he wanted to do so.

    That's the problem, Windows is far from customizable. It's far from transparent. It should be somewhat like MS Office. You can either install everything of almost nothing.

    I hate Internet Explorer 7 and I probably won't like Internet Explorer 8 either, since it maintains the same awful user interface. But here with Windows XP I can't uninstall IE7 because the damn Windows Update requires IE7. This kind of things should never happen. If I prefer my good Firefox 3, then Windows should recognize it as the system's default browser and let everything work with it, even Windows Update, even Visual Studio, everything.

    It's because of all this and a lot of other things that I'll jump to Linux sooner or later.

    About the Windows user interface, why don't you stop running around the problem and face it once and for all? User interface is never going to satisfy everybody. There should always be different options for UIs and different ways for displaying things, reaching things and doing things. Windows should work like Winamp. There should be an Interface Engine/API that could run different "skins" and themes, where even the position, location and dimension of objects could be changed. Develop that concept and we'll never have problems with interface anymore. I would be able to use the same theme for all subsequent versions of windows. Make full use of today's graphic effects, light and 3d effects but don't waste resources and make everything optional. With today's technology, we should be seeing User Interfaces much similar to those seen in games. But, if the user still prefers the bare classic windows theme, it should be there (maybe a little bit more pleasant to the eye, with round corners, smooth edges and a subtle shade, but still simple and light).

  • ... It has nothing to do with this post but, since it's the first time I'm using a MSDN blog, I have to say this: why doesn't it work already with our Live accounts, like everything else? It doesn't make sense... I had to create another account only to post a reply. What a shame.

Page 4 of 9 (133 items) «23456»