I have some pretty deep experience with this.

I was a .NET consultant since Beta 2 shipped (sometime in 2000 iirc). Before that I was doing a lot of hardcore Win32 dev, mostly doing UI related stuff (was doing antialiased, alpha-channeled interfaces back on Win95 in ASM & Pascal). Long story short, I was pretty deeply entrenched in the MSFT development camp.

But once .NET hit, I was already well into a career doing web development at the dotcom factories in NYC (razorfish, RGA, Rare Medium - plus consulting for FCB/FuelNA, McCann, other agencies). .NET quickly became the platform of choice for a variety of reasons, but looking back I think it was mostly because it was easy and you didn't have to be a rocket scientist to get results. MSFT is fantastic at documentation and the supporting ecosphere for .NET folks was pretty impressive. Gone were all the XML config files, the design pattern saturation of Java, and one of the best* IDE's available for lazy, non-challenged developers, aka Visual Studio.

And it was easy money. I was charging upwards of 250/hr consulting for Pfizer doing the most inane shit you could possibly imagine, shit you could do with two eyes closed and tripping on mescaline. But people were amazed at how quickly you got shit done, but not necessarily because you were some kind of rockstar - it was just easy.

But at some point it grew tiresome. ASP.NET is a hulking piece of shit, anyone that tells you otherwise is lying and/or too stupid to realize it. You start realizing that these other .NET developers you know are unchallenged nitwits without any sense of vision, any sense of craft. A bunch of me too dim wits who collect paychecks by copying and pasting their way to completion.

I was asked about 4 or 5 years ago to take on the CTO role at http://massify.com/. I was initially brought in to consult on getting it built. My first spec and budget was insane because I was relying on the MS crutch. I looked at their goals and what it would take to run this on .NET and the two didn't align. So I stepped back and redid the spec/budget based on OSS. The cost savings were astronomical, somewhere in the neighborhood of 900%. The only problem is that the only Un*x-like system I had ever touched were the NeXT stations from college (fo shizzle).

Considering that I'm entirely self taught (I went to Art School) and the way I had taught myself was throwing myself into the fire, I figured I could figure it out and make it work. And I did. I made a few mistakes of course, but as of today - I am not longer at Massify - they are still running with no unexpected downtime for roughly ~$500 a month.

And now that I've lived in the OSS/Unix world for the last 5 years, I will never ever ever go back to Windows or .NET (though I'm the CTO for a shop whose system was written in .NET - we are currently porting it over to OSS stack). It's so much better over on this side of things, I can't even enumerate the ways.

First of all is cost savings. As a CTO, that's your primary gig (usually). When I started Massify, hosting alone was ~6K a month. After a few months of hard work, we got it down to $500 a month by pushing it into the cloud. This includes a self-scaling application that does HD media conversion, CDN hosting and distribution, the whole nine. Not a trivial application by any stretch of the imagination.

Second of all is ease of administration. The learning curve was steep, don't get me wrong, but fuck all if I'll ever go back to Remote Desktop and the bullshit that is Win2K server admin. Life is too short. I have SSHd and PowerShell rocking now for the .NET app we are currently maintaining/porting, but it's such a sorry knock off of the real thing. Gimme bash or zsh or give me death is my new motto.

Third of all is the pace of technology. Nobody is innovating in the .NET space except for MS. Everyone else is a me too, redmond regurgitating drone army. OSS moves much faster. A problem you had a month ago was probably just solved today. And you didn't have to wait for MS to do it and you don't have to pay someone bizarre licensing fees for it.

Finally, the culture is so much better. People share, people contribute, there is a collectivism that is lacking from the .NET world where the old shareware model is the status quo.

I'm not sure how MS comes back to the fore, I think it's too late for them. The world is open now, and the closed model only flies for people without a clue. To become dominant again, they'll have to open up, truly open up. But, I think it's too late. There is better stuff, for free, out there and without an OSS model, they'll never be able to catch up.

Just my .02.