When a certain product has been around for many years, at some point you will find users of the product who have not been around in the early years, and as such, aren’t familiar with the product history. Or you will have people who just forgot about that early history after a while.
How well do system requirements age?
Such seems to be the issue with Windows XP. Even today, only months before Windows 8 is to be released, many people still use XP, and complain that newer versions such as Vista and 7 are not as good as XP. They’ll claim that XP has lower system requirements than Vista/Windows 7, and that XP is faster.
But, how true are those claims? Well, let me just go by my own experience. In the early days of Windows XP (around 2002), my father bought a laptop with Windows XP Home pre-installed. It has a Celeron 1.6 GHz CPU (Northwood-based, 256k cache), 256 MB memory and a 20 GB HDD. So it is well above the minimum requirements. In fact, it is even well above the recommended requirements for Windows XP.
And initially it worked just fine with Windows XP. However, as time went on, Windows XP (and related Microsoft software, such as IE and Office, or things like Messenger and Mail), was updated, and things started to change. At some point, we decided to upgrade the memory to 512 MB, to improve performance, because the system was getting quite slow. However, XP just continued to grow and grow, and at some point even 512 MB was no longer cutting it. Aside from that, even the 20 GB disk is getting very cramped.
I recently did a complete reinstall of the system, to rule out the possibility that the system just got slow and bloated because of all sorts of junk that accumulated over the years. But no… If you just install Windows XP and bring it up to date, you need far more than just the 1.5 GB of diskpace that you originally needed. SP2 itself adds 1.8 GB to the mix, and SP3 adds another 0.9 GB. So you now need more than 4 GB just to have the OS installed. If you then install some applications, like Office and Visual Studio, the 20 GB disk is pretty much full already.
And then there are the other things that Microsoft has introduced over the years, such as the firewall and their malware scanners (first Windows Defender, now Security Essentials). The system becomes pretty much unusable when you leave those enabled. They take up far too much memory, CPU space and disk performance. The same goes for Windows Update. On that machine it takes about 30 minutes just to scan for new updates. Since the system is not used on a daily basis anymore, it wants to do that scan pretty much every time you boot it up. Which means that for the first 30 minutes or so, your system is very unresponsive (for some reason, Windows Update runs up incredible memory usage stats… over 1 GB of memory in use just to scan for updates? Not good for an OS that was originally supposed to work on systems with only 64 MB of memory). As a result, I have turned off automatic updates and real-time security features. It’s the only way to have the system remotely usable when I want to use it. I set it up for manual scans and leave it running when I’m not using it.
Yet another thing that has a significant impact on performance is the wireless network. Back when the laptop was new, wireless networks were not common yet. It only has a built-in 100 mbit ethernet adapter. But over the years, having wireless connectivity became more important, so we installed a PCMCIA 802.11g (54 mbit) adapter. However, these networks are usually encrypted, and this encryption is done on the CPU. So this adds yet more overhead that wasn’t around with the original release of Windows XP.
All in all, despite the system being far better than Windows XP’s original “recommended system requirements”, the system is barely usable with a fully updated Windows XP SP3 in 2012. 512 MB really is not enough, I would recommend 1 GB as a minimum for Windows XP (it’s just not possible to use more memory in this particular laptop. The chipset cannot address more than 512 MB). And lo and behold, that is also the minimum requirement for Windows 7!
The issue here is simply that Windows XP’s system requirements are outdated. They come from a different era, and no longer apply today. Vista and Windows 7 have system requirement that are simply more realistic in today’s world. A system with 1 GB running Windows 7 is far more usable than a system with 128 MB running XP.
So for practical intents and purposes, I think the main difference between Windows XP and Windows Vista/7 requirements is related to disk space. Yes, although XP has more or less tripled in size over the years, it still has a modest footprint. Then again, in an era where you buy harddisks by the terabyte, I don’t think a few more GB for the OS are really going to matter.
In many other ways, history has repeated itself… Windows XP was preceded by Windows 2000. However, most people will not have used Windows 2000. Firstly because Windows 2000 was aimed purely at the professional market (Windows 98 and ME were aimed at the home users), and secondly, because there was not that much time between the release of 2000 and XP. Home users would upgrade from Windows 98 or ME to XP, and many professional users went from NT4 to XP. So a lot of people just skipped Windows 2000 altogether.
Likewise, Windows 7 followed reasonably quickly after Windows Vista. And Vista is an OS that most people have not used. This skews the perspective a bit, obviously.
When Windows 2000 came out in late 1999, you had to have a reasonably high-end machine. Its recommended system requirements are pretty much the same as Windows XP’s (just like is the case with Vista and Windows 7). And its minimum system requirements were possibly the most unrealistic ever. When Windows 2000 came out, I still used my trust Pentium 150 with 64 MB, running Windows NT 4.0. This OS ran like an absolute dream on that machine. But Windows 2000 was just a total disaster. It would take ages to boot, and once it was all booted up, it already used all your 64 MB of memory, so anything you wanted to do would cause excessive swapping, and wasn’t really usable. However, since DirectX was no longer updated for NT4, I had to use Windows 2000 if I wanted to develop for DirectX 5.0 or newer.
So I upgraded to a PII-400 with 256 MB. Windows 2000 worked better, but booting still took ages, and it wasn’t quite the smooth and snappy feeling I was used to from NT 4.0 on my P150. Sometime later, I used Windows 2000 on a 1 GHz system, and even that wasn’t all that fast with booting Windows 2000. Windows 2000 just was a pig.
Was Windows XP all that much better? Well, not really. Microsoft improved the booting speed with XP, that much is true. But other than that, it was still about as heavy as Windows 2000 was. The difference was mainly that it was some 2 years later, and most people had already upgraded to a system with enough CPU power and memory to run Windows XP properly (at least, at that point in time… see above). Aside from that, for a lot of people, it was the first time that they were using an NT-based Windows, instead of the earlier DOS-based Win9x versions of Windows.
Windows NT for the mainstream
NT had its pros and cons. Its DOS box was no longer a true DOS, but rather a virtual machine. By default it would not actually run DOS (as in command.com), but rather the NT Command Prompt (cmd.exe). There is a big difference: The NT prompt is a proper 32-bit Windows application. Its operation is similar to DOS, but not equal. Not all commands are the same, and it does not provide full DOS compatibility. The 16-bit NT DOS VM will not be started until you start an actual 16-bit DOS program (which could also be command.com by the way). Since these DOS processes run in a VM, they are sandboxed, so that they cannot take over the entire system anymore, like they could with DOS and Win9x. As a result, some parts of the hardware are emulated, and performance is worse than under native DOS/Win9x. Some parts are also not entirely compatible.
Likewise, Win9x was not truly the Win32 system that was introduced with Windows NT. Win9x implemented a subset, which would allow most simple programs to work, but it did not implement things like multiuser and security-features. The implementation was also not all that robust, and did not perform as much sanity checking as the full Win32 implementation did in NT.
The problem here is that a lot of developers developed on Win9x exclusively, and never bothered to check their code on an actual NT system (or in some cases they just never bothered to read the documentation properly, and pass the right values to a function). The old mantra of “Working code is not bugfree code” showed up again: software that worked fine on Win9x could be completely broken on NT. Most of the time that was not even NT’s fault. It just ‘happened to work’ on Win9x because it happened to ignore certain values and things. Some people have all the luck…
So when people moved from Win9x to the NT-based XP, they found that a lot of older DOS/Windows software no longer worked. There was also the problem that Windows XP required different drivers than Win9x, and these were not developed for older hardware. In general you could use Windows 2000 drivers in XP though, so hardware that already had updated drivers for Windows 2000 could generally be used as-is in XP. In that sense, Windows 2000 laid the groundwork for XP.
Does that sound familiar? It should, because pretty much the same thing happened again when people moved from XP to Vista. Although Windows NT had been designed as a multi-user system from the start, where you would have various levels of user rights (administrators, power users, regular users, guests etc), these features were not in widespread use outside professional environments. Since Win9x had no concept of users and rights management (it comes from the world of personal computers and MS-DOS, where generally there was one user per computer and no networking, so the user was also the owner/administrator of that computer by default), software that was aimed mostly at the home/Win9x market just ignored such things altogether, including the design guidelines for Win32 applications. As a result, such software could generally only run under administrator rights, and so even though it was possible to create users with limited rights in Windows XP, most people just ran as administrator (either because they didn’t know any better, or because it was too inconvenient with so much software not working properly).
With Windows Vista, Microsoft tried to tackle this problem by introducing User Account Control, a technology that made it easier to run with a limited user account. However, a lot of those poorly written Win9x/XP applications still required special rights, so people saw quite a few UAC-popups, which they considered annoying. They blamed this on Windows Vista, although it really was not Vista’s fault at all. You could still run as administrator all the time, just like in XP, and not see any UAC popups. However, this would obviously be less secure. Besides, if programs are written properly, you should rarely see a UAC-popup in daily use. In most cases, software will only require it during installation. But a lot of software would e.g. store data in the Program Files folder, or in parts of the registry that were meant for system data, not user data. This was against Microsoft guidelines. Prior to Vista, this would generally work okay silently, because the user was administrator, and had the rights anyway. But with Vista, you would get a UAC-popup that requested these rights.
So, in short, Windows XP did not quite start out the way people see it today. People tend to see it as a fast and lightweight OS that is very robust. Initially it was none of those things, really. But XP changed a lot over time, and mostly for the better. Ever faster hardware did the rest. Mostly the same can be said for Vista. It didn’t have a very strong start, but software and driver updates and faster hardware improved Vista over time. Unlike XP however, not that many people used Vista, so they never noticed.
So is Windows 7 that much better?
I already made a post about this when Windows 7 was released, but I’ll reiterate the points shortly. Windows 7 uses the same new driver model that Vista uses, so it is plagued by the same problems of legacy hardware not being supported anymore. Windows 7 also still has the same UAC-based security system (although it has improved slightly, so you get less prompts, but mostly when using Control Panel or Explorer). Windows 7 also still has the same system requirements as Windows Vista.
So like with Windows 2000 vs XP, it is not so much that Windows 7 is a better OS, it is more that Vista did the groundwork for driver and application development. By the time Windows 7 came out, a lot of devices were already supported in Vista, and could be used as-is in Windows 7. Many applications also had been updated to avoid issues with UAC and such, so they were not as annoying to use anymore. And, since a few years have passed, people generally had faster PCs by now, so both Vista and Windows 7 would run smoother anyway.
I personally moved to Windows Vista at an early stage, because I wanted to develop for DirectX 10 (again, sounds familiar, doesn’t it? People made a big deal out of this, but I never heard anyone complain back when DirectX development for NT4 stopped). And initially, yes, Vista definitely was a bit troublesome. I had to upgrade some of my hardware, because it was no longer supported, and some drivers were rather buggy (such as the nVidia drivers for my GeForce 8800GTS), or just nowhere near as optimized as their XP counterparts. But I had to stick with Vista anyway, because of DirectX 10. And Vista certainly improved over time. After SP1 was released, the performance and compatibility issues were pretty much solved.
I started running Windows 7 alongside Vista in the beta stages. And the difference really was not that large. Even today I still have my Windows Vista installation alongside Windows 7, fully up-to-date. And although Windows 7 is slightly faster, more efficient, and has some nicer UI features, the differences are marginal at best, and I could personally live with Windows Vista just fine.
How good is Windows XP in 2012?
I also still have my installations of XP and XP x64 running on my system, fully up-to-date (as a developer it’s always a good idea to test your code on different OSes and different hardware from time to time). XP is still a good OS in its own right… Most software still runs fine on it, and it is very robust and reliable (and that certainly was not the case for MS-DOS/Win9x. NT/2k were robust, but probably not very wellknown outside professional environments). But I don’t get why some people still see Windows XP as the ‘gold standard’. XP is really starting to show its age. Because it lacks UAC and various other newer security features (eg IE running in protected mode, ASLR), it is nowhere near as secure as Vista and Windows 7.
Performance-wise, XP is also not that good anymore. Windows Vista and especially 7 make much better use of multicore CPUs, and large amounts of memory. XP was designed in a time when conserving memory was still a priority. Vista/7 instead use the extra memory to pre-cache various data, making the system a lot more responsive. XP still rattles the HDD a lot, and causes a lot of waiting in places where Vista/7 just blast through right away. Aero also gives a much nicer and smoother experience. When you drag windows around in XP, you see a lot of tearing, and you see all sorts of rubbish on the screen before it is redrawn (invalidated rectangles waiting to be updated).
What is the real evolution in OSes?
My view is that up to, and including, Windows XP, the hardware of home/personal computers was trying to catch up with the OS technology. OSes had to work within the limits of this hardware, so even though more advanced OS technology was available in mainframe and supercomputer systems, this could not yet be applied to regular PCs.
For example, early PCs had very poor graphics capabilities, so it took a while until an OS could implement a GUI. Other systems had successful GUIs before the IBM PC did, partly on the strength of their hardware being better suited to the task (eg the Apple Lisa and Macintosh, the Commodore Amiga, Atari ST, and even the C64 with GEOS). Likewise, protected mode and multitasking were not really possible on early PC’s. It wasn’t until the 80386 CPU that the hardware had powerful enough features, on which the OS could build memory protection and virtual address spaces. And even then the CPUs were still too slow. Proper 32-bit protected mode software did not become popular until around 1992-1993, when 80486 CPUs were commonplace and the first Pentiums started to arrive.
And then people started to use the internet, which required a lot of extra development in terms of security features, requiring ever more powerful machines (which as I described above, seems to be why Windows XP requires a much more powerful machine than its original requirements indicated). It seems that a few years ago, this ‘arms race’ has finally calmed down, and OSes no longer go up in system requirements much, if at all. Instead, hardware is now ahead of the OSes, and OS development is now concentrating on making more efficient use of all the memory, the multicore CPUs, video acceleration, and let’s not forget the upcoming GPGPU technology either.
Which is why Windows 7 actually runs slightly nicer than Vista on a modern system, and considerably nicer than XP. And Windows 8 seems to continue the trend, with an even better scheduler, and more efficient resource use overall.