I wanted to write my opinion about the ALT.net thing since a long time, but I really never find the time to sit down and organize my ideas into an organic post.
The event that "triggered" this post is my friend Lorenzo asking my opinion about his blog post "There are architect and Architects" (it's in Italian but here is the link to the auto-translated version by Google).
In his post Lorenzo, commenting on Sam's post about leaving CodeBetter and ALT.NET, adds some thoughts about something that usually the hard-core ALT.NET people don't get: imagine you have an Enterprise-level project, with 100 developers, how many of them are likely to grasp what IoC is? Or how many of them will understand why someone decided to use an exotic open-source not supported MVC framework that forces them to completely throw away all the knowledge they have on the ASP.NET webforms and their page life cycle?
The ALT.NET vs "MS tools and technologies" battle in my opinion is similar to the Linux vs Windows one: even if the first choice in both battles is technically superior, cooler, and trendier it doesn't win the battle because of the users.
Linux doesn't win because of the ACU, ALT.NET doesn't win because of the so-called Morts, which are probably 90% of the developers in the real world (which is much bigger then the world of the developers reading blogs and taking part in the community).
I totally embrace the ALT.NET vision, but I also think that it's negative to build a wall between what is MS and what is ALTernative as some of the ALT.NET fanboys predicate.
What Lorenzo said is correct: if you have 50 developers in your team you can't use MonoRail or Windsor or even the kind of main-stream NHibernate, because 40 of them will not know what you talking about.
I don't want to point the finger against anyone, but in my experience with previous jobs, I was the only one interested in staying up to date with the technologies, learning new approaches. I was the only one that fought with the CTOs to setup a CI process and introduced a kind of TDD approach inside the projects. In January, I was the one that informed the dev team that there was a new version of the .NET framework, version 2.0 (no, not the 3.5, the 2.0... and it was 2 years after is has been released).
So, I might have been very unlucky, but the truth is that 80% or more of the developers only care about working 9 to 5, have their work done with the least possible effort, and don't study to stay up to date with the new trends or technologies, they goes to user group meetings only if they are during the working hours and their employer doesn't take off a day of annual leave.
These guys use whatever Mother MS gives them: 15 years ago it was the D&D winform development, then 5 years ago it was the D&D development of web forms that mimics the same development experience of winforms, then it was the typed dataset, now it's a no-look Ajax toolkit, next year it will be Linq, Entity Framework and in two years it will be the new MVC ASP.NET framework.
So, we can't blame Microsoft for building tool for Morts, because it builds what the market looks for and what it is ready and can use.
I think the ALT.NET movement is great because it brought to the world new ALTernative ways of building apps with the .NET framework, and all the discussions and exchange of ideas going on will set the way to the next Gen of developers and development tools and frameworks.
Like any other big change, this is fostered by a small group of people that firmly believe in a new way of doing things. ALT.NET is the way the .NET world is going, but not this year, not next year: probably in 5 years time, when the innovation in the processes and tools will be incorporated into the definitive tools Microsoft will ship after it made sense out of many similar frameworks.
Of course in 5 years doing MVC on ASP.NET, POCO, IoC, TDD, CI will be mainstream, and the "sons" of ALT.NET will use other and even more innovative approaches, and MS will again be "behind" and seen as "not cool", but that's the way the world goes.
Hope I explained myself well.
Oops... I was forgetting something: I like PragmaNET more then ALT.NET since ALT creates a lot of confusion and people feel a negative feeling about it. But it's just my opinion.
P.S.: I know there has been a lot of talk, and many other blogger, more "famous" then me, already said their opinion: I didn't read all the posts about that topic, so, if I'm saying the same thing someone else already said... well... "Great minds think alike"
P.P.S.: I want to thank Igor for listening to my words while driving back home after the "Pizzoccherata d'alta quota" of last Sunday.