I've been with C# since the beginning, 1.1, coming from ASP 'classic', I absolutely love C# as a language. But... I'm now working in a Ruby/Linux shop handling some of their legacy app integration and I've come to understand that a lot of the disinterest comes from a complete clash of culture more than anything else. By that I don't mean the old "Evil M$" rubbish - for 10 years Microsoft has not understood Open Source culture. Instead of collaborate it was compete compete compete. NHibernate vs Entity Framework, ASP.NET MVC vs fubu/castle, Codeplex instead of GitHub, everything was done to keep people dependent on Microsoft.
ALT.NET came and went, but there was never a really strong open source community. That combined with the cross sell policy is a barrier to entry. Everything has been tightly coupled, IIS dependencies in ASP.NET makes Mono a second class citizen, MSSQL dependencies in EF made code first migrations break in MySQL. All designed to sell licenses, books and certification.
Talking about productions web apps, at the end of the day it has to be on Windows, even if you want to dev on Mono. If I'm going to start building a production app you start asking yourself questions about licensing costs too, Server, SQL, VS pro, CALs. Okay so you can get it going for free if you join BizSpark, but then there's the waiting etc etc and the niggling fact that eventually you will have to pay. Comparing that to my experience working on Linux is like chalk and cheese. vagrant up -> npm install -> {do work} -> git push heroku master. Frictionless, all for free, with no gatekeepers.
With OSS, people don't sit around waiting for the mothership to fix issues, because there isn't one, they band together and fix it themselves. Additionally, as I've come to realize (flamebait warning) Linux kills Windows on the server. Not by a nose, but like a Red Wedding in ease of use, footprint and resource utilization.
You also have to look at the "why C#" specifically. To do RAD web development it is much faster to use something like Rails. C# is more performant? Then use Java or node.js. C# just doesn't fill a particular gap.
Having said that, it's not all doom and goom, I think C# is the #1 choice for mobile development. I think the ASP.NET Titanic is starting to turn. Scott Guthrie seems to get it. The announcements recently with regards to ASP.NET vNext are all heading in the right direction and address a lot of the glaring issues. There is also some great non-MS .NET work being done at places like GitHub and StackExchange. Will it be enough to convince OSS types to start adopting it? I doubt it.
ALT.NET came and went, but there was never a really strong open source community. That combined with the cross sell policy is a barrier to entry. Everything has been tightly coupled, IIS dependencies in ASP.NET makes Mono a second class citizen, MSSQL dependencies in EF made code first migrations break in MySQL. All designed to sell licenses, books and certification.
Talking about productions web apps, at the end of the day it has to be on Windows, even if you want to dev on Mono. If I'm going to start building a production app you start asking yourself questions about licensing costs too, Server, SQL, VS pro, CALs. Okay so you can get it going for free if you join BizSpark, but then there's the waiting etc etc and the niggling fact that eventually you will have to pay. Comparing that to my experience working on Linux is like chalk and cheese. vagrant up -> npm install -> {do work} -> git push heroku master. Frictionless, all for free, with no gatekeepers.
With OSS, people don't sit around waiting for the mothership to fix issues, because there isn't one, they band together and fix it themselves. Additionally, as I've come to realize (flamebait warning) Linux kills Windows on the server. Not by a nose, but like a Red Wedding in ease of use, footprint and resource utilization.
You also have to look at the "why C#" specifically. To do RAD web development it is much faster to use something like Rails. C# is more performant? Then use Java or node.js. C# just doesn't fill a particular gap.
Having said that, it's not all doom and goom, I think C# is the #1 choice for mobile development. I think the ASP.NET Titanic is starting to turn. Scott Guthrie seems to get it. The announcements recently with regards to ASP.NET vNext are all heading in the right direction and address a lot of the glaring issues. There is also some great non-MS .NET work being done at places like GitHub and StackExchange. Will it be enough to convince OSS types to start adopting it? I doubt it.