“I worked at Microsoft for about 7 years total, from 1994 to 1998, and from 2002 to 2006.The most frustrating year of those seven was the year I spent working on Windows Vista, which was called Longhorn at the time. I spent a full year working on a feature which should’ve been designed, implemented and tested in a week.”
That’s why Microsoft isn’t likely to make another Vistalike OS after Vista itself. It has grown too much to be manageable, and the kind of problems the author describes are going to arise more and more frequently.
An interesting insider view, it really explains a lot of Windows…
An interesting insight into how Microsoft can manage to take so long to do so little with so many resources.
The description of what went on in the weekly meetings was like something from a Dilbert comic.
@Dave_K
An interesting insight into how Microsoft can manage to take so long to do so little with so many resources.
I found it like reading about IBM. And their too-many-layers of a company.
Golden rule: Sometimes too much of something is bad.
quote “We had a Mac that we looked to as a paragon of clean UI.”
Useful insight as why it takes so long to ship anything from a behemoth and all for a few hundred lines of code.
Makes me yearn for the days when 10-20 people could do the whole job and produce something with grace & charm.
quote “We had a Mac that we looked to as a paragon of clean UI.”
Further on in the blog he links an Apple developers blog in which that person explains which design concessions were made for the shutdown function there. He also explains quite rightly that Apple had problems releasing their OS’s too in the past, notably Copland.
http://arno.org/blog/2006/11/design-of-mac-os-x-shutdown-feature.ht…
Interesting read.
Makes me yearn for the days when 10-20 people could do the whole job and produce something with grace & charm.
Those days are still with us. You just have to recognize the need to keep things small and manageable, and it’s exactly what so many mega corporations fail to do. There are sweet spots in numbers of developer teams, and if you pass them management and coordination becomes a problem, because communication links grow exponentially.
Yes I was thinking of the obvious Xerox Parc Smalltalk, Altos, MacOS, Next, and BeOS, no doubt also SkyOS, Atheos and the other favourite alt OSes on OSAlert. Even Unix was small once with a relatively small team behind it with a few famous names.
Most of the best software I have used has been built by small teams too, usually far better than massive team software because they delivered what we consumers wanted (in the adjacent office) or did what the developers wantded. Vista on the other hand has complexity, backwards compatibility, user analysis, committe design written all over it.
Now if hardware design were as easy to do today as it was 20 years ago when you could just go over to Fry’s and buy chips and wirewrap a proto motherboard and then build software to make it shine, we might still see more Nexts, BeOSes. Today though we have PC hardware with relatively complex interfaces that can’t even be explained easily to an engineer (USB,Sata,FW,PCIe and so on), and ASIC budgets are almost blackholes, hence no more 10-20 man projects.
Ironically with FPGAs it actually could be possible to create interesting hardware again based on straightforward design interfaces and avoid the pitfalls of the above complex PC interfaces but that would be another universe with a few ideas used over and over through out but with little connectivety to your current toys.
Perhaps the goal should be to force down from the top the goal of making the primary OS and drivers fit on a few floppys again.
Actually the comments on the article are just as interesting.
MS, Vista major headache is dependancy hell and also the classic Brookes Mythical manyear comes to mind. If you can organize 1000s of devs to build something as complex and really keep all the parts as separate from each other as possible with a fascist in charge, maybe they would have arrived alot sooner. Perhaps the giant Nasa, Mil programs do know better, keep it on a need to know basis.
Man I hope your next job goes better! A great insight into a large project going horribly, horribly wrong.
Glad I work for a software minnow.
Glad I run linux. :o)
This example makes me remember a recent article about Bazaar related development model being irrelevant, because everything is supposedly Cathedral now, even in FOSS. It also just conforts my view that FOSS is leaving MS more and more behind since year 2000.
Because contrary to MS, in FOSS, development still goes as fast as before, and this kind of things could never happen.
Or they can, but that’s asking for a big overhaul. I’m thinking about XFree86 here, and the fact that not so long ago, all kind of people that MS was years ahead with Aero (or whatever the name, I’m talking about the UI using the graphic card) and the like, with the help of all hardware vendors. Despite that, in far less time than MS, without any vendor support (except promises), FOSS managed to make 2-3 equivalent tools which are more efficient (without even using the most advanced features of the cards yet).
This inefficiency at MS is known since a loooong time, that’s why at the time people said MS was years ahead of FOSS, I expressed the feeling that these people were really wrong. This article shows I was right. Then again, I have no merit, I just learn from history, which seems to be a rare thing nowadays.
“Because contrary to MS, in FOSS, development still goes as fast as before, and this kind of things could never happen.”
Happened to Debian 3.1, took way too long to come out, inefficiency is not just proprietary
One can argue that a primary reason for the delay of Sarge was the simple fact that the Linux stack was developing so rapidly at the time. They kept pushing back the code freeze to allow new “must-have” features. Recent history has shown that time-based release management is more appropriate for Linux distributions.
Another reason is that Sarge supports 11 architectures, each with ~20,000 binary packages. Microsoft Windows may be the most complex software project ever, but Debian is undeniably the most expansive.
On the other hand, the Linux 2.4 kernel was delayed nearly as many times as was Vista.
Yeah, but let us hold before us the fact that the kernel, while central, is but one component of a whole system, e.g. Vista.
The blog post is more about the interactions of major components affecting an apparently straightforward feature than it is about a specific component.
The blog post is more about the interactions of major components affecting an apparently straightforward feature than it is about a specific component.
And you’d think that problems with such interactions would appear more likely in a bazaar development environment. I mean, most of the people working on FOSS projects don’t even get to see each other’s faces usually! There’s no clearly appointed “boss”, anybody can take the whole project and fork it at any point and so on.
And yet the issues appear with people in a cathedral style, all working for the same company. You’d think that they would be a paramount of order and productivity.
True true. When it comes to “proprietary” software flaws, one ought to take a look at Gnome. Complaining about codewise bloat in Windows is a bit unreasonable, since OS X and Gnome/KDE isn’t better than XP. Development is faster in Gnome than for Vista, but the circular dependencies, the unnecessary complexity and the excessive system requirements are very similar.
There are very few actual circular dependencies in FOSS in general and Gnome packages in particular. There’s someone saying the same thing in one of the comments of the blog post.
And I think I should know, there was a time, not so long ago, when I used LFS and compiled a lot of packages from source, Gnome included. The list of packages you need to compile may be big, but it’s a simple hierarchy tree.
I’m a former LFS user as well, and if you want full functionality there is many (semi-)circular dependencies. To get the full functionality, you’re required to recompile several packages several times, if you do it manually like in BLFS.
It’s a problem when Package A depends on Package B depends on Package C depends on Package A. Gnome dependencies are usually much worse than this, though it could be different with newer Gnome versions. My last manually compiled Gnome was 2.10.
Just because a guy called Eric wrote a book, it doesn’t mean that his analogy makes any sense. Behind all the rhetoric, there’s little validity in that analogy.
Take for example the much praised Gentoo project, where users and developers are now more or less begging for a Benevolent Dictator to arise; there’s simply “too much” democracy going on there.
Microsoft’s problem is simply its own success. As a monopolist, it got too big. The only cure is to be small again, and as far as Microsoft is concerned, that’s never going to happen. MS has enough money and market share to keep on working like this for at least a decade. It’s like an obese person that wants to keep eating, and doesn’t want to move either. No problem there.
Take for example the much praised Gentoo project, where users and developers are now more or less begging for a Benevolent Dictator to arise; there’s simply “too much” democracy going on there.
I recall Margaret Thatcher at a lecture around 12 years ago: “Consensus is the absence of leadership.”
Gentoo (and I have loved it for the last three or so years) has some superficial resemblance to this Vista hulabaloo.
Complexity bites.
In the Gentoo case, the codebase is vast. It’s quite good to use, but the lack of design documentation steepens the learning curve.
The organizational behavior, while not driven by salaries as in the MS case, isn’t entirely dissimilar: clashes of priorities, lack of deep understanding of technical issues by all participants, occasional inflexibility–all have more to do with humanity than licenses.
yeah, because with FOSS OSes you have millions of lines of code that are without standards and are just hacked together to make things even worse and takes you even longer to fix a problem.
Yes, I am a programmer and I know how big projects can get out of hand.
Nobody really wins in any of these cases with windows or FOSS because the projects are too big and complex for humans (even if you build in a modular and object state).
Without coding reviews, security reviews, and coding standards are you really going to get far with huge and complex projects? Nope.
These are the reasons why I don’t think FOSS is the total answer either.
or maybe one should call it a bazaar of cathedrals?
there is not a single big thing that stands out as the difference between your average linux distro and vista, there are many small.
for one thing you can in theory pop a mail to linus torvalds or similar at any time (or mostly, just dump it onto the LKML).
on the other hand it appears that in microsoft one have to climb the ladder from sub-manager to manager all the way to the person overseeing both parts that need to interact, then climb back down again on the other side. then take the whole trek back again with the answer.
then there is separation between gui and function.
hell, i wonder why he was 5+ removed from the main gui team when what he is doing is a special variant on the shutdown dialog…
and why would he require special kernel code added to support that dialog?
is it because there would be a chain of events kind of “shutdown”? where when the user hit off, the system would in reality go into a software suspend mode (cpu and all turned off, but ram still powered up and maintaining its content). and if not awakened from said mode within a set time period, it would go on into hardware suspend (ram dumped to harddrive or flash, electronics fully powered down).
so first of all its a problem of long and rigid chains of command. it sounds almost military or religious (cathedral anyone?). while with say the linux kernel its a open forum where everyone from the pope to the common man can step in and air his opinions about the religion. sure he may be ignored, just like some salesman shouting about his wares in the bazaar, but maybe someone will take notice.
then there is the buildings them selfs. the vista cathedrals (for there appears to be many of them) seems to built one on top of another. so that to build a new wing on a higher up one you have to request that all the underlying ones add supports for that. and this have to go from builder, to priest, bishop all the way to the pope and then back again.
the linux bazaar on the other had have their fish area, their bread area, their spices area, all collected under one bazaar (distro).
http://moishelettvin.blogspot.com/
(in case someone else like me gets redirected to the wrong blogspot url)
The comments on that one are filled with interesting tidbits.
Like how MS doesn’t use its own source control system (Visual SourceSafe) at all, but a customized version of Perforce. Hmm.
If only my company would take the same route. *sob*
– chrish
From the comment section:
“It’s their setup that’s all wrong, not the cost of hardware or software. The current source code management setup in Windows was introduced by Mark Lucovsky (him who Ballmer threw a chair at when he announced he was joining the big G). The VCS is called SourceDepot and it’s a modified version of Perforce.”
Let’s see… They have probably used that system for many years, which means VSTFS was not available at the time, and I don’t think anyone would argue for them to use VSS for an operating system. VSS works fine for smaller projects, but not for large complex ones.
Could they move over to VSTFS? Probably, but that’s likely to take a LONG time to move to their own tools for source control and everything related.
“Could they move over to VSTFS? Probably, but that’s likely to take a LONG time to move to their own tools for source control and everything related.”
I seriously doubt it…VSTFS is great for large enterprise level projects, but MS has well over a billion LOC they need to keep track of, so something somewhat homegrown is out of necessity, not to mention TFS is geared more towards an IT environment, whereas MS model is more ISV-ey.
Well, whatever is best to use, their current system is obviously not good enough either. TFS may not be the best option, but it should be better than what they have now.
I haven’t kept track of what the alternatives could be, which is why I didn’t bring up any either.
(ergh… I put the answer on wrong thread again)
Well, whatever is best to use, their current system is obviously not good enough either. TFS may not be the best option, but it should be better than what they have now.
I haven’t kept track of what the alternatives could be, which is why I didn’t bring up any either.
“MS doesn’t use its own source control system (Visual SourceSafe) at all,”
Smart move considering how horrible SourceSafe is.
quote “We had a Mac that we looked to as a paragon of clean UI.” … and copied it.
Mmm makes Microsoft’s patent position interesting.
Mmm makes Microsoft’s patent position interesting.
The one where they’ve never gone after another company for software patent violations?
The one where they’ve never gone after another company for software patent violations?
They did.. once.
http://news.zdnet.co.uk/itmanagement/0,1000000308,39280317,00.htm
Edited 2006-11-28 18:11
Um that’s a hardware patent claim. From the link:
“Microsoft began marketing U2 to third-party manufacturers along with several **other hardware technologies**. According to the Microsoft complaint, filed with the International Trade Commission, Belkin has been incorporating U2 into its **keyboards and mice** and has refused to agree to licensing talks.
In a statement, Microsoft said it has no intention of seeking financial compensation but instead simply wants the unlicensed Belkin products out of the US market.”
All right, my mistake. I suppospe that’s what I get for skimming the thread.
The one where they’ve never gone after another company for software patent violations?
So you are claiming that Microsoft only intends to sue End Users and FLOSS developers? Or what did you intend to say?
Personally, I don’t think End Users and FLOSS developers (or developers in general) have anything to fear in that regard.
However, Microsoft has several times sued companies for patent infringement and has been sued several times for patent infringement as well. It’s a part of the broken US patent system. Get some patents and use them as protection against the other guys who use patents as protection against the other guys who use patents as protection against …. you get the picture, right?
So you are claiming that Microsoft only intends to sue End Users and FLOSS developers?
I don’t see how you could possibly infer that from my statement. Does bold not come through on your screen?
However, Microsoft has several times sued companies for patent infringement
I should know better than to ask you for evidence, but… evidence?
Remember — we’re talking software here, not hardware, and Microsoft has never sued anyone for software patent infringement.
It’s a part of the broken US patent system. Get some patents and use them as protection against the other guys who use patents as protection against the other guys who use patents as protection against …. you get the picture, right?
I have to agree with you here, as someone who lives in the US and worked at a company that owned several technology patents the system is broken.
It used to be that you received a patent to protect the design of a piece of machinery or manufacturing process that you produced. Patents were to protect the designs of your products. Patents addressed real needs of the industrial revolution.
These days people are getting patents for nothing other than ideas, there are no products that they produce. They simply try to make a business out of the ‘ideas’. I don’t think the system was designed with this in mind. Some people may think this is just the evolution of patents but I think its lead to a situation where you can come up with a unique idea in a product and get sued by someone who simply described something similiar on paper.
In the end you produced the work and final product and some leech who spent far less of an investment and never produced a product can take you for big bucks.
My only hope is that the people of the US will recognize this at some point and set it straight. If something is not done the US runs the risk of losing big in the technology sector (if it hasn’t already begun).
I don’t think this is a matter that one can be like “Ooooooooooooooh see FOSS is SOOOOOOOOOOOOO much better because we can do the same thing faster.” it really has little to do with the philosphy and more to do with how software teams work together. It can happen to a OSS team or a typical software devolpment team.
I think the article should be taken as how difficult large software projects are to do and not another typical Anti-MS fuel.
agreed. it just happens to be that in free software, the ‘best’ projects in terms of written code, communication to ‘the world’ and easy-to-start-hacking-on happen to survive. darwinism. in proprietary software, the best means something different: the one with the best lawyers wins (or whatever the criteria is – it’s in many cases NOT the one with the best code…).
that’s why in the proprietary world, you see many companies doing bad, efficiency-wise, with their coders. they might have excellent people (MS does) but they can’t manage them.
this doesn’t go for all proprietary vendors, indeed. for many, there IS competition, so they have to be good – or they would have been gone long ago. MS doesn’t face competition, so they don’t have to be efficient. and they aren’t…
of course, i also agree it’s simply hard to do this right. but the linux kernel manages it. KDE manages it. Gnome does. there are many huge FOSS projects that are still efficient. so it’s possible…
You believe a Google employee? Ha ha ha. Suckers.
“So Joel Spolsky slips back into a Microsoft Program Management (PM) role and decides to write a spec for the power button on the Vista Start menu. The reason he spent the time doing this is because he felt the number of options provided, 9 were excessive and confusing to most users. His spec comes down to:
“So now we’ve got exactly one log off button left. Call it “b’bye”. When you click b’bye, the screen is locked and any RAM that hasn’t already been copied out to flash is written. You can log back on, or anyone else can log on and get their own session, or you can unplug the whole computer.”
Now if Joel actually clicked on the Vista Start button and then looked at the options presented before expanding the ‘advanced’ list of options then he would’ve realized that in fact the implementation in Vista is virtually identical to what he ended up specifying.
To the normal user there are really just 2 options, a ‘Power’ button and a ‘Lock’ button, which have tool tips that explain what they do.
Now on my desktop PC with a default install of Vista the Sleep option is a new hybrid sleep implementation which is really a combination of hibernate and sleep. When the PC goes to sleep, either based on an explicit user request or because it has been idle for 1 hour then Vista writes out any necessary RAM pages to disk as it would for a hibernate, but then instead of switching off it goes into sleep mode. The advantage of this scheme is that if there is a power failure (environment, cord unplugged accidentally or on purpose) then when the PC is powered on again it performs a hibernate resume. I’ve actually experienced this first hand with a recent power failure and it was really useful to get back to all my open applications etc. after the power failure.
Now in addition when the PC resumes from sleep in this scheme you are presented with a login screen, and if Joel had taken a look he would’ve also noticed a ‘Switch User’ button on this logon screen just below the password edit control.
So this default scheme is pretty darn close to what Joel has specified as his ideal UI, it really just has 1 extra option, the ‘Lock’ button.
The main issue I think is that Joel hasn’t approached this as ‘regular’ user, but rather more as an advanced/power user who has decided to click on the advanced list which is shown when you click/hover over the ‘>’ button. So Vista has provided the simplicity for regular users and has made an advanced list of options available for more advanced users. Now what may have been a more useful posting/debate is whether this advanced list is too easily accessible to regular users by accident, e.g. should it maybe only show up if say the ‘alt’ key is held down like a lot of the menu bars in Vista applications.”
Take for example the much praised Gentoo project, where users and developers are now more or less begging for a Benevolent Dictator to arise…
Nice insight. I think people refer to this as design by committee. It seems to happen to a lot of projects. When several developers are working on a project together and the communication and trust is good they can more easily translate their vision into a product. As the process gets bigger and marketing, sales, middle managers all want to contribute the vision sometimes fades away. Take Firefox 2.0 for example. Firefox 1.0 had vision. It was clean, simple and worked well. Version 2 is okay but not great. It feels like the vision was lost and too many compromises were made. Users don’t even like the way it looks compared to 1.0
Microsoft’s problem is simply its own success. As a monopolist, it got too big. The only cure is to be small again, and as far as Microsoft is concerned, that’s never going to happen. MS has enough money and market share to keep on working like this for at least a decade. It’s like an obese person that wants to keep eating, and doesn’t want to move either. No problem there.
Excellent insight. I think you are right here. If you have deep pockets people you can do whatever you want until the money runs out. They are a private company. If they want to stagnate for 10 years then so be it. We can point out the deficiencies in their process but honestly do they really care?
Edited 2006-11-29 15:43