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.


Leave a Comment
  • Please add 7 and 5 and type the answer here:
  • Post
  • I don't see how it is a problem to bring the different camps together. If someone don't needs the touch screen feature he should be able to turn it off, or better choose not to install it at all.

    Many end users might like Aero, I want my classic theme back. Where is the contradiction?

    I'm developing on and for Windows since 10 years but lately I'm getting more and more annoyed by MS products. Just an example, I'm switching quite often between documents in Visual Studio with Ctrl+Tab, but VS2008 added the "feature" to show a preview of the documents which really slowed things down and is annoying. I have no understanding for such useless gimmicks. Can I turn it off? Don't think so. Want to sell me/us licenses? Stop annoying me.

    Some ideas for Windows: <Windows key> + <1> ... <9> to switch between windows, enable keyboard navigation in Windows Flip. Actually pressing <Alt>+<Tab> and then key down sends the key event to the last active app rathen than to Flip.

  • I hate to say it, but Windows 7 client is beginning to sound like a minor release indeed. With both the Server and Client expected to RTM the same time, it pretty much adds up that Windows 7 will actually be version 6.1. The reason I am hearing for the code name is because you Steve likes whole numbers, but at the same time, it just does not add up why you would call the codename 'Windows 7', unless the Windows Team is considering it a 7th release of the Windows product, not technically a 7th 'version' of the NT kernel itself. We must take into account, Microsoft stop using the NT version in its branding with the release of Windows 2000 which was 5.0, XP 5.1, Server 2003 5.2.

    Here is the problem I just discovered after writing the above, Microsoft could not use that logic, since it would mean that XP was the 6th release of Windows, Vista the 7th and 7 being the 8th.

    Microsoft needs to explain themselves. If it continues with the 6.1 version by Beta 1, its definitely a Vista R2 and Windows Server 2008 R2 releases. Am I correct?

    During the early parts of the Longhorn development, when the OS was at Alpha, Microsoft christened it version 6.0, I am talking builds 3xxx and later. The leaked Windows 7 builds we have been seeing earlier this year have been using the version 6.1 for the kernel. Some said that was because not all of the product had matured enough to become a part of what at Microsoft is called the 'winmain' build. Persons in the enthusiast community assumed that by PDC 2008 Windows 7's kernel would reflect version 7, but with PDC only a couple months away, its looking unlikely at this stage.

    Based on what you have posted and my interpretation, major or minor is in the eye of the beholder. But, I wish I could get a better idea of the significance of this release of Windows in terms of should everyone upgrade to it, who upgraded to Vista, or is it just a release that you can skip and those who are still on XP in 2010 will see some reason to to take the upgrade.

  • Right after I started reading the post, I came up thinking about how awesome would it be if Windows 7 had a bunch of new APIs and programming resources for us, developers, to play with on. But as I read on and got to the Developers-related paragraph, I ended up amazed by the way you had succefully pointed out how difficult it is to meet everybody's expectations at once.

    I've been reading the blog since its very beginning but that's the first time I write a comment here, so I wish you all the best of luck, and I'm pretty sure we're going to get a great release here.

    Greetings from Brazil :)

  • I have to say that every release of Windows is a major release; each and every one has added a new feature, or expanded on one and improved it.

    My main suggestion would be to say, "Just do a good job!" as I am not a dev, just one of the many customers who point in a direction and hope you go the right way.

    P.S. Still, with my little voice, I hope to remind you (not just the Windows design team, but ALL of Microsoft) to get closer to the program with 64 bit. Offerings now are okay, but could be better!

  • From my perspective, if Windows 7 has a faster boot time, uses less resourses, and is available in a business version without all the fancy graphics but with all the features and functionality and support for 64 and 32 bit hardware drivers (even older hardware that worked with XP) It would be a major release.

    This is from a IT professional and a home users perspective.

    You guys at MS have an oportunity here since you prove that you are listening to the customer instead of telling the customer what they will use which has been the feeling with Vista in my opinion. It was a major bone of contention with many to not be able to buy a new computer without Vista. I think that way of doing business in what appears to be monopolistic needs to be a consideration when 7 is ready for release. I made the switch to Linux and now use XP on a VM more as an occasional tool instead of an OS because of that.

    There are a lot of great features in XP and I hope Windows 7 will restore my faith in MS in terms of the OS itself and MS business practices.

  • Jon and Steve obviously you are credited greatly for taking our input, so for the record one more thanks from a previous beta team member, who would love to be on the W7 Beta.

    It seems to me a recurring theme 64bit OS only and with WinFS or at least an add on that supports better meta tags to find what people need on their gigantic hard drives of late.  With the Internet becoming a vast resource of large files (pictures, videos, Zip/Rar files) the speed increase of a larger files system over the default 4k limit would help to increase the speed, so that is a suggestion.

    One of the biggest things I read was not only go to a 64bit system only, but loose the backwards compatibility.  Why not? You guys have VMWare so why not for a small additional charge throw in VMware with which ever past OS they want.  This way technology can move forward but emulated backwards if the need arises.

    Another common theme kept reoccurring as I read through ALL the posts to date (yes my day sucked at work) the idea of finally removing the registry.  Now I am not 100% certain this is a great idea, but I can see the benefits and cons for both.  A big con for keeping it is, the morphing Trojans love the registry and some like the Vundo!R finds comfort there in drones.  I suggest if you keep the registry that it have a serious anti-malware scanner attached to it and also that it can perform a proper clean up and defrag.  It seems many manufactures still can’t write a good software removal routine and the add/remove programs won’t make the effort to clean up the registry.

    While on the subject of Defrag, why not partner with O&O Defrag to license their software.  It Defrags your hard drive in numerous ways and in the back ground while you work.  It does a fantastic job in keeping your system running much faster.

    Of course it might be a great idea to auto partition off space to create the Virtual Memory in as it will help prevent fragmentation, especially when updates are done.  Most people complain how much slower their system is after a ‘critical’ or ‘express’ update was done on their system.  Once I defrag their drive and clean their registry they are golden and happy again, then again so am I cause I just got $100, but that’s not the point.  Microsoft’s image would be better if the Defrag was better overall for both the Registry and Hard Drive.

    Less rebooting was a vague if not rare suggestion, but more dynamic updates with less reboots would be a BIG plus.  I guess if the registry goes away and dynamic application or service modules are developed this might be very possible.

    On the subject of dynamic control, I am reminded by the old Macs (I am not familiar with OS X) but the older Mac OS you could disable services, applications, plugins, etc to help find the trouble makers or improve the speed of the system.  This would also greatly improve the focused use of the system.

    If a profile system was used in conjunction with ‘plugin services’.  One profile could be set to games, which would turn of the services for Bonic, Antivirus, Defender, Acrobat, iTunes, IM clients, Outlook, etc.  Another profile could be a social profile or a media profile or a computational profile….the point is profile services done through dynamic loading and unloading will bring a better experience to the user at that time.  Now the trick is to make it work under multiple logins.  You would want your gaming profile rocking your system and in comes the wife who must send out an urgent email, the system should handle switching user logins and dynamic service loading for her and then dump them when you get back to your profile and Unreal. In any event to the end user this would have to be, dare I say it, Wizard driven for the type of performance or situational profile you want of the computer.  Again it must be done dynamically without rebooting the machine.

    The subject of Multiple desktops was also brought up often and I think this is a great idea!

    On the subject of parental controls, a previous poster hit the nail on the head when it should email the parent of the child what new sites the child went to, because face it the rating system isn’t perfect yet.  It should also capture all IM conversations and archive them during shut down of the application or system and then email them to the parent on the next boot up or if just the IM is shut down.  Not to mention a dictionary for the parents of the IM’s, just as what does POMS mean? (parent over my shoulder) things like that so that the parent can work with their kids….this would be the biggest marketing tool to bring TRUST in a product back to Microsoft for parents.

    I offer a new suggestion of a full Image of the current system and its files for when the system is upgraded to OS7.  This way if people have the same ‘feeling’ from XP to Vista they can down grade from OS7 to their previous OS in less than 20min from achieved DVD’s. A huge bonus would be for the restore system to note the date of upgrade and then ask the user if they would like to back up all new documents, music, etc preformed or created since the upgrade.

    My last suggestion is OS on the run.  This is where you take a 2 or 4 gig memory stick and your OS ‘lite’ gets loaded on it with your applications (not games) to take with you to another system and have it boot from the memory stick (USB drive) so you can continue your work else where in your environment.

    I am sure I could come up with other ideas, but after all that reading I am done and I am sure you preferred this to be shorter, but if you read through it all, my sincerest thank you for taking the time to listen to an IT professional, system builder and end user all in one. And send me the email link for the beta team, I am dying to do something productive once again with Microsoft.


  • @SoCalCreations --

    THanks so much for your thoughtful suggestions.  I just wanted to use this as a chance to remind folks we really are reading all of these.  We're trying to figure out how to keep up with the feedback.  There are definitely many common themes and we will address these in posts for sure.  

    I just don't want folks to think we're not listening.  And of course the developer in me is hoping we don't get in the situation where not doing every suggestion makes folks think we don't listen--the challenge as every developer knows is that you can't do everything and often suggestions from customers are opposites and you really can't do both.  We are listening for sure.

    Please keep the discussion open!  We love it.


  • Hi steven

    i've been sending my suggestions here but none has been published i don't know why you guys are blocking it.


    User: Eduardvalencia

  • "And of course the developer in me is hoping we don't get in the situation where not doing every suggestion makes folks think we don't listen--the challenge as every developer knows is that you can't do everything and often suggestions from customers are opposites and you really can't do both."

    That just takes me back to my comment on your previous post. Well, keeping all that modular approach in mind, while it is true that you can't do everything as a developer there is really no need to, at least not at once, just deliver the bare foundation upon which everything else is based, then go on releasing those other modules deemed as interesting. Like that those who are demanding something can wait believing their wish/suggestion will be delivered in turn while those not related to such particular issue can keep on going.

  • Steven,

    Thank you for being so worried about making us sure you're actually listening. That makes us feel like you guys really care, and encourages us to keep telling you what we think.

    William's comment recalls me of someone (maybe Mark Russinovich, but I'm not sure) from Microsoft saying about Windows 7 being much more focused on backwards compatibility than Vista was, so I think it'd make things much easier for both of us if you could expose some of the design goals for Windows 7 that won't and can't change.

    For example, if you guys are really going to work on backwards compatibility it's not worth it to keep asking you just to drop it from the system, right?

    I mean, of course many of us still thinks it'd be the right thing to do for the system, but we also know that there are things that are just predefined, and I think they are worth mentioning, making things clearer. After all, if people know what can't be changed, I'm pretty sure people will come up with new ideas on top of the predefined features and goals you already have, instead of keep asking you guys to change or remove them completely.


  • I think the most important focus for Windows 7 should be consolidation.

    The Mojave experiment already (via publicity stunt) that people actually do like the features of Vista.

    What needs to happen is a Office 2007 style consolidation of the features and presentation.  The UI needs to be made more consistent.  All of the existing features need to become more obvious and more simple for power users and basic users.

    I don't think there is a single new feature in Office 2007 I use.  But I find it the best upgrade since Office 97 (the last time I upgrade office.)  

    The only way this is going to happen is with leadership and organization from someone who oversees all the projects and puts polish and refinement ahead of new glitz.

    I think the Zune team is another team which is doing a great job to make a consistent, simple and attractive product. I love my zune.

    And maybe in order to appease both the family PC and the UMPC business it would seem prudent to create a "Performance Center" where services that aren't necessary are important are listed and power users can easily tailor their experience for more snap in exchange for understanding what they will lose as a result.

    If Windows 7 were a Office 2007 style upgrade I would be more than pleased.  Oh yeah and the 64 bit'ers could use some serious love.

  • Steven and associated team,

    It's very refreshing to see the openness of how things are being handled in the development of Win7. It's also quite heartening to hear that comments are actually being addressed.

    I've been looking around on various forums and sites recently, and have noted a number of people who swear that Windows Server 2008 can be converted, albeit somewhat incompletely, to a workstation. There still remain the issues of some software refusing to install on a server OS, driver incompatability, etc., but for the most part, people who have done this have reported a much improved Vista-like experience.

  • Thanks for the reply to the comments.  It does sound like this is going to be what you mentioned (a minor release).  The suggestions that people have made are certainly not along the minor scale.

    Rewriting the registry, active directory, dns, and the filesystem schema, are all huge undertakings that require major testing and development.  One thing is certain though, .NET 3.5 SP1 is tested and solid.  C++/CLI is amazing.  But that's just what users don't see and that's like talking about organges instead of apples (maybe a good punn).

    Users want to see unification in the UI and less hassle.  This is going to be a large task for any team.  I find that many of the Microsoft strategies for security, file system, user management, etc.  were all developed upon existing solutions in order to build on the existing code.  I am all about code reuse but sometimes, the code isn't worth keeping and ends up being more of a headache than its worth.  The UI frameworks and style guides in Vista look like they've come from different teams.

    The end-to-end of it doesn't mean you can't have standardization across various domains.  That's what's lacking and painfully lacking in the UI.  If you have to write WPF as a framework in native C++ for performance reasons, do it!  I for one would love it.  This is the kind of paradigm shift needed to go big with a solid release.

    Much like Jobs did with Apple, you guys need to work on an entirely new OS from the ground up (like 'BeOS') and take the best of Windows with you.  Put the registry into the Entity Framework or allow applications to contain their own settings like Mac OS X.

    It would be great to see improvements to the services manager.  Like many others have posted, I would like to have the ability to really understand what "needs" to be running on my system and disable what doesn't.  I am not talking so much about disabling UI based features but things like the DNS Client (why do we need it)?  A fancy UI that treats services as applications that can be updated indipendantly.

    Rework the core, modularize applications/services/features, unify and revamp the UI (keep the fancy UI stuff optional), tie it all together in a new OS that's written with UX in mind first.

  • I agree with Ivan, if it is possible for you guys to provide the design goals then we can either restrict asking for features which atleast will not be possible on the first release or may be we can provide better  or alternative suggestions so that those features can be implemented in the first release in a different way.


  • (Continuing my interrupted post from above)

    I know Windows Server 2008 is a product that costs a great deal more than Vista, and it's also aimed at servers, but with much of today's hardware being so powerful, many of those server features also useful on a desktop. Windows Server 2008 supposedly has the same kernel, network stack, and countless other features in common with Windows Vista. Thus, I ask the question: why does enabling the desktop features of Windows Vista on Windows Server 2008 result in a more stable, speedier system? Shouldn't it be pretty much the same?

    Just a few thoughts I wanted to put out.

Page 1 of 8 (111 items) 12345»