Engineering Windows 7

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

Measuring the scale of a release

Measuring the scale of a release

Thanks for all the feedback that we have been getting. That much of it is positive is certainly appreciated. I’ve been answering mails as best I can and along with members of the team we’ve been having the discussion in the comments. Everyone has done a great job sharing their views on specifics, wishes, and requests. I love getting these mails and reading the comments. It is fantastic. I just want to make sure folks know I can’t answer each one! What we are going to do is look to the emails and comments as a way of suggesting posts we should write.  The team overall appreciate the warm reception from all those that have joined us--we know we have lots of energetic discussions ahead of us and we're genuinely happy to start.

With this post, I am hoping to continue the dialog on the way we think “inside the Win7 team” so to speak—in a sense this is about expanding the team a bit and bringing you into some more of the discussions we have about planning a release. This conversation about major or minor releases is very much like the one I have with my boss as we start planning :-)

When we started planning the release, the first thing some might think we have to decide is if Windows 7 (client) would be a “major release” or not. I put that in quotes because it turns out this isn’t really something you decide nor is it something with a single answer. The magnitude of a release is as much about your perspective on the features as it is about the features themselves. One could even ask if being declared a major release is a compliment or not. As engineers planning a product we decide up front the percentage of our development team will that work on the release and the extent of our schedule—with the result in hand customers each decide for themselves if the release is “major”, though of course we like to have an opinion. On the server blog we talked about the schedule and we shared our opinion of the scale of the releases of Windows 7 client and server.

Our goal is about building an awesome release of Windows 7.

Across all customers, there is always a view that a major release is one that has features that are really the ones for me. A minor release is one that doesn’t have anything for me. It should then be pretty easy to plan a major release—just make sure it exactly the right features for everyone (and given the focus on performance, it can’t have any extra features, even if other people want them)! As engineers we all know such a design process is really impossible, especially because more often than not any two customers can be found to want exactly opposite features. In fact as I type this I received sequential emails one saying “[N]obody cares about touch screen nonsense” and the other saying “[Win7 needs] more advanced/robust ‘touch’ features”. When you just get unstructured and unsolicited input you see these opposites quite a bit. I’m sure folks are noticing this on the blog comments as well.

Let’s explore the spectrum of release magnitude across a couple of (but not all) different types of customers: end-users, developers, partners, IT professionals, and influentials.

End-users are generally the most straight-forward in terms of deciding how big a release is going to be. For an end-user a release is a big deal if they want to go out and buy an upgrade or buy a new PC. We could call that a major release. Seems simple enough and a major release is good for everyone. On the other hand, one could also imagine that a release is really cool and people want to buy it, but they also want to use their existing PC and the release requires more memory, updated drivers that might not be available, or maybe some specific hardware to be fully realized. Then it seems that a major release goes from a positive to a bit of an under-taking and thus loses some of its luster. Of course we all know that what folks really want is all the things they want that runs on the hardware they want—then that is a great product to get (whether it is major or not).

Developers look at a release through a different lens. Obviously for developers a release is a major one if there are new APIs and capabilities to take advantage of in their software—again straight-forward enough. It could also be the case that a previous release had a lot of new APIs and folks are just getting familiar with using them and so what they really want is to round out the APIs and maybe improve performance. So one might suspect that the first release is a major release and the second type is a minor release. But if you look at the history of software products, it is often these “minor” releases that themselves become the major releases – Windows 3.1, Office 4.2, or even Windows XP SP2. In each of these cases, the target for developers became the “minor” release but in the eyes of the market that was the “major” release. The reason developers want to use new APIs is to differentiate their products or focus their energies on domain expertise they bring to the table, not just call new APIs for the sake of calling them. In that sense, a release might be a major one if it just happens to free up enough time for an ISV that they bet on the new APIs because they can focus on some things that are a major deal to them.

Partners represent the broad set of folks who create PCs, hardware, and the infrastructure we think of as the ecosystem that Windows is part of. Partners tend to think about a major release in terms of the opportunity it creates and thus a major release might be one with a lot of change and thus it affords the opportunity to provide new hardware and infrastructure to customers. On the other hand, incompatibilities with the past might be viewed in a less than positive light if it means a partner needs to stop moving forward and revisit past work to bring it up to the required compatibility with a new release of Windows. If they choose, for any number of reasons, not to do that work then the release might be viewed as a minor one because of the lack of ecosystem support. So again we see that a big change can be viewed through the lens of a major or a minor release.

IT professionals are often characterized as conservative by nature and thus take a conservative view of change. Due to the business focused nature of the role, the evaluation of any software product is going to take place in the context of a return on investment. So for an IT professional a major release would be one that delivers significant business value. This business value could be defined as a major investment in deployment and management of the software for example. Yet for end-users or developers, these very same features might not even be interesting let alone worthy of being a major or minor release.

Influentials are all the folks who are in the business of providing advice, analysis, and viewpoints on the software we make. These folks often look at releases through the metric of “change”. Big changes equal major release. A big change can be a “re-architecture” as we saw in the transition from Windows 9x to Windows 2000—even though these products looked the same there was tons of change to talk about under the hood. So for reviewers and analysts it was definitely a major release. Big changes can also be big changes in the user-interface because that drives lots of discussion and it is easy to show all the change. Yet for each of these, this definition of major can also be viewed as a less than positive attribute. Re-architecture means potential incompatibilities. New user-interface can mean learning and moving from the familiar.

We’ve seen a lot of comments and I have gotten a lot of email talking about re-architecting Windows as a symbol of a major release. We’ve also gotten a lot of feedback about how a major release is one that breaks with supporting the past. If I could generalize, folks are usually implying that if we do things like that then a number of other major benefits will follow—re-architecting leads to better performance, breaking with the past leads to using less memory. It is always tricky to debate those points because we are comparing a known state to a state where we fix all the things we know to fix, but we don’t yet know what we might introduce, break, or otherwise not fix. So rather than define a major release relative to the implementation, I think it makes sense define the success of the release relative to the benefits of whatever implementation is chosen.  We will definitely continue to pick up on this part of the discussion--there's a lot of dialog to have.

The key is always a balance. We can have big changes for all customers if we prepare all the necessary folks to work through the change. We can have small changes have a big impact if they are the right changes at the right time, and those will get recorded over time as a major release.

We’ve talked about the timing and the way we structure the team, so you have a sense for the “inputs” into the project. If we listened well and focused our efforts correctly, then each type of customers will find things that make the product worthwhile. And if we do our job at effectively communicating the product, then even the things that could be “problems” are seen in the broader context of an ecosystem where everyone collectively benefits when a few people benefit significantly.

From our perspective, we dedicated our full engineering team and a significant schedule to building the Windows 7 client OS. That makes it a major undertaking by any definition. We intend for Windows 7 to be an awesome release.

I hope this helped to see that perspective is everything when it comes to deciding how big a release is for each type of customer.

--Steven

Leave a Comment
  • Please add 8 and 4 and type the answer here:
  • Post
  • @eduardvalencia -- there is no moderation of comments, just a slight delay in them showing up due to the service implementation.  As you can see your comments do show up :-)

  • Kids should be given some freedom to play by themselves

  • The last time I checked, Linux has been doing this exact thing for years.  Windows needs to be customizable based on the user.  If the user wants touchscreen support, then they should check it during the install.  If they don't want it, they should be able to uncheck it.  And, by putting the disc back in at any point, the user should be able to COMPLETELY add or remove system packages.

    If you are worried about this being too complicated for very basic users, then just make some easy presets, like (customize this computer for touchscreen use, or make this a media center computer).

  • I would just like to add my two cents to the "feature requests".

    I echo what others are saying about ensuring that Windows 7 has a clean and consistent UI. I would like to see close attention to little details (like icons). I would also like to see widespread usage of the Fluent UI introduced with Office 2007 in Windows 7 and its bundled applications.

  • Wanted to add my kudos on the new blog.  Great posts and comments so far; it's quickly become a tech blog "must read" for me.

    Also, a topic suggestion: I (and lots of others, I bet) would love to hear more about how integrated (or non-integrated) the Windows 7 and Windows Live development processes are/ have been in this development cycle.  In the past, we've learned a bit about plans for greater integration from some of your leaked internal MSFT memos, and at the appropriate point it would be great to get more detail about whether and how true integration between the efforts has come about.

  • I know that in Vista, once installed, adding and removing Windows Features is reasonably easy.

    However, maybe a Windows 98 style installation system should be implemented, that is allowing people to select what they want to have when installing.

    Additionally, this could tie into Windows Marketplace and the different SKU's very well. For instance, I could buy (using Vista as an example) Home Basic and then buy "Aero" and "Fax and Scan" during\after the install - thereby having a cleaner install, paying less and yet with the opportunity to get new features as I need them.

    Having a "defrag and cleanout" for the registry is also recommended. Perhaps this can be integrated into a better "System Cleanup" that removes unneeded services, programs, registry keys and startup items. While this "System Cleanup" may require ISV to provide better descriptions for their software (and may end up being run by IT Professionals anyway), it'd be nice (as an IT Pro) to be able to sit down with a client and go through want they do and don't use, without having to Google to find out what each application does.

  • Oh and even closer 360 support would be great too.

    Xbox Live Marketplace is fantastic but why can't I take my movies and TV Shows from one place to another?  

    It all goes back to everything talking to everything else.  That's the Microsoft dream.  You  have a vertical market.  Let's get it connected.

  • If there are more opportunities provided to decide which elements of the Operating System package make it onto the end user's machines, the 'major vs minor' release debate will be irrelevant. When people can choose what goes onto their personal boxes quickly, efficiently, and easily, Windows 7 will be a warmly welcomed release.

  • The trouble with Vista is that it is first and foremost, an end user platform. All the extra features that made it into Vista after XP were squarely aimed at the end-user; Photo and Video work, the Aero interface, Flip, Simplfied file navigation...

    In the corporate arena, these features are undesired; we just wanted a sleeker, faster, newer OS. Something that does what an OS should do, and that is namely provide a stable foundation for applications. We don't want all the bells and whistles that come with Vista, and nor should we spend time and money hacking with the build to remove them.

    I had high hopes for Vista business. I saw it as a baseline OS, with none of the bloat. However, what did we get? Vista Ultimate without the media center layer. That's hardly a 'business' OS is it ?

    So, lets make Windows 7 nice and modular shall we (as mentioned in other comments). Enable an installation system to _easily_ check or de-check modules. Don't want all the over-the-top eye candy? Uncheck. Need drive encryption? Check. Don't want Media Center? Uncheck. Need domain functionality. Check. For sys admins, or build engineers supply a decent tool for profiling a build type, with a set of standard profiles such as 'Core', 'Basic', 'Media', 'Everyting-plus-the-kitchen-sink', which can be then tailored even further.

    Simple really. It's a lot of development overhead I know, but at the end of it, you will be able to satisfy all the users, all of the time.

    -Matt

  • Here are some of the things that irritates me in Windows today, that I would love if you could fix:

    o Inactive windows that steal focus. If I switch to another window after starting a program, I do not want the started program to repeatedly steal the focus.

    o Inactive windows that steal focus. If I am typing in one window, I do not want another program popping up with a dialog that I might accidentally dismiss while typing.

    o Inactive windows that steal focus. Yes, it is that irritating!

    o Explorer taking away my control over my files. Explorer should not hide files from me, or lock files I want to delete because it tries to analyze the files content, or hang for several minutes because it tries to search my network (without any way to make it abort).

    o Limited support for multiple/large monitors. The taskbar should span all monitors and it should be easy to move windows between monitors and arrange multiple windows on a large monitor.

    o Frustrating to use for professionals. Settings is buried in multiple levels of "user friendly" dialogs and guides. No way to select what is installed. It feels that I have less control and ways to customization Windows for each new version.

    o DRM. It does not work, and adds nothing of value for the customer. Rather the opposite is true.

    I also think that Windows 7 should be 64-bit only, since this will force all hardware manufacturers to produce better 64-bit drivers.

  • I really liked Vista from the beginning and see that it's a great improvements compared to XP.. However considering the years of development I just feel like it just wasn't enough..

    Anyhow,I really hope that I'm able to contribute ideas to this development.

    I'm certain that everyone is going to give his best to make Windows 7 awesome.

    (Ever thought about changing the codename to 'Windows Awesome'?) :]

    I'm really curious to see how Windows 7 is going to perform and wish you all achieving your vision of Windows 7.

  • Are you going to use flash instead of regular HDDs in Windows 7? Boottime has to come down to 2 or 3 seconds, max... like when you turn on your television set, or your receiver or any other home appliance! HDDs feel really outdated, prehistorical. And yes, the new icons, the 16x16, in Vista are really non-aesthetic. They're really nice in big scale but the smaller ones.. you really cant see what they're supposed to be in some cases! Hm, what else.. yeah all driver related problems. There has to be a way to put and end to all of that. Isnt it the drivers fault 90% of the time when you end up with a BSOD? Btw, I'm still having issues with my Realtek sound controller and its driver... it seems that whenever I install a driver from windows update Vista makes some crazy things to the system and I end up with a corupt sound system. One last thing; whenever I unrar an archive so that Windows creates a new folder in the folder where the archive is, that newly created folder always ends up sorted amongst all the other folders compared to XP where it always ends up at the bottom of your folder/files list! /greets from sweden

  • +1 on the window stealing focus issue. This would have to be the most annoying problem I encounter. Closely followed by baloons.

    When I'm working on my PC I want to focus on the task at hand and not be distracted by the endless events that occur in other programs. A "do not disturb" action would be greatly desired.

    As for defrag - fix the problem at the source. Create NTFS v4.0 (or 7.0, dpending on your idea of NTFS version number) or even another FS that just doesn't fragment and also performs smart placement of FS objects.

    Completely separate the UI from enumeration tasks. I really couldn't care if an NFS mount/SMB share/whatever isn't there. Do what the various BPAs and prerequisite checks in the installers do - drop in a progess animation and move on. UI freeze waiting for network timeout is last century.

    There's an incredible amount of metrics recorded. Use it. Provide health check reports and guidance on solving immediate and impending problems. Provide optimisation profiles based on usage patterns. Preload/precache based on these patterns.

  • I want to back first for the windows focus stealing problem. Indeed VERY annoying.

    Two suggestions I have for the system:

    - at installation allow to put "Usr", "Programs" folder on different locations then C:\ e.g. allow to put them on different partitions to allow clear separation of user data and system. Maybe have an export mode installation for that...

    - Allow UAC to remember a setting. I have one program running at start-up that needs admin rights. I want to tell UAC please allow it once and then forever to run this program. NO NEED to ask EVERY start-up. UAC is useful but just half done.

  • One of the reasons I hated the Longhorn a.k.a Vista release was the extremely low level of customization and powertoys that the earlier releases offered. Please give us as much choice as possible, whereever classical old features are changed such as in IE and Windows Explorer, give users the option to use the old style behavior. And please don't drop existing features completely assuming users never use them.

Page 2 of 8 (108 items) 12345»