I think its all well and good, as its not just microsoft which has a security/stability problems, its computing in general.
Many pieces of unix software (particularly in the desktop arena) are horribly unstable, and new security bugs are found everyday in software across the board.
I feel the problem is the languages used. C and C++ are around 30 and 20 years old respectively. I once had a professor who put it in these terms: "With C, it's easy to shoot yourself in the foot. With C++ it's harder to shoot yourself, but when you do, you tend to blow your whole leg off."
They were designed for simpler systems in an age where programs were largely isolated from each other. C was really meant to be a just-friendlier-than-assembler way of programming with virtually no bounds checking. And it does that well.
It's not that programmers are bad, but they are human. They make mistakes. They forget things. These are what lead to insecurity and instability.
What I want to see done is: Good replacements for C and C++. C is the only viable mid-level language out there currently (that I know of anyway..). A newer version of it with bounds-checking and increased mistake-proofing needs to be done.
C++ should just be replaced altogether with a language that makes templates and OOP fun, rather than an exercise in syntactic horror. It should be natively compiled for speed optimizing, or runable under a VM for portability. Garbage collection is a given.
I'd love it if M-Soft would task some of their magnificent research department on creating some tools for simplifying algorithmic analysis and proofing. Really, for security and stability, algorithmic solidity is key, and thus the Holy Grail of all computing.
COG. Build your own community. Free, easy, powerful. Demo site