Last week I gave a talk at the local .NET User Group (TRINUG). The original title of the talk was "10 Open Source Tools you Should be Using", but then I decided that I didn't really know what tools people should be using and I didn't want to just pick the popular open source tools... so I changed the name to "10 Open Source Tool I Love". This way I could just talk about 10 tools that I love and not tell people what to do, then I decided that I hated one of the tools but I still thought it was valuable... so I changed it to "9 Open Source Tools I Love and 1 I kind of hate". But then I figured that was a little too crazy and that I needed a good enterprisey title for the talk and settled on "The Emergence of Choice in the .NET Ecosystem".
In the past couple of years, and greatly accelerating in the last 12 months, the choices you have as a .NET developer have greatly increased. There have always been alternatives around, Mono and the Castle project have been around forever, but never before has there been so many choices and have those different choices been so widely accepted. What I find especially interesting is that Microsoft is even encouraging choice (ASP.NET MVC vs. WebForms. IronRuby & IronPython, etc). It also seems like the community in general is warming up to alternatives instead of just following the Microsoft path, perhaps this is just me and the circles I frequent, but I really see more activity in adopting non-Microsoft endorsed technologies.
The main reason for this post is to post a link to my powerpoint for the talk and to post the list of tools I talked about and the resources and alternatives. You can see the powerpoint on slideshare (or download it) but be warned I don't put much on my slides so it's mostly useless.
Here are the tools I covered:
1. ASP.NET MVC
I know its not really open source, but I had to include it. I have heard people dismissing ASP.NET MVC as a tool for the "test obsessed" or "pattern people" but in my opinion it is the most important thing to come out of MS in years.
ASP.NET Resources
Scott Guthrie’s Blog
Phil Haacked’s Blog
Rob Conery MVC Storefront
ASP.NET Alternatives
MonoRail
Classic ASP.NET + URLRewriting.NET + MVP Pattern
2. NHAML
I love the ruby Haml so I knew I would love NHAML. I doubt this will become a mainstream tool, but I love to see alternative implementations to the normal asp.net syntax.
NHAML Resources
Andrew Peter’s Blog (creator of Nhaml)
MVCContrib Codeplex
MVCContrib Google Group
NHAML Alternatives
Nvelocity
3. jQuery
I am fairly new to Jquery but so far I am loving it. I have much more experience with Prototype. The real point of including JQuery was to point out the power of these javascript frameworks.
JQUERY Resources
Learning Jquery
FlyDom Plugin
JQUERY Alternatives
Prototype
Scriptaculous
Mootools
ExtJS
4. Castle ActiveRecord
I love NHibernate and Castle ActiveRecord makes NHibernate even more enjoyable and usable.
Castle ActiveRecord Resources
Nhibernate
Nhusers Google Group
Castle ActiveRecord Alternatives
SubSonic
Entity Framework
5. SQLite
This isn't really a .NET tool, but its a great tool for running clients in off-line mode or just as a simple light database. I love using it as a testing database so my tests run fast and they don't clutter up my other database.
SQLite Resources
ADO.NET Provider
SQLite Administrator
SQLite Alternatives
SQL Server Compact Edition
NOT SQL Server Express - Installation and size limitations mean Express is not competition for SQLite.
6. MbUnit
MbUnit has long been my testing framework of choice, xUnit.NET is more and more compelling though.
MbUnit Alternatives
nUnit
xUnit.NET
7. Moq
I am not a mocking fanatic and usually only mock out external dependencies or long running operations. I have used Rhino.Mocks in the past but I wanted to show off the simplicity of Moq.
Moq Alternatives
Rhino.Mocks
Typemock (commercial)
8. Ninject
I am just starting to get into DI (still not sure the value is worth the complexity yet) but Ninject would definitely be my framework of choice because it helps me avoid XML.
Ninject Alternatives
Castle Windsor
StructureMap
9. Watin
I am a long-time fan of Watir and Watin so I wanted to be sure and feature it (even though isn't as necessary when using ASP.NET MVC)
Watin Resources
Watin Test Recorder
Watin Alternatives
WatiR
10. Cruise Control.NET
Cruise Control.NET is the tool that I hate. I love the benefit, but it is a total pain in the ass to setup and get running the way you want.
Cruise Control.NET Alternatives
TeamCity (semi-commercial)
If you have any other alternatives for the tools I talked about please leave a comment and I will add it to the post. I have an example app that includes samples from all of these tools as well, but I want to clean it up a little bit then I will post it to Google code. (I also have some other plans for it that should be alot of fun)
-James