I stopped programming using Microsoft tools about ten-fifteen years ago. This means that I’m really out of touch with what Microsoft is doing with programming languages, and what their customers are using the languages for. Yes, I’ve heard of .NET, and I know of Miguel D’Icaza’s .NET imitation called Mono. I knew that Microsoft had developed their Codeplex Foundation to attempt to gain developer mind share among Free and Open Source programmers. Beyond that, well, I don’t run Windows, and since Codeplex appears to be 100% Windows, there’s nothing to interest me. And while Mono can run on nearly anything, quite frankly when I tossed Windows, I was so feed up with Microsoft Technology, that I swore I’d never use it again. Since Mono is imitation Microsoft Technology, I don’t use it.
And then I read Dave’s screed. Wherein he blasts .NET, Codeplex and Microsoft.
I was struck by the similarities between what he was saying about the situation that has caused him to decide not to program using the .NET languages, and some other situations I’m seeing.
Dave’s major complaint is that no one is paying attention. Improvements are suggested, in many cases the improvements are actually coded, and uploaded. What happens? Nothing. There is no feedback, no one knows if the improvement will be used or not. Instead they wait, until from on high, Microsoft issues the next update.
And here’s the point. It’s all about communication. Communication, feedback, incremental improvements that over what is often a relatively short period of time become major improvements.
Consider this blog. Yes, I write virtually all of the articles. I don’t do this on my own. Oh yes, it’s my name that is signed at the bottom, it’s my name that you see everywhere. But this is not a one man show, it’s a community effort. I get a lot of feedback, from a lot of places. Oh, most of it is from English speaking countries. But I get things from other places as well, and I’m really glad that there’s so many people who are willing to contribute by sending me links and information. Without that help (including the help I get on grammar and spelling), the blog would junk.
And that’s the situation that Microsoft has put themselves in. By not working with the community, a community that they worked to form, they are hamstringing themselves. .NET as a programming paradigm could be far better than it is, if they committed themselves to the community, the way they told the community that they would do.
Instead, they are trying to run a Top-Down organization, and it just isn’t efficient enough. It’s so inefficient that developers like Dave, who have a lot of time and effort invested in programming using Microsoft tools, are abandoning ship, and moving to Free Software tools.
I’ve known about the migration for a while, but hadn’t written about it before. I’ve talked to several people like Dave, and while I’d gotten a feel for what was going on, no one had explained the issues in enough detail for me to be certain of what was really happening. Thanks to Dave I know have a good understanding, of what is going on.
And as so often happens, Dave’s article ties in with other things, things that he may not have though of himself.
Let’s go back to 1995. In 1995 Microsoft introduced Windows 95. Windows 95, as bad as it was, was better than Mac OS 7. It was also better than Linux. At that time.
Since then we’ve watched Mac OS take a giant leap ahead of Windows, with OSX 10.3, and then move further ahead. Mac OS X 10.6.4 is miles ahead of Windows Seven. During the same time, Linux passed first Windows, and then Mac OS X. Technologically Linux is so far ahead of Windows and OS X that it isn’t even funny.
And there’s a very solid set of reasons that this has happened.
Microsoft Windows is a huge, top down project. Top management draws up a list of what functions they want in Windows, and various teams are assigned to implement the functions. The the teams try to integrate it. Try. Ever wonder why Windows has to many bugs? Imagine a thousand teams, each working on it’s own to do something, with little knowledge of what the other teams are doing, and then attempting to fit it all together. That there are problems isn’t surprising.
Mac OS X managed to pass Windows technologically, by bootstrapping off of the FreeBSD project. The license that the FreeBSD project uses allows anyone to use all or part of it, in just about any way they want. Apple used it as the basis of a Twenty-First Century operating system, adding their own concept of a user interface on top. By leveraging the work that the FreeBSD team did, Apple was able to gain thousands of man hours worth of programming, at little cost (Apple does make contributions to the FreeBSD project). But Apple has an Achilles heel. Apple has very specific requirements, and those specific requirements aren’t always things that the FreeBSD community is interested in, and so Apple has to do that work, along with the User Interface, and a variety of hardware/software specific things that make an Apple, well, an Apple, themselves.
Linux (more properly GNU/Linux) has been able to move even further ahead. Microsoft has to have 100% control of everything in Windows. Microsoft is limited by the number of programmers that it can hire. Apple doesn’t have the same level of control as Microsoft, Apple uses Free and Open Source software for a lot of OS X. But it can’t use it for everything, and again, Apple is limited in the number of programmers it can hire (note that OS X, and IOS, the IPad, IPhone, and IPod operating systems are closely related, using a lot of the same components, or Apple would need even more programmers). Linux has no limitations. Most of the programmers who work on Linux are paid to do so by companies like IBM, Intel, AMD, Nokia, Sony, etc. Some work on it just for the love of doing so.
Because of the economics of GNU/Linux, there’s no limit on the number of programmers involved. Anyone, even me, could help develop it. As a result GNU/Linux has been able to develop at a rate that no proprietary software project can match. It’s nothing unusual for Linux distributions to work on a SIX MONTH release cycle. Compare that to Windows Vista, which took FIVE years to produce! Five years. Five years during which both OS X and Linux left Windows far behind.
And Microsoft can’t afford to hire enough programmers to catch up. It’s main cash cow, Microsoft Office is under price pressure from a variety of competitors, all of which are less expensive. Some of them are free. Microsoft is loosing sales to these competitors. The only way Microsoft may be able to maintain market share is to cut the price of Microsoft Office dramatically, and if they do, their margins drop dramatically. Catch 22.
It’s operating system, Windows Seven is behind technologically. Without the programmers they can’t afford to hire, it won’t catch up. Even worse, some design decisions made in the past were wrong, leaving Windows with security issues that OS X and GNU/Linux don’t have. Microsoft appears unable, or unwilling to make the changes necessary to correct the problems. And every programmer who’s working on patches to try and hold Windows together, isn’t working on improving it. Microsoft doesn’t have enough programmers to get patches built and tested to fix vulnerabilities before attacks targeting them surface. Some Microsoft patches take six months to design, built, and release. Compare that to GNU/Linux where a major problem was found in the Kernel this week, and patched in less than twenty-four hours.
Unless Microsoft is willing to make massive changes in management and development styles, they will continue to fall further behind technologically. Their ability to make these changes is constrained both by existing debt, and by the squeeze on the profit margins of their core businesses.
This is why I estimated that Microsoft would have to enter Chapter 11 Bankruptcy Protection last year. I said five years at the time. We’ve only four years to go. Assuming that Microsoft doesn’t do something. Soon.
My guess is that they won’t. The company knows it has problems, but Microsoft has never relied on producing the product that customers want to buy. Instead they’ve concentrated on getting the OEMS to install their product on everything. That worked fine for a long time, but the new markets opened up by Netbooks and Tablets aren’t open to Microsoft in that way.
Friday September 24, 2010