Against all odds, I’m still a big fan of .net. I like their core API, some of the surrounding stack, I *love* F#, the tooling (VS + Resharper). It’s a quite productive place to be.
However it’s undeniable the amount of innovation happening elsewhere, and the playing catch up that DevDiv’s doing. Some things we can mimic in .net (like a mvc framework based on Rails), but try to spawn/deploy lightweight processes the same way erlang does.
There’s a firm and passionate community around .net hanging there, witnessing their open source offering being abducted by the mothership. There are also communities around different stacks that seems to play a more important role and being appreciated for it.
For example, the way node.js was designed to support modules, anticipating that node itself is a lightweight kernel, and it’s usefulness is limited only by the imagination of its community. Js may have its problems (dont I know it!) but since it’s fully composable, you can define light contracts and unleash a world of plugins and combinations of how they interact with each other. Express seems to be doing that very well.
On the cost side of things, hosting a Windows solution on aws or azure is about double the price of their linux counterpart. The question is, does the productivity gain of the .net stack + tooling (which isn’t free) outweigh this operational cost that will last well, the lifetime of your app? I’m starting to doubt that.
The dev-polyglot movement seems to make more sense everyday. Be tied to a single stack is a liability, it can go up or down in demand – and Microsoft had better days. So read about http://en.wikipedia.org/wiki/Sunk_costs and go learn something new.