Windows 7: Preventing Another Vista-esque Development Process

Six months ago, after a long gestation period, Microsoft finally released Windows Vista. Vista is a huge release; not only because of the long list of new features, but also because of its sheer size, and number of bugs and other oddities and downsides. The development process that lead to Vista has left many with a very bitter aftertaste; features were cut, codebases were scrapped, release dates postponed. A few days ago, Microsoft released some sparse details on Vista’s successor, internally dubbed ‘Windows 7’, and in order to prevent another Vista-like development cycle, here is what I would advise Microsoft to do. Update: APCMag reports that Julie Larson-Green, who was the driving force behind Office 2007’s new Ribbon user interface, has been transferred to the Windows 7 GUI team.

[Digg this story!]

Many have advised Microsoft to scrap the current Windows codebase, and start all over again – or, use something exotic like Microsoft Research’s Singularity. None of that is necessary. The Windows NT kernel, upon which Windows NT, 2000, XP, Server 2003, and Vista have been built, is very much capable of driving a modern operating system. The kernel is portable (the NT kernel has been ported to MIPS, PPC (not only the Xbox 360, but also workstations), SPARC, Alpha, Clipper, and more), so it is ready for any future platform changes. This portability was also evidenced by the fact that Microsoft was fairly quick in releasing versions of Windows NT for IA-64 (Intel’s Itanium) and AMD’s 64bit processors (followed later by Intel’s x86 64bit processors). NT has proven itself to be ready for any future platform changes that might happen in the desktop computing world.

Apart from being portable, the Windows NT kernel has also had a long time to mature. This is evidenced by the fact that kernel crashes (the infamous blue screens of death) have become an extremely rare occurrence in Windows Server 2003, Vista, and up-to-date installations of Windows XP (assuming you are not running any unstable kernel-mode drivers). Contrary to what some people stuck in 2001 want you to believe, current versions of Windows are stable as a rock, and the system barely crashes. The last time I saw a blue screen of death, was when I was using a highly unstable version of the Ati driver for my Radeon 9000. That was over 4 years ago.

Where Microsoft got its act together in the stability department later on in Windows XP’s life cycle, they failed to do so in the security department. Despite its second service pack, Windows XP was not a very secure operating system. Microsoft made the fundamental error of not enforcing the strict security practices the Windows NT kernel provided the operating system with; as a result, application developers got sloppy.

With Vista, Microsoft finally saw the light of day, and implemented User Account Control – something that should have been standard on Windows NT since its very first version. And now, when running Windows Vista, the sloppiness I just mentioned gets painfully visible: even installing something as simple as a notepad application requires administrative privileges.

In conclusion, scrapping Windows NT would be a pointless exercise. It is a mature, stable, and, yes, secure system by design. Do not make the mistake of thinking that simply because Microsoft refused to enforce proper security policies from the get-go, that NT is an insecure system by design.

What Microsoft does need to scrap, is the userland it has built on top of NT. Anyone who has used Windows Vista on a day-to-day basis (I use it every day on my laptop) knows that Vista’s userland is… Immense. Complex. This complexity stems from the one thing that has kept Microsoft on top of the operating systems game for so many years: backwards compatibility. It might not be perfect, but it sure is a millions times better than what the competition has to offer. Microsoft actually keeps copies of a lot of applications out there, and tests them to ensure compatibility is maintained. This is an extremely important aspect of Windows for many businesses, who may still run old DOS or Windows 3.x-based applications; in fact, the tills at the shop where I work are DOS applications. Sure, they look old and outdated, but I have been using them for 5 years (and some of my colleagues for 10-15 years), and they perform their job just fine.

For programmers, however, this desire to maintain backwards compatibility is a potential hell. This means that if you, as a Microsoft employee, have come up with a new killer feature, or maybe something less significant like a fix for long-standing minor bug, it needs to pass through a long process of testing to ensure backwards compatibility is not affected by your code. And if it does affect compatibility, your code needs to be rewritten, or, new patches need to be made to fix the compatibility breakage caused by your original patch. You can easily see how something like this is a restraint on many developers, and how it can hold back many envisioned improvements.

So, scrap the current Vista userland. Give the developers at Microsoft the breathing room to build an entirely new graphical user interface and other userland features on top of Windows NT. Do not make the common mistake of thinking that the programmers working at Microsoft are somehow magically less qualified than those working at Apple or on open-source projects. Various Microsoft Research projects have shown that there are a lot of bright minds among Microsoft’s 71100 employees, and giving them the freedom to develop something new, without having to take almost 20 years of application compatibility in mind, could be a very wise thing to do. It would also be a morale boost among the employees.

This Windows 7 would have all the hardware compatibility the current versions of Windows NT have (since the kernel and base system are still compatible), so it would run on most modern machines. The userland could incorporate many new and fresh ideas, and it would make use of Windows NT’s security features – and it would enforce those strictly upon application developers. In addition, it would incorporate a VM in order to run 200x/XP/Vista applications, similar to what Apple offered on the PowerPC version of Mac OS X (the Classic environment to run Mac OS 7-9 applications).

This would undoubtedly be devastating for Windows’ market share. Removing backwards compatibility means business users would never buy into Windows 7, and that would mean a serious lack of cash-flow for Microsoft. Therefore, Microsoft needs to cater to business users and other people concerned about backwards compatibility by maintaining a version of Windows based on the ‘old’ Windows NT; call it Windows Legacy, if you will. This version of Windows would be Vista (or, more preferably, Windows Server 2003), receiving only security updates and bug fixes.

Would this require more developers than are currently needed? I doubt it. The legacy version would need little development – since all that needs to be done on that version is bug fixes and security fixes. It’s a legacy version – no need for new features. And since the modern version does not require work on legacy stuff, greatly simplifying development, the end result would be that no more developers are needed than there are now. This is of course a bold statement, and only time can tell if that is actually the case.

There are a few things Microsoft ought to take care of when it comes to Windows 7’s beta/RC stage and launch. Release developer previews early and often, to as many developers as possible. Provide excellent documentation on the new APIs and user interface, to allow the major ISVs to get to know Windows 7. When Windows 7 is released, provide its small userbase with fast updates and bugfixes, and provide service packs for free on a regular basis. Promote participation by creating easily accessible bug tracking systems, and allow openness among developers, and good interaction between them and the userbase. And, most importantly, do not introduce any feature until it is 110% sure it will make it into the final product.

This is what I advise Microsoft to do. Is it likely a similar course of action will pan out over the following years? No, I do not think so. Microsoft has invested far too much time and money into Vista to make it sizzle out in such a way. In other words, I am afraid we are going to be stuck with another Vista-esque release.


PS: Microsoft, whatever you do with Windows 7, please do not create 12946 different versions. Ship one version, at a fixed price, and be done with it. It will save the world a whole lot of headaches.

If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.


  1. 2007-07-23 1:38 pm
    • 2007-07-23 1:46 pm
      • 2007-07-23 1:50 pm
        • 2007-07-23 2:08 pm
          • 2007-07-23 2:19 pm
          • 2007-07-23 2:21 pm
          • 2007-07-23 2:44 pm
          • 2007-07-23 3:03 pm
          • 2007-07-23 9:29 pm
          • 2007-07-24 2:57 am
        • 2007-07-23 2:08 pm
        • 2007-07-23 2:21 pm
          • 2007-07-23 2:30 pm
          • 2007-07-23 3:10 pm
          • 2007-07-23 5:53 pm
          • 2007-07-23 7:46 pm
          • 2007-07-23 3:51 pm
          • 2007-07-23 3:55 pm
          • 2007-07-23 4:39 pm
          • 2007-07-23 5:14 pm
          • 2007-07-23 9:30 pm
          • 2007-07-23 7:27 pm
          • 2007-07-24 12:22 am
          • 2007-07-23 2:30 pm
          • 2007-07-23 2:41 pm
          • 2007-07-23 4:13 pm
          • 2007-07-23 4:27 pm
          • 2007-07-23 5:01 pm
          • 2007-07-23 5:11 pm
          • 2007-07-23 5:29 pm
          • 2007-07-23 8:11 pm
          • 2007-07-23 9:10 pm
          • 2007-07-24 2:03 pm
          • 2007-07-24 2:10 pm
          • 2007-07-24 3:59 pm
          • 2007-07-23 8:39 pm
      • 2007-07-23 1:53 pm
        • 2007-07-23 2:04 pm
        • 2007-07-23 4:43 pm
    • 2007-07-24 2:24 pm
  2. 2007-07-23 1:55 pm
    • 2007-07-23 3:43 pm
      • 2007-07-23 7:22 pm
  3. 2007-07-23 2:04 pm
    • 2007-07-23 2:05 pm
      • 2007-07-23 2:10 pm
        • 2007-07-23 2:31 pm
          • 2007-07-23 5:14 pm
          • 2007-07-23 6:15 pm
          • 2007-07-23 7:02 pm
          • 2007-07-23 7:03 pm
          • 2007-07-23 7:30 pm
        • 2007-07-23 2:34 pm
          • 2007-07-23 6:27 pm
          • 2007-07-23 7:26 pm
        • 2007-07-23 2:48 pm
    • 2007-07-23 10:50 pm
  4. 2007-07-23 2:52 pm
    • 2007-07-23 2:59 pm
    • 2007-07-24 3:44 am
  5. 2007-07-23 3:23 pm
  6. 2007-07-23 3:41 pm
  7. 2007-07-23 4:09 pm
  8. 2007-07-23 5:26 pm
    • 2007-07-24 12:21 am
      • 2007-07-24 12:32 am
  9. 2007-07-23 6:29 pm
  10. 2007-07-23 6:51 pm
  11. 2007-07-23 6:53 pm
  12. 2007-07-23 6:59 pm
  13. 2007-07-23 8:14 pm
  14. 2007-07-23 9:17 pm
    • 2007-07-23 10:44 pm
  15. 2007-07-24 2:54 am
  16. 2007-07-24 3:54 am
    • 2007-07-24 2:20 pm
      • 2007-07-24 3:03 pm
        • 2007-07-24 3:22 pm
          • 2007-07-24 4:16 pm
    • 2007-07-24 2:59 pm
      • 2007-07-24 3:18 pm
        • 2007-07-24 8:32 pm
  17. 2007-07-24 10:20 pm