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.
Thanks for the posts. I think all of that makes sense.
I do have a request though, and I read a similar one in the comments. Please bring back the ability to truly customize what gets installed as part of the OS. It seems like with every iteration there has been less customization. I remember with Windows 95 there was a compact mode (meant for portables) but there was also custom which allowed you a lot of freedom to choose. I think its good that there is a GPO for Vista disabling access to features (Movie Maker, etc) but as an admin I would love to not have it installed in the first place.
Here's to 7! Although I am still enjoying Vista.
I just switched to Vista from a Mac, and while I'm really enjoying Vista, I'm very interested in seeing how 7 (and even 8) develops.
A topic I'd be interested in is how you are managing user feedback from Vista and integrating it into the development process for 7.
Vista actually has that functionality today -- the NLM APIs expose information gathered by Network Location Awareness and the Network Connectivity Status Indicator. Components can query whether the system currently has Internet access (not just local network) and register for callbacks when something about the status changes.
The issue isn't that Windows doesn't have the capability, it's that updaters aren't leveraging what we give them. I sympathize and share your frustration.
I am looking forward to seeing the File System. WinFS was showing promise and then it was just dumped into the abyss.
I will be reading this blog a ton and look forward to a bunch of new FUNCTIONAL features in the new OS.
My new Vista computer does not see the other XP computers or my printer. Sure there are 10,000 words on the web on how to make it happen, but WHY? Make 7 compatable, by nature, not by configuring to see all other $soft operating systems! I bought Vista for DX10, my teenager is a "Gamer", so please let 7 and XP be 10 friendly.
I have been a $soft guy from DOS. So no, I would never defect to the "fruit" guys. I do not want you to change TV channels or start my car. Just be an OS like XP, only better and faster. Simple yes? Tell the marketing guys to "pound sand" build me a robust, fast system, PLEASE!
May be it is all about the "New Coke" effect. I really like Vista more than XP (a security and registry hell) although the new security system seems to be the killer for most normal users. I understand that some don't like it. Windows 7 should not be another Vista but generate real user value.
To make a radical proposal: I just tried OpenSuse 11 with KDE 4.1 It is much great and the security system and installation is so much more simple. Why can't Microsoft just drop its ideological issues against open source and open standards, buy Novell and port the Win32 API. For me that would be the perfect Windows 7 and the real productivity tools as Windows Media Center or IE8. Today no single party can afford to waste developer time and energy in basic hardware infrastructure that just generates no profit or user value.
Apple did the right thing when it created MacOSX on the base of a Unix environment. Outsourcing to open source.
What I miss the most with Vista is the lack of a console to "wget" (Windows get? A command line utility) a file from the internet. There was a time when I thought I wanted to get rid off the command line but it is also a matter of simplicity.
With the Linux installation tools you can install system and third party applications with a single command line. That is so convenient and easy. I hate all these installers and popups and thousand messages you need to approve. It takes a lot of time and is inconvenient. Windows 7 should be the version that fixes that problem.
Windows 7 should be as simple as DOS was or the IE Web.
In my opinion, Vista tried to be all things to all people. This was an impossible goal from the beginning. Stick to what you know for sure all people want.
•Increase speed-is there anyone out there who wants a slow PC? Don’t make us speed up your OS buy purchasing more hardware.
•Increase productivity-make everyday tasks easier. How can you do that? Innovate.
•Backwards compatibility-if it works on XP now it should work on Windows 7 right after install. No downloading, no tweaking, no Googling a fix or workaround. Make it fast, stable and reliable.
•Add no more then 5 new features. But make them all “gotta have” features. I know Microsoft thinks every feature they put in an OS is a gotta have feature but guess what, most are not. Think…... bloat is bad.
•Resist the urge to sway us with eye candy. It didn’t work in Vista it won’t work with Windows 7.
•Consider a base OS with component add-ons based on the type of user (ie developer package, consumer package, business package, etc). This is a great idea brought up by one of the other posters. Don’t dismiss it.
•Have just one OS version. Sell it for $100. Then sell each package for $30-$90, that way people only pay for what they will actually use.
Before we went to XP I occasionally had users ask me when we were going to move to XP. These days, I have not had one person, not one, ask me when we are we going to move to Vista. They don’t even bring it up because that OS scares the crap out of people. Windows 7 needs to redeem Microsoft so users (consumers) will embrace the change.
I know….. users embracing change….mission impossible?
With so many different teams, wouldn't it make sense to have one that does nothing but explore integration between all of these areas and assure a seamless user experience (not just UI or interactivity, but even background things like sync, using the same data store/APIs, making sure the APIs are consistent, not reinventing the wheel, etc.)?
Excellent description of the workings of the development team. Thank you!!
With dev and test and pm all representing the product it seems customers are under represented. How do you determine who wins when a schedule is to be met versus a bug to be removed? You mentioned that test represents customers, but they also represent their own test completion schedules. Is that not a conflict of interest?
When the schedule gets tight, do you just
quick fixing bugs?
Interesting to read about how such a large dev team is managed.
I want to put in my vote for adding the "Custom" install option back in. Maybe not as low-level as some Linux installs, but at least broad Media Center/IE/WMP/Aero/Windows Mail choices.
I would also love to see Explorer.exe truly be a separate part of the OS. If someone really wanted to make a new window manager, they should be able to. I can't stand Linux, but if I don't like Gnome I can switch over to KDE extremely easily.
WinFS would be nice to see, but I don't know if users would react well to completely redoing how files are stored on the drive. The breadcrumb bar in Vista is a start though.
Anyway, keep up the good work, Steve! I love Office 2007's UI changes.
Let me start expressing my utmost respect both for Windows as well as Microsoft, being an avid computer aficionado since the old days of the Atari 600XL, and having gone through DOS on an 8086. I understand the term "legacy", and even though I'm not a computer "über-expert", I'm quite comfortable hacking the registry and windows services...
As has been utterly demonstrated in many aspects of human experience, change comes in two flavors: Evolutionary and Revolutionary.
The improvements from DOS 2.2 all the way to 5.2 we're all evolutionary, same as from Windows 2.0 to Vista. That is, improve upon the same concept, keeping what's good, removing some problems, and generally making better something already good. In the process, you do make compromises to earlier decisions that - with the experience time gives - might not have been the best looking back...
HOWEVER, there comes a time when the pressure - be it social, economic or in this case technological - forces a quantum leap or revolutionary change, that will make and brake the landscape, in this case the personal computer industry.
My personal feeling is we've reached said point, where we're tying down further development out of fear of letting go of the past, breaking free and the intrinsic fear of jumping off the cliff.
PEOPLE!... Time to think like a young man back in the early 80's and the beginning of the PC revolution!: A NEW WINDOWS...
A new Windows that states no legacy support, but designed from the ground-up to:
1) Boot-up (at least the core part of the OS) from rewritable solid state devices embedded in motherboards. Remember how fast the Commodore and Atari machines were able to get you up and running (seconds) !...
2) Truly multi-core, multi-threaded OS, where you require at least 4 concurrent threads separated into 1x OS, 1x HW, 2x Applications. From the design.
3) Lightweight: No loading absurd amounts of services just to make sure you can run old software. A light, clean and ultrafast OS.
4) Support for SELECTED hardware at the most 3 years old.
5) Concurrently - port Office to the new OS with same philosophy.
6) EXTREMELY Gamer friendly, keeping the compatibility software layer philosophy (read DirectX streamlined with same philosophy).
7) STOP trying to be everything to everyone - STOP trying to make it vanilla simple.
8) Two GUI interfaces: One plain vanilla, non-configurable for business side, and another "expert" fully tweakable for home use.
9) With so much computing power available, include as an add on system tools emulators - either for XP, NT, Win98, and even DOS. Hardware now enables us to run faster on an emulator than the original stuff did directly to hardware!...
In short, make it a fast, light OS that complies with 50% of users, and can expand according to needs with small programs and emulators for the 20% of the rest. The other 30% - they will migrate!...
See, most users like upgrading to something that feels faster, newer and more reliable - that is in fact NEW!... Problem is, Windows has gone through the it's product curve...
People, we're using a legacy OS (Windows Vista) on top of a completely new generation of hardware stuck by the requirements of an OS, itself stuck by the perceived need of absolute backwards compatibility!...
Think anew!... Think blank paper!...
Think like Bill Gates back in 198X when creating the original Windows!...
Glad to see you taking the bull by the horns with this blog. This is a unique approach and a wonderful opportunity to right the Windows ship, from both a product and a PR standpoint.
I'm curious to hear more about the target hardware for Win7. I understand system reqs will be the same as Vista, but what about latop/desktop/server/media center roles? Laptops are slowly taking over desktops as the primary computer interface (I haven't owned a desktop in 4 years now), and netbooks are starting to take off--where does windows fit in this world?
Additionally, in the realm of feature requests, I'd love to see Win7 focus more on sleep than on boot time. Reboot happens once every few weeks, if that, but sleep/wake/reconnect is a multiple-times-a-day scenario in my usage patterns. I don't care if boot takes 5+ minutes, just guarantee instant-wake from sleep across all hardware (I didn't say it was a small request :) ), and I'll post my MacBook on craigslist immediately.
Really a good start for this blog.
Know how is difficult to build such a complex architecture can be very useful to receive good feedback from the field
Please, don't care about page lenght....
This is fun and funny to read. Steven, I do enjoy your discussion. What's funny is seeing all the posts about what the OS should do. Some want a lot more, some a lot less. I tend to think that if MS would strip Windows down to the core, required areas that an OS really needs to be, and then sell it for $50, with additional products to add to those features (wow, sell Media Center as an add-on?), they'd make a ton more money, cut piracy as more people would be willing to shell out $50 for an OS versus $200+. The thing is, everyone has grown to have an expectation of what the OS should do, and for some that includes one-click-web-publishing (WHAT? WHY?), but for most, it doesn't. OCWP should be part of a web-publishing product that MS markets separately.
Just give us the file system, a semi-pretty interface, and a great way to install and CLEANLY uninstall software, make it lean, and we'd dump cash at your feet for any additional features that we need.
Interesting blog and comments... Might I be so bold as to try and summarize the preceding pages and pages of comments in one statment?
Make Windows 7 installation like Server 2008 installation (from simple core services to multi-function servers) based on user needs and requirements, and make it bloody fast and solid.
Oh... and don't just make VistaV2... that will irritate everyone. :)