Why Vista Had To Be Rebuilt From Scratch
iliketrash writes "The Wall Street Journal has a long front-page article describing how Jim Allchin approached Bill Gates in July, 2004, with the news that then-Longhorn, now-Vista, was 'so complex that its writers would never be able to make it run properly.' Also, the article says, 'Throughout its history, Microsoft had let thousands of programmers each produce their own piece of computer code, then stitched it together into one sprawling program. Now, Mr. Allchin argued, the jig was up. Microsoft needed to start over.' And start over they did. The article is astonishing for its frank comments from the principles, including Allchin and Gates, as well as for its description of Microsoft's cowboy spaghetti code culture."
Because much as /. knocks them this is the sort of thing they can manage, astonishing turn arounds.
Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
What truth?
There is no dupe
Man, that's a shame. I'd love to have seen film. Shame on Allchin if he didn't demand an archive copy that be retained, at least, even if it's only released in 20 years' time.
And Linux is what exactly?
A highly structured and organized operating system developed under the instruction of a central authority, no doubt?
Don't be such a hypocrite.
It's interesting to juxtapose PR spin from Microsoft. At any given point in time in Microsoft's history, their stance and PR is that they are "state of the art", the most advanced, etc. Yet also at any given point in time they're badmouthing their own product, their own methodologies, from their recent past. Of course their chest thumping for their current "state" prevails, but I'm guessing down the road we're going to hear how messed up they are today, but not until they've made billions off of today's products.
Not only does it explain a lot, it's been glaringly obvious for more than a decade. Everything Microsoft has done since before the days of Windows 3 has smacked of design-by-committee and a painful lack of consistency. Everything in Windows has always had the smell of being designed and implemented by dozens of groups that had little or no communication with each other. I'm surprised they managed to release code at all, however buggy and insecure, with the development model they were using.
It will be interesting to see if Vista demonstrates an improved level of quality due to this new process.
You are in a maze of twisty little passages, all alike.
You know, when I read the article, I was thinking: This sounds almost exactly like how Linux is developed, except that all the authors aren't employed by the same company. Who would have thought that the Open Source development model would be the same as that at Microsoft?
GreyPoopon
--
Why is it I can write insightful comments but can't come up with a clever signature?
Microsoft is not a NEAR monopoly. It is a convicted monopoly. And since that irrefutable and well published fact escaped notice of the Wall Street Journal, I can't help but smell a little bias.
If someone says he and his monkey have nothing to hide, they almost certainly do.
The goal isn't for MS to disappear. We don't want them to get replaced by any single organization. We just want them to lose enough monopoly power and influence so that the rest of the computer world can get around without MS stomping on whatever they don't like. It already looks like they've lost some control. Google is doing their own thing, Apple openly taunts MS now, but neither of them are going to suddenly be ubiquitous on 90%+ of the world's computers. If Apple could get their marketshare up around 10%, maybe this "web as a platform" dealie sort of replaces windows 10% of the time, and maybe FOSS gets a 20% marketshare. Things would be way different, and about a zillion times better for consumers. I don't want FOSS to replace Google, Apple, or MS. I just want them all to be competitive, and to keep each other honest.
One time I threw a brick at a duck.
Don't be such a hypocrite.
The difference being, Windows is touted as a professional OS built by professional coders, upheld to a high standard, etc, etc, etc. Simply put: People expect more when they have to pay for it. Microsoft has constantly criticized projects such as Linux, because the code isn't built by a central authority. Now we learn that Windows is made pretty much like Linux. I think criticizing Microsoft for this is definitely justifiable.
I'm sure the root cause of cowboy coding is in Microsoft's quest for being able to put check marks in feature boxes so PHBs can pick MS software as having the most "features." Back in the 80s there used to be a number of standalone outlining applications and high-quality outliners embedded in competing word processors. Then Word got an "outliner." That this "outliner" never worked and still doesn't work to this day is irrelevant. It enabled MS to put a check mark in the outliner feature box and eliminate user's arguments that they need a non-MS product because they need an outliner.
Checkbox marketing -- about the only way to market when non-users make purchase decisions -- drives software companies to bolt-on features without regard to consistency of or destructive interactions between features.
Two wrongs don't make a right, but three lefts do.
That's terrible advice. Real-world code tends to be messy because you have to put in a lot of workarounds and bug fixes. When you rewrite something, you lose years of cumulative bugfixes. Suddenly obscure configurations are crashing, and you have no clue why, because the old code bears no resemblance to the new code, and the beardly expert on that platform has retired, so nobody is there to tell you that although the specs say foo should be a float, it actually expects an int.
It's one of those practices that works well in college courses, but simply falls apart when applied to a project larger than a few thousand lines of code. Tell me, did this professor have actual real world experience, or was he in academia for his whole career? I'm betting on the latter.
instead of rewriting, you should refactor, preferably with the aid of lots of regression tests. That enables you to restructure the application slowly, without changing behaviour in unexpected ways.
Things you should never do: rewrite.
It's astonishing because nobody does it anymore, it's few and far between. It's gotten to this level and hardly anyone has noticed. Nowadays if you ask hard hitting questions they will just find someone else to be interviewed by, an interview that will have better PR results. With companies buying or owning media companies, they can just choose some of their own and build themselves and their empire up. A better question to ask is what incentive is there to do a hard hitting interview, for both the interviewer and the interviewee? Both want to perpetuate their jobs and positive PR but it requires criticism.
There's just one more lesson Microsoft needs to learn from Longhorn/Vista: Don't start promising features and showing Powerpoint presentations to the press until you understand the scale of the project.
I love Google, because they rarely promise something and don't deliver. Actually, they rarely promise something. It just shows up one day and it's elegant, clean, and fast.
So, by using some implicit logic here, we all should accept Linux because even though it has its faults, it's free?
I didn't say that, and don't even think my logic says that. My logic is, if Company X produces product Ya, whereas I can get product Yb for free, I'm going to need product Ya to be damn good for me to get that instead. Is Yb perfect? No. Should it be used in place of something that's better? hell no. But should it be used in place of something that's just as good? Why wouldn't you want to?
Microsoft has attacked Linux's development method, saying how much better theirs was. People bought into it. Now we learn that they've been lying all this time, and that their development method is just "as bad" as Linux's. When you lie to people in order to get them to buy your "state of the art" product, people are going to expect it to be good. When they learn you've lied, they're going to be pissed, and it's fair for them to criticize Microsoft for this.
That's what I said. I don't know where this "implied logic" that Mac should be selling like pancakes comes from.
90% of the comments I've read so far are either entirely or partially "omfg... microsoft suks!". However, read the entrie article, and you are faced with an interesting siutation.
Software always has to strike a balance point... between features, quality, cost and timing. All software does (sans Duke Nukem Forever). Microsoft has been very good at getting product out there with the feature sets people want (Microsoft is also very good at manipulating folks into getting folks to want what they are able to deliver). Now, they are at a cross-road. Continue their current coding model, and get the next couple versions out there (relatively) inexpensively and quickly, or bite the bullet, and try a new way that will make them competitive for serval versions.
Seems like an easy choice. But here you have thousands of developers who style is being crimped. Software engineers generally want to write code, not have constraints placed on them. Add to the fact that Google is gobbling up the best and brightest, and suddenly you wonder: If Microsoft forges forward, do they lose even more of their best engineers. They may have a better model for code depelopment, but will they have the best coders to move forward with?
Which leads to the final question: Does Microsoft really need the "best and brightest" anymore? If so, do they need as many (percentage terms) as they used to? Their products are mostly in the mature stage. Can a few intellectuals keep the ship moving forward. Despite what groupthink on Slashdot may indicate, 90% of coding is not revolutionary, or even evolutionary.
Just some things to think about and watch for over the next few years.
See my journal for slashdot ID's by year. Mine created in 2005. http://slashdot.org/journal/289875/slashdot-ids-by-year
It's not so much that rewriting is but but that there are bad times to rewrite. Really old and stable code isn't a good target. Really new code with completely new function and an architecture which has been found not to be a good match for the real world objective it's addressing would be a much better target.
1. They can see "all" of the code if needed. They can see how it works together if they need to. I'm sure code inside of Microsoft is doled out to parts on a "need to know" basis. Or not doled out much at all.
I would be surprised if people who actually are employed by MS itself don't have access to all the code. They may not have check-in rights, but they should get viewing rights, because there is no credible (legal, management, or technical) reason to prohibit them from doing so.
2. There are a bunch of users running the code all the time as its being developed and feeding back info.
Do you believe there are more testers for the linux kernel than for the windows kernel? I sincerely doubt it. Most FOSS users use only the stable release of most software (they may run development releases for a select few programs), because running development versions of anything tends to leave you with a non-usable system.
(3. They use the code themselves and have a ethic working to make the best code they can for themselves, knowing it wont be used as a tool to extort money from people.)
Yes, and the windows developers don't use windows themselves. Ofcourse not. Why ever would they do that?
I would challenge you to find anything open source developers can do process-wise that is not feasible in private enterprise. I have yet to find something.
It sounds like with Windoze, any of their developers could just check in their code with little or no oversight.
On Linux, all code gets inspected by others before it is accepted.
So, what you're saying is that linux development works better because it is top down cathedral style, where microsoft's model fails because it is a chaotic bazaar style?
Way back when, people were flipping out about the 65000 bugs in Windows 2000. I kept saying, "No, you don't understand... this means they can COUNT the bugs now. They have a process that's good enough to detect those bugs, so they'll be able to fix them.' Being able to claim with some precision that you have 65000 bugs is a huge, huge step forward from not knowing how many you have at all. And, as it turns out, Windows 2000 was possibly the best OS Microsoft ever shipped. This was not coincidence.
I'm much more hopeful that Vista will be a real product after reading this article. It sounded like fluff/vaporware, but now it's starting to sound like it may have actual benefits for real people. (I likely still won't use it, because of the DRM/Palladium evilness inside, and I'll suggest to other people that they not do so either. But it may actually offer some real technical benefits along with the evil.)
I doubt it will ever be secure. As Microsoft has spent billions demonstrating, you cannot retrofit security.
The open source people might be able to learn from this process change at Microsoft. The 2.6 kernel has been very, very low quality, at least compared to earlier Linux releases. Even I myself have seen at least one of the problems.... bugs in the kernel directly cost me a couple hundred dollars, because I replaced a hard drive when it had nothing wrong with it at all. I was bitten by ACPI bugs, which mysteriously caused hard drive failures. I figured out the problem after the new drive started failing too, but I was about $200 poorer for it. As far as I remember, I haven't replaced non-broken hardware due to OS bugs since Win95... not exactly the best example to follow.
I also worry about the desktop environments... they're getting so large and complex, they're starting to look like Windows. Tons of features with lots of interdependencies. I'm sure the code is a lot better than a lot of the stuff in Windows, but clean, tight code will protect against only so much bloat and overcomplex design.
I'm starting to think that part of the reason the open source code was so very much better than Windows' was because it was a fresh start, with no backward compatibility to worry about.
I wonder if, once the kernel, KDE, and GNOME guys have to lug around twenty years' worth of backward compatibility, they'll be exactly like Windows... bloated, buggy, and insecure. The last couple of years haven't looked too promising in that regard.
Everyone works AT microsoft. Everyone comes in at 9 to 5. Its a lot easier to manage "a bunch of little programs" when all the developers are on the same campus. Its a lot harder when the developers are all across the globe, with different schedules, all stitching together their communication with /no central management authority/ to make sure everyone can communicate effectively. People who are reading this without thinking will say "Whats Linus, if not a central management authority?" OK, find a piece of code you dont understand in the linux kernel, written by someone who speaks a language you dont understand. Go ask Linus to facilitate getting that guy to explain his code to you. See how far you get. Nowhere. Now try it at microsoft, asking your manager.
One would think that because of this, Linux would be a mess, but we've seen the opposite is true: For projects to continue to evolve rather than quickly die off, they require _rigid_ structure and sane, intuitive modularity to support the OSS development model. Projects that turn into spaghetti code too fast just fizzle out and never make it into my slackware distro. While at microsoft, they have this whole management system that makes it easier to support spaghetti code. OSS has a much more brutal "natural selection" process that is constantly favoring modular, readable, easy-to-learn code bases.
Plus, spaghetti code is not fun, so hobbiest programmers arent going to waste their time with it.
Thats why so much OSS software is structured so well.
Why stick up for big business?
it is unbelievable how sad this article is. These MS 'engineers' only now started using automated integration testing, possibly automated unit testing. They only now started writing to predetermined interfaces and producing modular code. Gates, who calls himself 'chief engineer' never cared to start doing any of it before his house of cards, he calls his software production process, collapsed.
I can't get over this, I thought this must have been obvious, especially in a firm that releases products as big and complex as OSs. I only worked in this field for 9.5 years and in that time I delivered a bunch of projects doing exactly that: well defined interfaces, components, automated unit testing and automated integration testing and at MS there was noone before the shit hit the fan to start doing it that way over what? 25 years?
New process they have? New process my ass.
You can't handle the truth.
I wonder, why microsoft can't do what apple did to mac OS. That is, why can't microsoft take FreeBSD code base and build added features into it to create a robust OS ? They could also include hooks in it so that MSOffice and other software suites will run only in their OS like apple is doing to Mac OS.
This could make their job a lot easier and could get them more patrons for their OS.
But microsoft has always been good at making even simple things seem very complex.
Linux Help
for all things on Linux
In the midst of FOSS activism (which I have no problem with being a FOSS advocate, and often consider myself one) people tend to take their eyes off the ball. The important goal is not to have all software be GPL'ed, but to have real open standards. In fact, I don't think we should even mind Microsoft maintaining a large market share so long as they start using open standards. As customers and potential customers, we should all demand (in whatever way we're capable) that Microsoft provide freely available documentation to their file formats, protocols, and APIs. Insofar as they fail to do so, we should consider that a problem with their product, and look for alternatives.
The tremendous value and power of FOSS is not in having everyone use it all the time, but in anyone and everyone having the ability to use it whenever is appropriate for them. If a Linux server can be used as an easy drop-in replacement for a Windows server and OpenOffice can open/save MS Office documents, then Microsoft will not be capable of abusing their own customers. Microsoft will be forced to compete with FOSS by offering better quality and features rather than vendor lock in, and frankly, if they would do that, I would have no problem with Microsoft whatsoever.
Also, as much of a fan of FOSS as I am, I am also a fan of Apple and Google because I do believe they're competing by offering quality and features that people want.
Your entire comment appears to consist of "you're stupid. Microsoft maintains backward compatibility because of money. Linux maintains backward compatibility through 'standard engineering practices'[whatever the hell those are], and because everything in Linux is ancient. You're dumb, you're stupid, you haven't been using computers very long, go away."
What with all the insults, you're awfully light on actual content in your reply. Ignoring those, I don't even see a clear argument. What, exactly, are you asserting? I think I see 'everything in Linux is old', but that's just so ludicrous that I'll assume I'm misunderstanding. You may want to elaborate a bit.
By the way, I'm not likely to be an astroturfer. I expect you can probably figure out why.
I realize that base Unix is very old. However, it's very old and very, very simple in terms of the POSIX APIs. Now, I'm a sysadmin, rather than a programmer, but it has always been my understanding that POSIX was a very limited subset of the Unix libraries; if you wrote to that subset, you were guaranteed portability. From what I remember, the last time I looked (years and years ago), there just isn't a whole lot there. It's a solid set of base functions, but it's quite primitive. There's nothing like, say, DCOM, or DirectX or DirectSound. It's a solid base, but as a guess, (and I invite correction from more knowledgeable people), it covers maybe 10% of the API ground handled by more modern environments. The QT/KDE and GNOME APIs are not very old. And the Linux-specific extensions to the POSIX standard can't be older than about 12 years.
So yes, there's an ancient standard at the base, but most modern code is going to be hitting libraries that are quite young, relatively speaking.
All the complexity in KDE and GNOME has many of the same benefits that Windows does, like easy integration of web browsers into other applications. I wonder, though, if they're not getting themselves into the same pickle that Microsoft has. When everything is integrated and interdependent, one tiny code change can blow up an awful lot of other stuff.
Mind you, I LIKE these desktops, and I appreciate the features very much. But the programmers of old, at the dawn of the Unix era, were some of the most phenomenally intelligent people ever. Most software work today isn't being done by the same kind of luminary. I'm fundamentally trying to make the observations that A) Microsoft has a lot of smart people too, and blew it, and B) the smart people in the open source world may be making the same mistakes, by inventing desktop systems with APIs to do everything from balancing your checkbook to flossing your teeth.
Now, it'll be EASIER to support them in open source, because it's much easier to modify programs to match API changes. That alone will probably make a significant difference. But it doesn't change the fact that APIs don't easily go away, and lugging them around gets expensive, even in open source. (Binary compatibility is far worse.)
I talked about Linux in that sense because I'm irritated with it, and because I was thinking about their great efforts toward binary compability in userspace. That's a great feature, and I appreciate it, but I wonder how much it costs, relatively speaking. I was reaching a bit, trying to be somewhat charitable about the reasons behind the poor state of the 2.6 kernel.
If, as you appear to say, everything in Linux is ancient, and "standard engineering practices" will somehow magically make everything run correctly, then don't you think your comments are particularly damning of its code quality?
Well, I'm hopeful they can nail things down and get them stable, but their focus doesn't seem to be on quality first. I think it was Rik van Riel who said that it was perfectly okay for only 1 stable release in 3 to actually be stable. I kid you not. I'd link it for you, as it's in my old comments. Unfortunately, I can't get to my old submissions, as I don't pay Slashdot anymore. So you'll have to find the quote yourself. lwn.net definitely has it somewhere in their archives.
:)
It's worth pointing out that the whole move of Linux into the server market was accidental. It was always being written as a desktop Unix. It just happened to be so amazingly robust that it made a dynamite server, and took over a good chunk of the internet. That'd be a good book title, "The Accidental Server". Unfortunately, the development model never changed to match the actual use of the system.
The reason I started using Linux to begin with was because it didn't ever break... it didn't have as many features as Windows, but it just never, ever, EVER fell over. The 2.2 kernel was probably the most bulletproof piece of software I've ever run on a PC. 2.4 never got to the sheer solidity of 2.2... on good hardware it's quite robust, but I saw a number of machines where stressing it would lock it up after a few days. (from the kernel messages, it looked like it might be bugs in the (different) network drivers.) 2.6, relatively speaking, has just been a disaster. They won't leave it alone long enough to let it stabilize... they insist on jamming new code into every release, and dropping old releases very quickly. (the new 2.6.X setup.) So I can't get my bugfixes without new features if I want to use a vanilla kernel.
People, of course, instantly bash me and say 'you're stupid, you should be using a distribution kernel'. I'm doing that now, even though I liked rolling my own, but I shouldn't have to. The dev team's attitude seems to be 'ship it and let the distros debug it'... which, as far as I'm concerned, is waving one's hand in the air, hoping that someone else will fix it. Linus' kernel should be rock-solid. It's the center around which the Linux universe turns. Their new attitude means that both Mandrake and Red Hat will have to spend time fixing the same problems, possibly in incompatible ways. And it means that programs may run on Red Hat, but not on Mandrake or vanilla Linux, or some other variation on that. There needs to be a gold standard, a One True Linux. We don't have that anymore, and I think the inevitable result will be to balkanize the community. Without that central kernel, switching from one distro to another, particularly with commercial software like Oracle, becomes much chancier. You'll end up with vendor lock-in... Oracle will run only on Red Hat's kernel, so you're stuck with Red Hat's distro. That's not supposed to happen with Open Source, but it looks nearly inevitable if we can't get a stable kernel at the center.
Wow, that was quite a segue. Sorry about that.