Monday, December 17, 2007

Windows Vista taught us something about software development. It was one of the largest software projects ever completed and like most projects of that size it was seriously late. The delivered product lacked many of the features that were initially promised. For me, it raises the question has building a modern operating system now become so complex that the process of designing and builidng it simply can't be managed?

Microsoft is much like the central planning that occurred with in Britain during the seventies. The government would try and "plan" their economy using their nationalised industries. The problem with this approach to running an economy is that you never have enough information to make well informed decisions. The result was slower economic growth until Margaret Thatcher introduced reforms that sold off most of the nationalised industries.

Microsoft is similar in that it is a centrally controlled operating system. Features presumably get decided somewhere at the top of the business hierarchy and are split up amongst various teams. These teams probably reside in separate buildings under separate managers but none-the-less they have to work together on a particular feature. Then there are probably many thousands of these features and just as many teams.

Can anybody sensibly manage a project that operates in that fashion? Is it any wonder Vista turned up years late?

If we compare this to the way Linux based operating systems are developed we see a slightly more scalable tack. Let's say I decide to put a feature in to KNode to allow Usenet posts to be scored on any header information the post contains. As a random individual, I can just go ahead and check-out the source and make the change. Once I've made the change, I might say to the maintainer of KNode, "Here's a new feature, do you want to put it in KNode by default?" They might accept my change-set entirely or suggest some improvements to my patch. They might even just reject the patch entirely. That's their choice. It doesn't affect what I can do with my local build.

This approach to software development is much more scalable than Microsoft's central planning. If you have thousands of developers scratching their own itch and submitting patches, then managing the project is the more tractable task of selecting the best features from the community and testing the finished product.

Another example can be found in the Linux kernel project. These days, Linus doesn't write any code. He simply manages which patches get integrated in to the main-stream kernel. Once an open-source project gets large enough, the grunt development is rarely done by the leaders. At the risk of repeating myself, their job is to select from the best of the useful patches developed by the people in the community.

Windows Vista is meant to contain 50 million lines of code. This is nearly twice that of any Linux distribution. While counting lines of code is bad way to measure almost anything about a piece of software, it is very roughly a measure of complexity. I think Vista is the absolute limit of what can be achieved with central planning.

Rather than trying to centrally plan Windows 7, I think it'd be better for them to model the open source approach for developing the software. You would let people aggregate themselves in to small teams of maybe ten developers. They then dreamup a bunch of features, independently of anyone else, and work out how many of these features they can implement and test within a year or so's time frame. They then go-ahead and implement those changes. You then have another team of very seasoned developers who compare and contrast the work that everyone has done and decide what goes in to the finished product. It doesn't matter that some people might implement the same feature, if that happens you just pick the highest quality patch for that feature.

At first, this seems like a very wasteful way to develop software. Entire man-years of software may never make it in to the finished operating system. That might be true, but it is how is this different to what has happened with Vista anyway? I would speculate that even in spite of this, you will get better software and better value for money from your developers. By pitting development teams against other developers in a Darwinian fight for survival, it becomes a battle of technical skill to see who's feature makes it in to the product. You give everyone an incentive to deliver the very best work they can.

Because of it's monopoly on the desktop space, you have to think of Microsoft almost like you would a government agency. A good comparison to draw would be that Microsoft is much like our the problems experienced with the National Health Service (NHS) in the United Kingdom. The NHS is a government run £100 billion a year monopoly on health-care. The government found that when they introduced internal markets in the NHS, costs were substantially lowered.

Similarly, in Windows 7 Microsoft should seek to imitate open-source and the NHS and try and establish internal competition between departments. I am convinced it will lead to a higher quality OS that is delivered more quickly than Vista.

Simon.

00:05:00 GMT | #Microsoft | Permalink
XML View Previous Posts