Notes on comments.
Welcome to our blog dedicated to the engineering of Microsoft Windows 7
Thanks to everyone who provided comments and sent me mail. I definitely appreciate the discussion we have kicked off. There’s also a ton of energy in our hallways as this blog started. It seems like a good thing to do to start off is sort of an introduction to the Windows development team. This post provides an overview of the team that is represented by this blog.
Before diving into the main topic, let’s talk a bit more about what to expect from this blog. First a few words on the comments and emails I’ve received. I’ve received a ton—most of the weekend was spent reading emails and comments. There are definitely some themes. I would say by and large the reception has been very warm and we definitely appreciate that. The most frequent request was to discuss Windows performance and/or just “make Windows faster”. There’s a lot to this topic so we expect to talk about this quite a bit over the next months. There are many specific requests—often representing all possible sides of an issue such as some folks saying “please get rid of (or don’t do) <x>” and then other folks saying “whatever you do it is really important to keep (or do) <x>”. A big part of this blog for me personally is having the discussion about the multiple facets of any given issue. Even something that sounds as binary as performance proves to have many subtle elements. For example, some folks suggested that the best thing for boot performance is to not start anything until idle time and others suggested that the delay loading feels like it slows them down and still others have suggested that the best approach is to provide a startup manager that pushes everyone to choose what to start up. All of these have merit worth discussing and also demonstrate the subtlety and complexity of even the most straight forward request.
Second, much to the surprise of both Jon and I a number of folks questioned the “authenticity” of the post. A few even suggested that the posts are being “ghost written” or that this blog is some sort of ploy. I am typing this directly in Windows Live Writer and hitting publish. This blog is the real deal—typos, mistakes, and all. There’s no intermediary or vetting of the posts. We have folks on the team who will be contributing, but we’re not having any posts written by anyone other than who signs it. We will us one user name for all the posts since that keeps the blog security and ownership clear, but posts will be signed by the person that hit publish. (If I participate in the comments I will use my msdn name, steven_sinofsky.)
And third, what frequency should folks expect and when do we get to the “features of Windows 7”. When we wrote that we would post “regularly” we meant that we don’t have a schedule or calendar of posts and we don’t want to commit to an artificial frequency which generally seems inconsistent with blogging. We do expect to follow a pattern similar to what you have become familiar with on the IEBlog. FWIW, on my internal blog no one has yet accused me of not contributing enough. :-)
As we said in the introductory post we think it will be good to talk about the engineering of Windows 7 (the “how”) and the first step is establishing who the engineers are that do the engineering before we dive into the product itself (the “why” and “what”).
So let’s meet the team...
It is pretty easy to think of the Windows team as one group or one entity, and then occasionally one specific person comes to represent the team—perhaps she gave a talk at a conference, wrote a book or article folks become familiar with, or maybe he has a blog. Within Microsoft, the Windows product is really a product of the whole company with people across all the development groups contributing in some form or another. The Windows engineering team “proper” is jointly managed by Jon and me. Jon manages the core operating system, which is, among many things, the kernel, device infrastructure, networking, and the engineering tools and system (all of which are both client and server). I am part of the Windows client experience team which develops, among many things, the shell and desktop, graphics, and media support. One other significant part of the Windows product is the Windows Media Center which is a key contribution managed along with all of Microsoft’s TV support (IPTV, extenders, etc.).
There’s a lot to building an org structure for a large team, but the most important part is planning the work of the team. This planning is integral to realizing our goal of improving the overall consistency and “togetherness” for Windows 7. So rather than think of one big org, or two teams, we say that the Windows 7 engineering team is made up of about 25 different feature teams.
A feature team represents those that own a specific part of Windows 7—the code, features, quality, and overall development. The feature teams represent the locus of work and coordination across the team. This also provides a much more manageable size—feature teams fit in meeting spaces, can go to movies, and so on. On average a feature team is about 40 developers, but there are a variety of team sizes. There are two parts to a feature team: what the team works on and who makes up a team.
Windows 7’s feature teams sound a lot like parts of Windows with which you are familiar. Because of the platform elements of Windows we have many teams that have remained fairly constant over several releases, whereas some teams are brand new or represent relatively new areas composed of some new code and the code that formed the basis of the team. Some teams do lots of work for Server (such as the VM work) and some might have big deliverables outside of Windows 7 (such as Internet Explorer).
In general a feature team encompasses ownership of combination of architectural components and scenarios across Windows. “Feature” is always a tricky word since some folks think of feature as one element in the user-interface and others think of the feature as a traditional architectural component (say TCP/IP). Our approach is to balance across scenarios and architecture such that we have the right level of end-to-end coverage and the right parts of the architecture. One thing we do try to avoid is separating the “plumbing” from the “user interface” so that teams do have end-to-end ownership of work (as an example of that, “Find and Organize” builds both the indexer and the user interface for search). Some of the main feature teams for Windows 7 include (alphabetically):
I think most of these names are intuitive enough for the purposes of this post—as we post more the members of the team will identify which feature team they are on. This gives you an idea of the subsystems of Windows and how we break down a significant project into meaningful teams. Of course throughout the project we are coordinating and building features across teams. This is a matter of practice because you often want to engineer the code in one set of layers for efficiency and performance (say bottom up), but end-users might experience it across layers, and IT pros might want to manage a desktop from the top-down. I admit sometimes this is a little bit too much of an insider view as you can’t see where some interesting things “live”. For example, the tablet and inking functionality is in our User Interface Platform team along with speech recognition, multi-touch and accessibility. The reason for this is the architectural need to share the infrastructure for all mechanisms of “input” even if any one person might not cross all those layers. This way when we design the APIs for managing input, developers will see the benefits of all the modes of user interaction through one set of APIs.
The other aspect of our feature teams is the exact composition. A feature team represents three core engineering disciplines of software development engineers (sde or dev), software development engineers in test (sdet or test, sorry but I haven’t written a job description externally), and program managers (pm). Having all three of these engineering disciplines is a unique aspect of Microsoft that has even caught the attention of some researchers. In my old blog I described dev and pm which I linked to above (I still owe a similar post on SDET!).
The shortest version of these roles is dev is responsible for the architecture and code, pm is responsible for the feature set and specification, and test is responsible for validation and the ultimate advocate for the customer experience. Everyone is responsible for quality and performance, each bringing their perspective to the work. For any given feature, each of dev, test, and pm work as a team of peers (both literally and conceptually). This is a key “balance of power” in terms of how we work and makes sure that we take a balanced approach to developing Windows 7. Organizationally, we are structured such that devs work for devs, sdets work for sdets, and pm works for pm. That is we are organized by these “engineering functions”. This allows for two optimizations—the focus on expertise in both domain and discipline and also the ability to make sure we are not building the product in silos, but focused on the product as a whole.
We talk about these three disciplines together because we create feature teams with n developers, n testers, and 1/2n program managers. This ratio is pretty constant across the team. On average a feature team is about 40 developers across the Windows 7 project.
We also have core members of our engineering team that work across the entire product:
Some have said that the Windows team is just too big and that it has reached a size that causes engineering problems. At the same time, I might point out that just looking at the comments there is a pretty significant demand for a broad set of features and changes to Windows. It takes a set of people to build Windows and it is a big project. The way that I look at this is that our job is to have the Windows team be the right size—that sounds cliché but I mean by that is that the team is neither too large nor too small, but is effectively managed so that the work of the team reflects the size of the team and you see the project as having the benefits we articulate. I’m reminded of a scene from Amadeus where the Emperor suggests that the Marriage of Figaro contains “too many notes” to which Mozart proclaims “there are just as many notes, Majesty, as are required, neither more nor less.” Upon the Emperor suggesting that Mozart remove a few notes, Mozart simply asks “which few did you have in mind?” Of course the people on the team represent the way we get feature requests implemented and develop end to end scenarios, so the challenge is to have the right team and the right structure to maximize the ability to get those done—neither too many nor too few.
I promised myself no post would be longer than 4 pages and I am getting close. The comments are great and are helping us to shape future posts. I hope this post starts to develop some additional shared context.
> Notepad needs improvement. As the default text editor, it should at least be able to cope with unix end lines.
A non-issue. Just install Notepad2 (freeware) or Textpad (cheap shareware).
This what I like about Microsoft very much, they don't destroy the market for third party applications.
Yet "rar" support would be a feature very much needed. My girl friend had r00, r01 etc. files and was totally surprised when I suggested her to install WinRar. How could she know?
To all the folks requesting a modular OS with backwards-compatibility brought in through some emulation layer, and also to those commenting on Windows being at the end of its usefulness and asking for a rewrite:
Sorry folks, but my guess is that Windows7 is not that operating system. If Windows7 Server is going to be Windows Server 2008 R2, that should give us an indication of how much difference there will be architecturally. And I just don't see MS releasing radically different client and server operating systems, so Windows7's client OS is looking pretty much like Vista R2.
But Microsoft isn't stupid. Any product comes to the end of its useful life at some point and needs to be overhauled, and they know that Windows is not immune...could you see us still working on a DOS-based system today? Anyway, Microsoft *is* thinking ahead, but are (wisely) keeping expectations limited at this point. The keyword here is MIDORI. To be honest, I'm actually pretty surprised that nobody has mentioned it yet. Do some searches (I'll get you started: http://www.google.ca/search?q=microsoft+midori); it's worth a look.
This blog has been created to share useful information. Thanks and greetings!
This blog is an awesome idea.
There's always going to be an Anything-But-Microsoft / Slashdot element to these things, especially when they start up. "Puppet of the marketers, etc." But those folks will lose interest soon enough, then the real dialog with real customers can continue.
This level of openness between MS execs and real customers is great to see. I think the discussion will benefit everyone, and provide those both inside and outside the company with perspectives they might not have otherwise considered.
I look forward to reading more of this open discussion with real customers.
# re: The Windows 7 Team
>> Notepad needs improvement. As the default text editor, it should at least be able to cope with unix end lines.
>A non-issue. Just install Notepad2 (freeware) or Textpad (cheap shareware).
I don't have that kind of power over my IT organization. I need this to just work in the base install of the system, or it does me no good.
I know everyone loves to complain about Vista, but really, its a great OS, and compared to the MAC os(s) compatibility is laughable.
I was disapointed with all that was left out of Vista, i think that with Windows 7 - not being out for a while, the devolopers should try and aim to cram as much content in, i would not, nor do i know anyone who would, care if the OS completed size went over 20GB.
hard drives are so cheap these days, and with the rapid acceptance of SSDs, speed of access is not going to be a problem, i do admit that the Windows team should always strive to achieve the most efficient OS, but i'm running an AMD 64bit processor, with only 2GB of RAM and my system gets up and ready to go in only 20 seconds, or less.
So perhaps if windows 7 allowed a customizable installation - like openSUSE (or other Linux distros) then users could choose what they wished to install, which could decrease load times and overall OS speed.
What im trying to say is, dont aim for the lowest denominator, maybe make a PC and a Laptop (and also maybe a Netbook, PDA, SmartPhone) version, but keep the innovation and ammount of software that comes with a Windows OS, and extend it!
It would be good to apply some quality target standards across the OS teams - e.g. so that all content-containing dialogs are resizable, and that all settings dialogs include an import/export option to manage the same settings via .REG
Also, get back to the "big picture" stuff, i.e. collect all the loose settings and so on into templates that fit the overall sense of what the user is trying to do - in keeping with the "abstract details to users' understanding of tasks" concept.
For example; let's say I want everything to get out of the way because I'm playing a game. That shouldn't require visits to multiple UIs to shut down background stuff etc.; I should be able to select "games mode", and perhaps collect my own settings into my own defined modes.
Similarly, if I'm chasing down malware, I want the UI to show me everything and lie about nothing; shut down 3rd-party integrations, show all files, stop groping content ahead of my intent, don't let files define their own icons, impose strong file type discipline, etc.
One of Vista's best features is the Reliability monitor - which may just be a matter of better exposing what was buried in the Event Viewer, in ways more relevant to what one is trying to do.
I'm sure we could get similar usability improvements by collecting what already exists in the feature set, and also applying a consistent UI across features so that finding, setting, saving and restoring settings would be more intuitive than it is at present.
not sure if this has been requested or even if my post is in the right part of this blog but i'd like to see file explorer returned to the original format of two panes one for source and the other for destination
I run a 2core Duo, 2gig ram and PentiumM with 2gig ram, both 2.3Mhz, I had vista for 1yr and recently put xp back on both and omg the thing just purred, please please make Win 7 as smooth as XP, no 1000 processes running sure candy is nice but at what expense?? i cannot afford to keep buying hardware, perhaps make Aero all that optional.
I have been beta testing windows 7 and so far, I am extremely impressed. However, will their be an option to mount images as virtual drives? All current software is incompatible and I can't find anyone to help me with this one. I like to make images and use them instead of having to keep using the volatile cd/dvd format.
Hello!!!Microsoft!!Ding---Dong,,,one World--One system+++Microsoft.
first thing first->the name Microsoft7 is not good it should be named "
windows Centum", windows Talis" talis =of such a kind. "windows tales" = same as talis but tales is english but i preffered the latin and finally "Microsoft Windows VR" this is my favorite in this one I think you should created this version of OS that will support Virtual reality technology and enhanced X-box 360 too,,,,,,,,,,
next, preventing piracy...i have a solution but u have to pay for that one, but he is the free idea. cut the price of OS to the same price as xbox 360 games. or even cheaper...email me if u need to buy the solution.....
hi! i would just like to ask your help in activating my windows 7 ultimate. i upgraded by to windows 7 ultimate from windows 7 starter. but later, i was asked to provide the product key. i think i am now in the grace period before my windows 7 ultimate will be shut down. my windows 7 ultimate product id is: 00426-OEM-8992662-00497. i hope u can provide me with the product key. my email address: firstname.lastname@example.org
thank you very much
A larger bar for precise volume control is needed.