Heads Roll As Microsoft Misses Vista Target
A reader writes: "Business version is on time, but the company won't make the key holiday consumer sales season.
After another delay in the release of its Windows Vista operating system, Microsoft last week put a new executive in charge of future Windows projects and replaced several other managers. The changes are designed to better align Microsoft's desktop and Internet software teams and get products to market faster." There's also a NY Times piece that discusses why Windows has been so slow (to come out). Worth the reading.
Either go to CNet's Hosting of the article or use this login.
Username: slashdot25
Password: Slashdot
The article in its entirety if you want to read it here:
Windows Is So Slow, but Why?
By STEVE LOHR and JOHN MARKOFF
Published: March 27, 2006
Back in 1998, the federal government declared that its landmark antitrust suit against the Microsoft Corporation was not merely a matter of law enforcement, but a defense of innovation. The concern was that the company was wielding its market power and its strategy of bundling more and more features into its dominant Windows desktop operating system to thwart competition and stifle innovation.
Windows 95 had 15 million lines of code. That grew to 18 million lines by the time Windows 98 launched, above. Windows XP, released in 2001, has 35 million lines of code.
Eight years later, long after Microsoft lost and then settled the antitrust case, it turns out that Windows is indeed stifling innovation -- at Microsoft.
The company's marathon effort to come up with the a new version of its desktop operating system, called Windows Vista, has repeatedly stalled. Last week, in the latest setback, Microsoft conceded that Vista would not be ready for consumers until January, missing the holiday sales season, to the chagrin of personal computer makers and electronics retailers -- and those computer users eager to move up from Windows XP, a five-year-old product.
In those five years, Apple Computer has turned out four new versions of its Macintosh operating system, beating Microsoft to market with features that will be in Vista, like desktop search, advanced 3-D graphics and "widgets," an array of small, single-purpose programs like news tickers, traffic reports and weather maps.
So what's wrong with Microsoft? There is, after all, no shortage of smart software engineers working at the corporate campus in Redmond, Wash. The problem, it seems, is largely that Microsoft's past success and its bundling strategy have become a weakness. Windows runs on 330 million personal computers worldwide. Three hundred PC manufacturers around the world install Windows on their machines; thousands of devices like printers, scanners and music players plug into Windows computers; and tens of thousands of third-party software applications run on Windows. And a crucial reason Microsoft holds more than 90 percent of the PC operating system market is that the company strains to make sure software and hardware that ran on previous versions of Windows will also work on the new one -- compatibility, in computing terms.
As a result, each new version of Windows carries the baggage of its past. As Windows has grown, the technical challenge has become increasingly daunting. Several thousand engineers have labored to build and test Windows Vista, a sprawling, complex software construction project with 50 million lines of code, or more than 40 percent larger than Windows XP.
"Windows is now so big and onerous because of the size of its code base, the size of its ecosystem and its insistence on compatibility with the legacy hardware and software, that it just slows everything down," observed David B. Yoffie, a professor at the Harvard Business School. "That's why a company like Apple has such an easier time of innovation."
Microsoft certainly understands the problem, the need to change and the potential long-term threat to its business from rivals like Apple, the free Linux operating system, and from companies like Google that distribute software as a service over the Internet. In an internal memo last October, Ray Ozzie, chief technical officer, who joined Microsoft last year, wrote, "Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges and it causes end-user and administrator frustration."
Last Mon
My work here is dung.
with millions of customers still running on that old version of Paint this is no laughing matter.
I'd love to see the major corps get behind a push to reimplement the Windows APIs (IE, Wine or similar) so all OSs could run Win32 executables. Then the big MS lockin would be over and we users could have some choices.
"I've got more toys than Teruhisa Kitahara."
Let me get this straight
1) MS is rewriting key components from the ground up ( tcp/ip for one ).
2) They are pushing for a faster and faster release cycle
3) They are replacing managers working on vista.
4) DRM will be built into vista
Yeah huh. If it's all the same to you guys, I think I'll stick with xp on my home system ( just recently upgraded, btw ). Vista sounds like it's going to be a painful upgrade for the world at large, and I'd rather not experience that if at all possible.
Mod me down with all of your hatred and your journey towards the dark side will be complete!
Why's it taking so long? Because, unlike previous "new versions" of Windows, this is not just a cosmetic overhaul but a complete redesign of the OS from the kernel up! Also, as somebody else mentioned, updating the mspaint.exe codebase is proving quite problematic :)
The difference between stupidity and genius is that genius has its limits.
here and here. It's comical really. The first story goes on and on and on how lean Microsoft has become with their new development process. Obviously little has changed. It's also comical that their solution to these sorts of things always seems to be a management shakedown. A shakedown doesn't really help anything if there is a deeper problem. In reality, it will probably just result in further delays.
If an officer ever threatens to taze you, say you have a pacemaker.
> Vista was also held up because the project was restarted in the summer of 2004. The new work, Microsoft decided, would take a new approach. Vista was built more in small modules that then fit together like Lego blocks, making development and testing easier to manage.
Wow, Microsoft discovers modular design and good interfaces 30 years after the rest of the world went that way.
I am so sad now that I cant get her Vista for Christmas, I am sure may other of you are and in same boat. Because Vista was the Must have gift this year.
The truth is that MS is trying to get this on right, and waiting to ship Vista untill its done, at the same time they are being honest with us about ship date and features. Funny we bash them for shiping buggy programs and then bash them for holding back a buggy program.
From Dave regarding NT:
Or, get someone with a trackercord of delivering a modern OS. Like Maybe Linus.
Or, hire Christopher Walken as a Project manager
"We are all geniuses when we dream"
- E.M. Cioran
If you read some of the postings on the minimsft blog, you see that Sinofsky has been brought in to streamline things, but the question abut what to do with all the legacy management overhead still remains.
They have so many people which they promoted up over the years that they'll need to figure out how to flatten the organization whilst thinking about what to do with all these people in middle management. That'll be the interesting question in the coming years, I think.
Netcraft confirms it! Windows OS is dying! ;P
Seriously, I spent some time last night reading through a Microsoft employee's blog discussing this very issue. While it might sound like big trouble in little China, it's likely to be well glossed over by their PR campaigns. Heads will roll at MS, but not the right ones. The big guys there will say that this was the work of either an "astroturfer" who doesn't even work for MS, or a disgruntled employee who really didn't have a grasp on the business end of things. In other words Ballme and company will be saying, "nothing to see here, move along".
As a side note, I found one of the comments on that blog particularly insulting. Someone had the audacity to say that Microsoft is becoming more and more like DEC. This couldn't be furthest from the truth. DEC was run by the engineers, meaning that the entire company was nothing but engineers. No suits. No business men. Just pure brain. That's why DEC's systems pretty much defined the phrase "just works". MS isn't even close. They tried and they got Cutler to design NT. But then they threw out everything that he had laid out in NT when they hit 2k for business reasons. If you want a great OS, you forget about business reasons. If you want to run a great business, then you need to accept that there will always be compromises and you'll always have a subpar product when compared to the output of pure engineering. Them's the breaks folks. That's why the FOSS world outshines Microsoft at every turn in terms of design and doesn't really make much of a dent business-wise. And it's why MS is so successful as a business but can't create an OS that you'd trust your life with.
-"...bad old ideas look confusingly fresh when they are packaged as technology" - Jaron Lanier (Digital Maoism on Edge.o
In an internal memo last October, Ray Ozzie, chief technical officer, who joined Microsoft last year, wrote, "Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges and it causes end-user and administrator frustration."
Well Ray should know, he does work there.
I think in Microsoft's desire to be the everything of operating systems, they have bitten off more than they can chew. They need to re-think their strategy and aim to a secure, less-complicated and smaller operating system. Then later, they can release a huge Vista at a time of their choosing.
He who knows best knows how little he knows. - Thomas Jefferson
Actually, if you remember, there is no 60% code rewrite. That was some BS Smarthouse made up, and everybody else sourced it.
Plain and simple. I remember when Windows 2000 came out, and that was hyped to the hills as the most secure and high quality Windows that was really going to replace Unix everywhere. Funnily enough, the hype sounded like Vista now. There was an article in 1999 that described their development process, how they were redesigning Windows for security, (just like with Vista!) and God, is it a mess. It is just a massive production line where code is committed by programmers with little regard as to whether it will conflict with changes other people are making. It gets shipped off to the testers, they test some build, OK it and then another team commits code that breaks it in the next testing cycle and build. They then rinse and repeat this process until it seems to work. Small wonder they need so many programmers and people involved as well as the huge amount of time that takes.
I hate to bring up Apple, but look at their OS. They've put an awful lot of features into their software, with less programmers and with much more of an idea of what they want to achieve - and I think that last point is the key. It just sounds as though some marketing people at Microsoft have been moving the goalposts shouting "Right, we need seven versions to extract more money!", "Oh right, now we're doing media!", "We're doing 3D eye candy!", "We're doing TV!", "We want support for new DRM hardware to please film studios!", "We want integration with some pointless app for social networking!" etc. etc. It seems to me that no one has drawn up a set of proper requirements for Vista. I get the Vista betas through MSDN, and honestly, I just cannot see how they couldn't have achieved where they got to now by evolving from Windows XP SP 2 and 2003 in a far shorter timescale and then building other products and components on top of it when it got finalised.
Two-fold, on top of that, I'm also convinced that because of all those teams putting code into Windows, and having Windows interoperate tightly with other components and products and vice-versa, Microsoft are having very serious integration and communication problems. What's that saying? Nine women can't have a baby in one month? It seems as though Microsoft's "let's just throw programmers at it" strategy is doomed now and post-Vista, and they're going to have to work out what they're going to do. The big problem is, Microsoft don't know how to develop any other way, and changing a few managers around will change nothing.
Computers that do speech? Intelligent systems? A digital home? Media systems running Windows? Flat touch-screen panels running Windows in every area of your house? On top of developing a base version of Windows, Office, development tools.....all inter-connected?! Fat chance. There's no way they'll be able to co-ordinate that kind of development complexity with the kind of absolute reliability that's demanded there. Windows still has a future, obviously, but I'm sorry to tell Microsoft that they're not going to be leading us into this new brave world they think we're going to buy into.
These last few days of delay announcements at MS after 5 _years_ of development are really making them look incompetent from a business point of view. Though I highly doubt management "shakedowns" will help speed up the development process. The problem here, as has been mentioned before, is Microsoft's unwillingness to let go of the past. Do you remember when they announced that IE was a "mature product" and didn't need to be developed any further? I mean, did they think time would just sit still for them? Would Ford stop designing the Mustang because "It's a mature car"? Microsoft's IE6 is now the laughing stock of Internet browsers, and rightfully so since it's been neglected so badly. Maybe we'll see vast amounts of improvement with IE7, but I'm not holding my breath. At least MS now understands that development can never stop unless you plan on just dropping a product permenently.
Even after Microsoft wised up to their development blunders like IE, they still have a near unmanagable beast in 50+ million lines of codebase. The #1 weakness that Microsoft has is it's refusal to drop legacy support out of it's products. It may even lead to their undoing. They have allowed feature after feature to snowball into the massive clusterfuck that Windows currently is. In order to meet the demands of the future, Windows will have to simplify. I know it sounds like that is a step backwords, but think about it. How did Apple make such a successful product in OS X? They blew up OS 9 and started from scratch with a proven codebase. That is what Windows needs to do to keep up. Only after Microsoft ditches the i386 legacy and bloat that's suffocating them, will they get some much needed breathing room. Apple had to take a big step back to get ahead to where they are today, and I'm sure it wasn't easy for them, but it's already paying massive diviends. Imagine how wonderful it would be for everybody in the long run if MS took this same approach. Windows has turned into a massive out-of-control beast that has everything including the kitchen sink in it, with about 7 different variations of home and office OSes that are enough to confuse anyone in the industry, let alone the poor consumers who have to figure out which version of Windows best suits them.
That said, there is really only one roadblock for switching to Linux full time (at least for me), and that is the fonts. I've tried everything from grabbing the MS fonts from my Windows partition, to any combination of AA and/or hinting and DPI resolution I can think of. The fonts just come up weak IMO. I know a lot of you love the fonts in Linux and just wouldn't have it any other way, but I guess I have a different opinion then most of you out there. Windows and OS X fonts look about 100 times better to me. Say what you want, but when I boot up into Windows after spending a few hours in Linux, it's like cleaning a layer of grease off of my glasses.
Microsoft did not get into this mess because of its relentless pursuit of total, perpetual compatibility. As most people know, while a lot of effort has gone into compatibility the simple fact is that the current version of Windows is no more compatible with its legacy products (windows 3.x, dos) than Linux or OS2--it uses the "Windows on Windows" virtual environment to run 16-bit legacy code, and XPs compatibility with Win9x/Me games, etc. was more of a bolt-on than something that permeates into the core of XP. The result is that Windows is remarkably compatible but not totally so (any 16-bit Windows/DOS program that relies on communications ports for example will crash in NT/2000/XP). The large compatibility layer has resulted in a bloated, crusty registry and APIs that would only be purposely designed like they are by crack addicts. However, although this makes Windows a sometimes-frustrating environment to program at lower levels it is not what makes it nearly unmaintainable even by behemoth Microsoft.
The REAL poor design decision was electing to create a tightly integrated system. This was the root cause that made other questionable choices at Microsoft (compatibility and "Featureitis") difficult or impossible to correct. When Microsoft wanted to bundle its web browser with Windows it decided to take IE (which wasn't ingtegrated with Win95 at all initially) and sprinkle its libraries in the system directory and link a whole bunch of other components to it...to the point that even the GUI shell will not operate without IE components. It threw the GUI and all these drivers into kernel space. It made one big monolithic, multi-million-LOC pile of crap and justified it by doing it in the name of a "seamless user experience" at a good level of performance.
There is no excuse for this now--we have machines powerful enough to host full-featured virtual machines that can run self-contained copies of legacy OSes, so if customers really (often foolishly) want to run software that is over a decade old to do important things then they can take that route. The sad thing is that political reasons rather than technical reasons prevent Microsoft from taking the proper course of action. Microsoft should've "pulled an Apple" right after the release of XP and immediately set about developing a totally new OS as different from the NT-based XP as NT was from DOS (and the Win9x/Me derivatives). Apple smartly got out to market faster by building its foundation on open software.
The problem is MS is probably loathe to heavily depend on open source for its flagship product, and the problem is that Apple beat them to the most viable BSD-licensed option. Since MS has been asleep at the wheel there for far too long, they have two difficult options ahead: Firstly, they could bite the bullet and plan the first major, post-Vista Windows release around a BSD-licensed UNIX core as Apple has already done. MS would be risking a lot by doing this as they become less differentiated from Apple than before--can MS out-class Apple on the UI front, or maintain enough legacy Windows compatibility to keep its customer base? Second, they could try and engineer a new kernel/core system themselves and bolt on chunks of updated Vista as componenets. This could take longer than the first option but it is a made-at-MS solution. In the meantime competitors will have even more time to catch up.
Basically, Windows as we know it is fast approaching the end of its life cycle. I personally don't think it is really sustainable for even one more major release after Vista. Although this presents a great opportunity for Linux-based and OS X systems I don't think it is the nail in MS' coffin just yet. I figure that with the kind of shake up that looks possible to occur in the next few months at MS that in around 2010 we'll all be eagerly anticipating the release a completely new Microsoft OS--with a very UNIX-like architecture (holy shades of XENIX batman!) under the hood but something very 21st centurey on top.
Most of the code looks like this:
1) Setup & Initialize
Get an interface here, claim some memory, find another interface over there, register own functionality here and there, try something else in case something has failed until you succeed or run out of options
2) Delegation and Fallback
If some particular module is not available, fall back to other implementations, reformat the data, manage lifetime and ownership, synchronize with some other activities, and then delegate the call to some other interface
3) Error Handling and Recovery
After each call, perform error checking, pass back the result to the caller, potentially reformatting it again, or raise some exceptions or create new higher level error codes from lower level error code you got
4) Cleanup
When it is time, either because some reference count went zero, some termination function was called or a garbage collector comes by, free all resources claimed so far, deregister references downstream and upstream
The whole code is full of hungarian notation type casts, macros and microsoft specific language extensions, and the flow control statements are mostly branches. You are already lucky if you may write a loop that does some actual work, even if it is just collecting stuff from multiple calls.
And then, if you look at APIs, there are much more parameters and much more options than e.g. in UNIX counterparts, and many options are not orthogonal, so you are entangled in a web of obscure semantics almost everywhere. And you do not have one API for the same stuff, you got a shitload of them: Win32, WinMM, GDI, ATL, OCX, MFC, COM, DCOM, ODBC, ActiveX, DirectX, XNA and tons of product specific APIs. It is already a nightmare to decide which API to use, but to support them all in a bug-by-bug compatible way is programmer's hell. It is like travelling with a hospital ship full of corpses that are not completely dead and need to be kept alive by a team of doctors, high doses of painkillers and cardiopulmonary and dialysis machinery, just in case someone needs them because he speaks this ancient lanuguage noone else but these living dead understands.
With .NET, Microsoft did a good job at API design, but it is of no immediate help, it is just another API that has to be supported with all the other legacy APIs, so .NET does not reduce, but increases overall complexity and does not perform as well as the other APIs. Another problem with .NET is the lack of maturity, still requiring major changes on all levels, resulting in huge compatibility nightmares between different versions of .NET.
But even if Microsoft would throw away everything but the kernel and .NET, I still would not jump on it because I do not like to be locked in on a particular platform; I want to be able to run my Software in MacOS and Linux and have a chance to port it to some hardware or OS that does not exist yet.
If I were in charge at Microsoft, I would try some of the Google philosophy: Do not be evil, and give the people something they can like:
1) A solid, simple well documumented and rock solid foundation that manages device I/O using a small set of calls with clear semantics: open, close, read, write, ioctl seem to sufficient to do a lot
2)Choose the right atomic elements: Bytes, Characters, Numbers, Strings, Pixels, Images, Audio Samples, 3D-Polygons and video streams and make them first class citizens throughout the whole operating system.
3) Implement all APIs people seem to like in a rock solid, feature complete and efficient manner: OpenGL, gtk, POSIX etc.
4) Invent some new own cool High-Level APIs and frameworks and make sure they are available on Linux and MacO
Without order, nothing can exist. Without chaos, nothing can be created.