Why Vista Release Date Really Slipped
anzev writes "A team manager for Windows for 5 years has decided to write a blog-essay about what caused Windows Vista project to miss the due date. Philip tells us in the blog, that Windows developers are writing an average of 5000 lines of code (which is *only* 1200 lines less than the national average of 6200 lines of code per year). He addresses issues like the Vista code being too complicated, the processes the developers have to follow too complex and a lot more. All in all it gives a nice insight into why Vista will be late, from a different perspective. Oh, and Slashdot gets mentioned too ;-)."
Linear extrapolation would take us to about eighty-two-million today, comfortably over Vista's projected fifty-million; but who's counting?
This isn't some critical release patch.
This isn't some driver that's long overdue.
Microsoft never hand signed a sheet of paper telling me that I would have my copy of "Longhorn" by the end of 2005 or even 2006.
It's a new operating system. More importantly, it's an operating system that has to compete with OSX, Linux, Unix & Windows XP. That's right, they are going to have to figure out someway to improve Windows XP. They aren't stuffing Madden 2005 into Madden 2006 and I hope they are taking their sweet ass time to rework some of the Windows internals that may have been a long time plague on the OS.
My point is that they're making something new and probably forging new ground. According to this article, they suffered the same thing a lot of projects have suffered. You project management plan looks great in Microsoft Project. Then you print it out and re-wallpaper the offices only to have the developers sift through it and go, "What the fsck?"
If Vista is as complicated as its specs say it is, I hope Microsoft takes another two years to get this done because I don't want to have to put up with Vista SP1, Vista SP2, Vista SP3, etc. down the line. I think games like WoW took a lot of time to make but it paid off to be a really stable engine with great features that blew everyone away. Microsoft could learn from that. You might upset some fans and you might piss your boss off but misinformation/miscommunication in the early stages of a project only lead to its downfall. If you can voice concern/dissent to your boss, I suggest you get a new job. We're human beings, we are fallible and we do have limits. Even if we're hand selected by Microsoft's HR department.
I'm reminded of a story about Hitler where the Allies had broken through French beaches at Normandy (unexpectedly) and Hitler's aides were at his house trying to figure out how they could wake Hitler up and inform him of the brigade of tanks rushing across the countryside towards them. Because they all feared for their lives, no one ended up waking him up and they lost a whole lot of ground & a few resources because of it. If you run your company through fear and people can't talk back to you, you'll end up like Hitler. Dead in a ditch with petrol all over you.
I'm also getting really sick and tired of people measuring a project's greatness by KLOC. It's also very frustrating to hear people brag about how many KLOC they write each year. That's great--now how do I know it's not riddled with bugs or a complete memory hog? What ever happened to the desire for elegant computer code? When I see a program that does something quickly and elegantly, my brain releases the same chemical that I used to get when I saw beautiful math proofs. I know this is the mark of the nerd but there's something very satisfying about it.
One last note, this MSDN blogging site does not care for Firefox. The right hand side of the text hangs over about an inch into the right bar side and it's annoying because the text spills onto the calendar. I certainly hope this doesn't happen on purpose.
My work here is dung.
Far more nuanced. Some parts of Vista are bloated pieces of crap. Some, on the other hand, won't even ship. And still others will be incredibly efficient, presumably the important stuff like federal backdoors and DRM.
I don't see things in black and white! There are shades of grey in there too!
(I'm only kidding by the way, and in reality don't give a shit about Vista)
Obviously the other thing that is too complex is the whole to/too/two thing ;)
Blessed are the 1337, for they shall pwn the earth.
Vista code being /too/ complicated...
Windows code is too complicated. It's not the components themselves, it's their interdependencies. An architectural diagram of Windows would suggest there are more than 50 dependency layers (never mind that there also exist circular dependencies). After working in Windows for five years, you understand only, say, two of them.
Duke Nukem Forever and?
Czech language for absolute beginners
Wow, who uses lines of code as a metric. It's an aweful metric to use. I have seen many bad coders produce a lot of code. Lines of code as a metric encourages cut and paste reuse instead of abstraction of common ideas and functions.
As x approaches total apathy I couldn't care less.
...as bear is to taking a crap in the woods?
...as Pope is to being Catholic?
Workers blame the managers
The way this blog is written makes it obvious why its late, and why it probably won't hit the needs of the users. All the effort goes into playing the bureaucracy game and between the 'them' and 'us' everything important gets lost.
Personally I believe its a failing of the MBA courses, etc. The idea that 'A' controls 'B', rather than they work together as a team is prevalent and its fundamentally incompatible with good projects. By default I tend to look questioningly at those who claim to be able to manage because 'they've done the course'. Too often they forget they are costs to the programme and have to offer real, obvious, value to be worth having.
We need project management, version 2.01
5000 lines per year is mentioned as a joke...
Find Nearby Indie Events
The largest software project in mankind's history now threatens to also be the longest.
Nah, that would be Duke Nukem Forever........
How in the world did Vista ever become the "largest software project in mankind's history"? I mean, this is an operating system. This is just an OS for a microcomputer, for pity's sake! It's not running the Internation Space Station. It's not running a nuclear aircraft carrier. It's just supposed to manage a personal computer.
This shouldn't be so hard. It shouldn't be so big, or so complicated. I know we expect our computers to do a lot these days, but still. . . Shouldn't application software do most of the heavy lifting anyhow? I'm just trying to figure out why it takes hundreds of megabytes of OS -- and fifty levels of dependencies, according to the article -- to manage a desktop computer and provide APIs.
"This isn't some critical release patch. This isn't some driver that's long overdue. Microsoft never hand signed a sheet of paper telling me that I would have my copy of "Longhorn" by the end of 2005 or even 2006. It's a new operating system."
"Oooh, de poor little Vista Developers are sooo overworked. Lets give them a break."
No. Wrong. No break. And no extra auto-credit for being MS. I couldn't care less about Vista being delayed or not. But I will take every chance to turn the situation against all legends that cause people to think Computer == Windows. Usability == Doubleclick. Etc.
Reading that essay - from a Vista Guy with a position - gives of one clear message: Vista actually is a bloated weedy mess beyond any measure. And, guess what, making something new or not, the code that makes the unixes so usefull has been programmed allready and is in heavy field use for quite some time now. Somewhere between 10 and 20 years. After 30 years of unix, hardware finally is fast enough to run it on PDAs and cheap Notebooks. What x86 is to architecture - ancient, crazy, nutcase, but good enough for everything, even a Mac, Unix is to OSes - ancient, crazy, nutcase, but good enough for everything, even good enough for a Mac.
No, no break. Game over I say.
If MS has the guts to burn 10 Billion - 20 Billion on getting a new OS paradigm on to every plattform on the planet and do a good job at the same time they'll maybe make it. But even this late, jumping the OSS bandwagon and burning the cash it takes to take over the whole OSS service, distribution and customization sheebang would be cheaper and have better prospects.
We suffer more in our imagination than in reality. - Seneca
He said:
The types of software management issues being dealt with by Windows leaders are hard problems, problems that no other company has solved successfully.
Nobody else has solved the problems? How is it that OSX, which contains many of the features that Vista is due to have, shipped years ago? Before the Microsoft fanboys start with "Ah but it's different...", I think Microsoft is guilty of making their own problems... Perhaps some problems shouldn't be solved in software, but should be solved at the level of how your company works.
So they admit that Vista is late because their programmers were too busy bashing the PS3, reading TFA and generating FUD on slashdot?
Realy people, I'd expect management to delegate that to the suits in PR or Marketing
--- As to make my comment seem, by comparison, more intelegent... doodie doodie doodie poop poop poop!
I thought the number of finished lines of code per developer-day (that means debugged, documented, etc.) was only 20 for an average developer? A top developer will get closer to 10x that (mainly because when they write a lot of code in a day, they don't introduce lots of silly bugs that take a lot of time to correct later). Some developers actually have negative productivity overall (which makes sense when you consider the time spent by their colleagues to fix their bugs afterwards).
I can't remember where I saw those stats: probably something like Code Complete or The Mythical Man Month, I imagine, or possibly the IBM study into developer productivity at different ages (the one that says anyone under 25 is only good for documentation, and anyone 25-30 should only work on one project at once). Does anyone recognise the number?
I can't see any references in the blog post. Where do the figures of 6,200 (and the earlier 9,000) LOC/year come from?
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
The author seems to like emphasizing the fact that Vista is the biggest "software" project in "history". Well, maybe in Microsoft's history. But having worked in industry for several years, I can assure you that there are other projects which exist that require significant amounts of highly complex and non-trivial code.
One very pertinent example, from an area in which I've worked, is the design of a semiconductor. (In this case, specifically, an FPGA.) Do you realize how many lines of software are necessary to make a complex semiconductor work? From the VHDL code, to the software support tools for the device (in the case of FPGAs, this includes compilers, synthesizers, tech mappers, placers, routers, timing analyzers, etc.), to the code to operate the test beds, etc.
Egads. This blog author has no idea. I'd wager that he suffers somewhat from Microsoft's "I'm bigger/better than you" syndrome -- he's like to think that Vista is breaking new ground in terms of size and project management, but he's a few years late.
Lines of code is a stupid metric. It's on the wrong side of the balance sheet. Lines of code is a cost, not a benefit. As a software engineer, your job is to express concepts in as little code as possible. That's why we have high level languages like Lisp, Haskell and Ruby.
On the other hand, we have people who try to fatten their lines-of-code metric, which is why we have assembler, C, and TheDailyWtf.
If anyone asks me for how many lines of code I've written in a day, I will either respond with a negative number, which is probably correct, or if I'm feeling vicious, One.
Bad shape by a constant = Windows 4.0 to Windows XP
Bad shape by an order of magnitude = Windows 98 to Windows Me
Bad shape by an infinite order = MS Bob
--- I wish I could hear the soundtrack to my life. That way I'd know when to duck.
The guy is saying there are 50 layer dependencies, and tons of circular dependencies. It's software engineering 101, their model is wrong...they're not properly abstracting out each layer. I'm not a big fan of Linux, but every module can be decoupled in it, and modules work together even though they're written by completely different projects due to standards...that's how you design a proper system.
People are always concerned about writing out gobs and gobs of code that isn't properly thought out. That's the problem with a lot of software development these days (namely OSS). I've been digging through a rather large and prominent OSS project and found that its code looks like it's been hacked together.
People need to start focusing on code density. By code density, I mean how much thought goes into each line you write. High code density will almost always give you a good result, take Google for example, I've found that almost everything they have has been well thought-out, and not hacked together in a rush.
If MS has told the developers to slow down and think through everything, I think everyone (who will use Visa) will benefit in the end. I'd rather have a late OS that works than one that is early and feels rushed. Now before I get flamed and labelled as a Windows fanboy, I should mention that I use OSX as my native desktop OS and Linux (Gentoo) for my personal servers.
From Merriam-Webster Online Dictionary
Concerted:
1 : to settle or adjust by conferring and reaching an agreement
2 : to make a plan for intransitive senses : to act in harmony or conjunction
If we take the second meaning then, yes, free and open source developers are in fact acting in harmony or conjunction. It's the software license and underlying philosophy which defines them as acting in concert.
Just because a flock of birds doesn't have a leader giving orders doesn't mean they aren't acting in concert.
Read up on self organisation and emergent systems:
http://en.wikipedia.org/wiki/Self-organization
Deleted
In the words of the late great Leonard Nimoy, fascinating.
Uhm... as far as I know, whilst Leonard Nimoy is great, he is by no means late. He's still ticking. He would probably find your conclusions about his state of being, illogical .
Software really is tough. Large software is much tougher. As the "largest concerted project" ever, Windows Vista is pushing the limits of human capabilitity for coordination and communication. Each new module, and its attendant interfaces, adds new communication.
As communication increases, total overhead increases. In some cases, it increases in a combinatorial way. If we estimate the "efficiency" of a component as the value-it-brings (in terms of work saved elsewhere in the code) divided by the ( development-time + communication-overhead ), you always want this efficiency to be well over 1.
Is it less than 1 already? If so, can you really ever complete a project this way?
... who think this writer should lay of the Ctrl+B for a bit? The emphasis in my inner voice is driving me bonkers.
5000 lines / year boils down to about 25 lines / 8 hours, close to 3 lines per hour. What the heck are they doing there. Not to mention that in a big company like that, you have project and code management:
#Source control code
#
#Windows Vista (forever) v4.4.4
oooh, an hour work
#
#This code will open a port so we can control users
#
main () {
void port(5000)
#I ran into some problem here
# Fixme: crashes randomly
function (open) {
}
}
OK, time for lunch...
Custom electronics and digital signage for your business: www.evcircuits.com
You're looking at it from slightly the wrong direction.
From what I remember, lines of code per unit of time are language invariant. That is, an assembly language programmer will write the same number of debugged lines of code per day as a C programmer and as a Lisp programmer.
Thus, the drive to higher level languages is that you can do more with each line of code.
The downside is something you didn't directly mention - the need to master large libraries of code. Most of the examples in the Daily WTF are caused by people who didn't realize there was a library routine to do what they wanted, or didn't understand the features of the language they were using - not because they were trying to pump up the amount of code they produced.
Clear, Dark Skies
Yes, lines of code is a crap metric, but let's face it--the "manufacturing frozen hamburgers in a box"-school MBAs don't understand software development, and never will. I work for a subsidiary of Really Big Company (no, that's not implying their company name is RBC, or has those letters as the first part of any of their name bits), and Really Big Company mostly supplies a particular kind of hardware to the world of commerce. Our new company president has a degree in engineering, and historically he's been a hardware sort of guy.
(He's not a bad person. Honestly. He's under the same gun as the rest of us, and working hard to make sure we meet our targets. I'm not doing character assassination here--at least not directed toward specific individuals.)
The folks at Really Big Company give us revenue targets every year. If we miss those targets, the next year the targets are higher, no matter the state of the economy, the solvency of customers in our particular market niche, or our saturation level in that market niche. To me it makes no sense, but I'm not an MBA. (Clearly the management team at Really Big Company doesn't consist of too many dog owners. It's patently obvious that if a dachshund can't jump through a hoop two feet off the ground, it won't be able to jump through a hoop three feet off the ground. Perhaps they're avoiding that concept to skirt patent infringement issues.)
(Personal aside: my older cousin, a mechanical engineer by training, got an MBA last year. I consider him a traitor to the cause, and am no longer speaking with him. He doesn't know it, and I can't tell him, because I'm not speaking with him.)
The problem with hardware people, and it doesn't matter whether the hardware is computers, lawn mowers, or frozen hamburgers in a box, is that they deal in tangibles. At the end of the quarter, either one has 1,000 model 59-C units in the warehouse for delivery, or one doesn't. At any time during the quarter, one can count the number of computer model 59-C units and see whether or not the schedule will be met. One can determine whether or not vendors are supplying the parts required to build 1,000 model 59-C units at a rate commensurate with meeting the EOQ deadline.
The problem is, software is entirely intangible. We don't have vendor issues--if we have a compiler, an editor, and a computer on which to work, we're good. As far as the MBAs know, we're spinning moonbeams and weaving webs of purest electricity. While the reality is not quite that prosaic, it's not far from the truth. Everything I have ever done in my programming career (even that game I marketed 15 years ago, the source code for which is still on my latest computer at home) exists purely as an abstraction, nothing more than specifically-configured magnetic signatures.
What we know at the outset of the software project is that we want a Program That Works. What we don't know is how long that's going to take, and it's hard to estimate how long writing a new file system, security layer, or UI component might be, even if we've done it before in another context. The difference between building model 59-C units and writing software is that halfway through the manufacturing cycle no one comes to tell you that the model 59-C unit has been partially redesigned, and that it now uses a stainless steel internal frame instead of cast aluminum. (In the world of tangibles manufacture, the stainless steel version would have a new model number. This doesn't happen with software. The requirements change, and we keep calling it the same old thing.) Specific case, referencing Vista: suddenly WinFS is not part of the shipping configuration, so all the code in other parts of Vista that assumed WinFS would be present have to be rewritten, and then retested both at the unit and integration level. This stuff takes time. It can't be done on the original schedule.
The
what I've seen on other very large projects. So much time is consumed with unit testing, making sure you don't introduce side effects, and studying existing code that the creation of new code slows to a crawl.
I worked on a project that had ~ 8 million lines of code. Code quality dropped so far we had to institute a weekly review - no one was allowed to commit a change until it had been reviewed by the entire team. It always pissed us all off to have to do it - but it turned out to be hugely effective at improving code quality, training new engineers in all the little details that never get written down, cross-training experienced engineers in portions of the code they hadn't worked on and, as a bonus, teaching us all how to write defensively and think about all the likely side effects of our changes.
Clear, Dark Skies
In the documentary miniseries "Triumph of the Nerds", there's an interview with Steve Ballmer where he describes the various factors that led to the fallout between Microsoft and IBM. One of the big things that he harps on is how the IBM programmers were too focused on KLOCs, while the M$ guys were striving for streamlined, efficient code.
Now we've got one of the head guys on the Vista project going on about KLOCs. Is anyone surprised? Me neither.
Boundless Expansion, Self-Transformation, Dynamic Optimism, Intelligent Technology, Spontaneous Order- BEST DO IT SO!
It amazes me how transparent Microsoft lets itself be. The fact that someone can even post a blog like this about the company using internal company resources. As much as we rant about Microsoft being evil, you'd never see anything like this from Google, the only blogger about the internal day to day Google I know of was fired (Mark Jen).
...from a Microsoft shill. "It's been delayed so long because it is such a great operating system! If it wasn't so darn good it would have been out already."
Ugh.
Coding with assembly is like playing with Legos. Coding an application in assembly is like building a car with Legos.
Hmm. I can't help but wonder if the real issue isn't the gratuitous use of bold type. Turning bold on and off in their editor of choice must cut down on their productivity by several lines a year.
The desire to be all things to all people. Desktop, handhelp, servers, games stations etc. It just muddles things up. It is a architecture driven by marketing. And I wish I could find the video, but some months back I saw a video interview with the Vista team leads and several red flags went up including:
1) A huge code base which included code no one understood.
2) OS design by marketing. They would have to accommodate design changes from the IE team or the Office team.
3) A large team size.
4) Large backward compatibility issues.
It had all the markers of a disorganized project that was drifitng.
It also does not help that it has to operate on a witches brew of cheap commodity hardware. The incompatibility work arounds have got to be a head ache.
If you look at the propreitary Unix model, Solaris, AIX, OSX etc., you have a hardware manufacturer with an OS which, at least theoretically, be designed and tuned to play nice with the hardware. This is why you pay the big bucks, theoretically, reliability and performance.
Microsoft, to a certain degree, is not the master of its own destiny as long as it has to depend on outside hardware makers.
And, in fact, I think Linux and some *BSDs have the same problem. Too many hardware configs sometimes leading to interoperabilty issues (though with open source you can do things like recompile the kernal or your own drivers). Which is why I switched to OS X, I got tired of hunting down drivers and libraries; and doing recomplies.
putting the 'B' in LGBTQ+
"Just for comparison purposes, does anybody have any (reasonable) numbers for LOC in both Linux and X Windows?"
For comparison, for fair comparison? Definitely not the latter... also include the desktop, browser, news/mail client, ms-paint (okay that one's a joke), all the computer management software, a truck load of runtime/support libraries that additional software will use. Windows is a distribution, not just a kernel and a display server.
The revolution will not be televised... but it will have a page on Wikipedia
The article describes the basic things that are wrong with virtually every late project:
He is describing a sick management culture, one peopled by individuals who are not part of a reality-based community and not aware of their own deficits. Projects run by people like this will always be late and frequently fail completely, because reality doesn't care about management egos.
This is pretty typical of modern management culture. It just shows up more clearly in this case because of the length and size of the project.
Blasphemy is a human right. Blasphemophobia kills.
Slashdot gets mentioned, too...
Looks like Slashdot speaks for itself:
"Server too busy"
I might know what I'm talkin' about, but then again, this is Slashdot...
This msdn article's formatting is really annoying. But really it is a piece of a bigger problem that faces the younger generation. I say they should scrap it. Otherwise, people will only read the bold text!
- RG>
Hey pal, this isn't a pleasantforest, so don't waste my time with pleasantries!
"We achieve great results from ordinary people with a brilliant process. Our competitors achieve mediocre results from brilliant people with a mediocre process. They try to overcome this by hiring even more brilliant people. We are going to win."
Forgive me for commenting on the presentation rather than the content. I really tried to read the article, but the randomly emphasized phrases made it really hard to concentrate on what was actually being said. I know that it's common to use bold font to emphasize key phrases but when you emphasize half of every other sentence it loses it's effect.
On the other hand, I bet that this guy is a Wizard at PowerPoint.
If I don't put anything here, will anyone recognize me anymore?
From [name of online dictionary service]
[word in question]
1 : [widely-used definition everyone is familiar with]
2 : [something else]
If we take the second meaning, then yes, [original argument] IS in fact [statement of truthiness]. It's the [supporting justification] and [further reinforcement] which defines them as [paraphrase of second definition].
[mildly humorous non-sequitur analogy]
[suggestion to RTFM]
[obligatory Wikipedia link]
Did anyone else find this to be quite annoying while reading the article? I mean, geez is it a comic book or a freaking blog entry?
Note: the author has edited his entry and removed most of it. the mirror:
0 091564cac59/index.html
http://mirrordot.org/stories/fb474e7cf3aa2bdcb159
The World As Best As I Remember It
Broken Windows Theory
Vista. The term stirs the imagination to conceive of beautiful possibilities just around the corner. And "just around the corner" is what Windows Vista has been, and has remained, for the past two years. In this time, Vista has suffered a series of high-profile delays, including most recently the announcement that it would be delayed until 2007. The largest software project in mankind's history now threatens to also be the longest.
Admittedly, this essay would be easier written for Slashdot, where taut lines divide the world crisply into black and white. "Vista is a bloated piece of crap," my furry little penguine would opine, "written by the bumbling serfs of an evil capitalistic megalomaniac." But that'd be dead wrong. The truth is far more nuanced than that. Deeper than that. More subtle than that.
I managed developer teams in Windows for five years, and have only begun to reflect on the experience now that I have recently switched teams. Through a series of conversations with other leaders that have similarly left The Collective, several root causes have emerged as lasting characterizations of what's really wrong in The Empire.
Useless Trivia Sidebar: Broken Windows Theory
The original broken windows theory, first coined by Wilson and Kelling, describes the purported phenomenon whereby an abandoned warehouse with no broken windows is mostly left alone, but as soon as one window is broken, it acts as an open invitation to passers-by that it's open-season for rock-throwing.
This was generally accepted for many years as being true, but is recently coming under fire from different angles. We won't delve into those here, since we mostly commandeered the phrase because it sounded good, not because it actually has anything at all to do with our subject matter.
The Usual Suspects
Ask any developer in Windows why Vista is plagued by delays, and they'll say that the code is way too complicated, and that the pace of coding has been tremendously slowed down by overbearing process. These claims have already been covered in other popular literature. A quick recap for those of you just joining the broadcast:
* Windows code is too complicated. It's not the components themselves, it's their interdependencies. An architectural diagram of Windows would suggest there are more than 50 dependency layers (never mind that there also exist circular dependencies). After working in Windows for five years, you understand only, say, two of them. Add to this the fact that building Windows on a dual-proc dev box takes nearly 24 hours, and you'll be slow enough to drive Miss Daisy.
* Windows process has gone thermonuclear. Imagine each little email you send asking someone else to fill out a spreadsheet, comment on a report, sign off on a decision - is a little neutron shooting about in space. Your innocent-seeming little neutron now causes your heretofore mostly-harmless neighbors to release neutrons of their own. Now imagine there are 9000 of you, all jammed into a tight little space called Redmond. It's Windows Gone Thermonuclear, a phenomenon by which process engenders further process, eventually becoming a self-sustaining buzz of fervent destructive activity.
Let's see if, quantitatively, there's any truth to the perception that the code velocity (net lines shipped per developer-year) of Windows has slowed, or is slow relative to the industry. Vista is said to have over 50 million lines of code, whereas XP was said to have around 40 million. There are about two thousand software developers in Windows today. Assuming there are 5 years between when XP shipped and when Vista ships, those quick on the draw with calculators will discover that, on average, the typical Windows developer has produced one thousand new lines of shipped code per year during Vista. Only a thousand lines a year. (Yes, developers don't just write new code, they
Ok, first part was right- DOS, then Win1-3 on top. Win1-3 used dos's device drivers to operate the comp's hardware. I call that building the OS on top of DOS. DOS was single-threaded. Win1-3 used cooperative multitasking, which means that the OS itself was really just an elaborate extensible single-threaded program. You were running multiple "programs" (more like relocatable code blocks, really), and control would switch from one to the next when they called "GetMessage". If your program went into an infinite loop without calling this function, it was time for CTRL-ALT-DEL.
;-) They could access it just fine.
Win95 brought 2 main things with it- the Win32 API (for windowing, process/thread stuff, etc, all designed for 32-bit), and native device drivers. Win95 had some DOS compatibility in it, and needed to be able to use DOS drivers for backward compatibility. However, many DOS drivers no longer worked (like, network stuff- I seem to remember that the Novell drivers stopped working with Win95 and we had to get new ones) so you can't say that Win95 was built on top of DOS. It just had a lot of backward compatibility. Most notably, Win95 had real multithreading. It could actually divide processor time between jobs, and divide it between threads within a process without any programmer gymnastics.
The difference between Win95 and WinNT4 was that 95 didn't have separate memory spaces. Each program was just using space in the giant pool of memory, and could overwrite other programs' data at will. yada yada performance video games etc. WinNT4 was actually stable, and provided each prog with a separate memory space, and required complicated (for someone who's never dealt with it before) memory mapping in order to share data between apps. In Win95/98/ME, all you had to do to share data was pass a pointer using a window message to the other prog's main window
Win98 was Win95 with more device drivers and more APIs and more GUI features.
WinME was Win98 with more device drivers and more APIs and more GUI features.
None of this line had protected memory regions. This is why WinME sucked so badly- it had a few bugs and they could take down the system since everything was so tightly integrated.
Win2K was WinNT with most of Win98's functionality. WinNT had been gaining functionality over time, with SP1/SP2/SP3/SP4, but when they finally got it so that it could run most Win98 progs, (and a bunch of API calls that were only on Win9X for some reason) they released it as Win2K. Win2K has a DOS emulator in it, and is itself completely incompatible with DOS. It is completely invalid to say that 2K is in any way based on DOS. I still use Win2K. Win2K is solid stable etc, and I've had uptimes as high as 83 days, while using it under very high load, such as running JBuilder 9 and WoW at the same time, along with Trillian, Winamp, Cygwin's X server, and a whole host of other nifty software. (the thing that ended my uptime was, of course, Windows Media Player, haha. I opened it by accident instead of VLC. I have since deleted its exe) Most of my uptimes are ended by power outages.
WinXP was just Win2K with some improved legacy emulation ("pretend to be Win95 for this program") some (improved?) networking like the firewall, and some additional GUI stuff, like styled window borders. Oh and remote desktop features. (which have been possible all along, since Win95 or so, but never implemented. Those curious should investigate the Windows Metafile ".WMF")
Vista seems that its main attraction will be the GUI, again. But we'll see.
Mark of the Coder fades from you. You perform Opening on World of Warcraft. Warcraft crits GPA for 4. GPA dies.