1) Microsoft is both the tool vendor and the platform vendor. The Ruby community can go ape-shit forking each other on github, but at least the underlying OS remains constant.
2) Microsoft tools cannibalized each other. There is nothing laissez-faire about its offerings: the new kills the old and the entire company, developers, reference materials, publications, marketing, and retail are in lock step. You just couldn't depend on using a disavowed infrastructure without fear of your bookmarks going stale, immediately.
3) They had no reason to phase out products and tools, at least no sensible reason. It's often to harm a competitor. Not only that, but they have sometimes pushed changes for the same of ill-advised aesthetic reasons. You had to be a C++ programmer 1997 - 200 to see how MS can bully. The push to COM and machine generated stub code. The fucked up pre-compilers. The weird new syntax. You could do everything with vanilla C++, but they were trying hard to keep Borland and other compiler vendors at bay, so you had to kowtow and come along with them.
Alright, this is seriously giving me flashbacks and might trigger PTSD.
(2) - Please... Your old frameworks are still there. You are discouraged to use them, but they didn't go away. I seriously don't understand how this is a problem?
(3) - Again, technology is not frosen. Competitors are coming out with new shinier things - why Microsoft should stick to only what was there back 20 years ago? So they push their shiny stuff into the limelight. But given that old frameworks are still in place, it's not a problem.
"The push to COM and machine generated stub code." - I don't understand your grudge here. Why didn't you ask yourself: do _I_ really need to use COM? COM solves some particular problem - was it _your_ problem? Did ole-good Windows API and C++ classes just go away with the advent of COM? I for one am a C++/Win32|64 and .NET dev. Last few years I'm asking myself a question - do _I_ need to use WPF, just because it is there? My answer is no - I'm just ignoring it, as I ignore other shiny things that don't solve _my_ problem.
BTW, maybe this will sound like a blasphemy here, on HN, but Microsoft could teach a thing or two to the "platform vendors" out there. The pace of change and amount of inconsistency that is being introduced by everyone and their dog with web service "APIs" is astounding. Compared to that, MS' approach of keeping of old stuff while introducing new one is simply a god-send.
Then, you sold software based on polish and integration in UI look and feel. You have to choose your tools very carefully, because of the realities of software publishing and distribution. You don't know how long it takes from the moment you press the CD-ROM, to the moment it goes on the shelf, to when it's bought. If it looks and works OK today, a year from now it would be butt ugly. Only hardware vendors could get away with ugly software. Even anti-virus software is polished and themed to oblivion. But mine corporate software with strong Office integration, it has to look modern, for some modern in the unknown future.
Did ole-good Windows API and C++ classes just go away with the advent of COM?
They didn't. I occasionally write native win32 apps with Dev-C++. But I could not, today, embed all third party components, be they MS' or off-the-shelf, using only pure C++ and win32 API.
There are tiers of Win32 interfaces and libraries, in terms of quality and system integration. On one end you have the Win32 API, and on the other end the latest managed .NET newfangled things (I am ignoring native NT layer and the DDK.) However, in between you have this graveyard of APIs, from OLE to ActiveX to COM to what have you. Each has been pushed with merciless fervor by MS, at a time when they were the only game in town.
I am glad you like your stay on .NET though. Cheers! I myself java just rediscovered Java (the JVM, really) and this is where it's at. Sun couldn't sell for shit, but they knew how to make software.
You are completely pushing the philosophy of technology needs to remain the same and consistant through all of time. Not possible, ever. Technology HAS to evolve or we all sit at a standstill. If you don't want to learn new things and stay modern in technology, then you need to sign up for truck driving, not software development.
They (MS) didn't just sit around trying to find ways to piss you off by coming out with new technology. They released one, found a way to improve, and released that next. Quite blaming the vendors and put the blame squarely where it belongs, with people who refuse to learn and evolve with the technology.
I am not "complaining about now", I am complaining about 10 years ago. Specifically '98-00. Fireup Wikipedia and do a little MS history research.
I want my software to look fresh and fit in with the UI of the environment. I said was coding for the future, i.e. use the most cutting edge software today, so by the time we put the software on shelves, it doesn't look old.
My #1 issue with MS, really, is that they let the official API stagnate and forced us developers to use Office and IE components, in the hope of integrating them with Windows.
I would make sense of your writing if it wasn't so weirdly phrased.