Since the ALT.NET movement a couple years ago, Microsoft developers have, to varying degrees, embraced open source technology. Many of us can’t imagine planning a project or designing an architecture without leveraging at least some open source tools. What surprised me is where the source for these tools live.

Here’s the skinny:

Where the code lives

A couple notes on my data.

First, there are excellent open source project from Microsoft including Unity, MEF, the Silverlight toolkit, and more hosted on CodePlex, but I have excluded these since they are not community open source projects.

Second, some of these projects are not on created on the .NET stack but I believe they are still relevant to .NET developers so I have included them. Other projects I have left off because they are not relevant to developers, rather consumers.

Finally, this is my subjective list of projects. I’m sure I forgot some.

Based on this data, it’s GitHub by a landslide. The truth is almost every important C# based open source project lives there. And amazingly, Git is only partially supported on Windows using Cygwin. What’s going on?

It turns out that GitHub has turned open source collaboration into a social experience. Contributors can gain status and recognition for participating in GitHub. Projects rank against each other in a fun, competitive manner. It’s easy to search projects by language and to collaborate. In other words, GitHub really is “cool”.

GitHub also revolves around Git which is distributed version control. For SVN or TFS users, this is a completely new and liberating experience. I recently worked on an SVN project where certain folders were only committable by one individual, effectively stopping collaboration. Nothing like this happens with a Git based project. You are encouraged to fork and you can always commit against your own repository,

If you haven’t used Git, there are some good resource to help you get started. I think the best is Rob Conery’s series on TekPub called Mastering Git. It’s not free, but it’s really good and it shows using Git from windows.

Last May my friend Shawn Weisfeld recorded a quality presentation by David O’Hara presenting at the North Dallas .NET User Group on Git. You can see that presentation here.

For me, I think Mercurial is the better distributed version control system for Windows users. It doesn’t require Cygwin and there is a nice Tortoise and command line client. You can also play nice with GitHub using this plugin.

My data set below:

Project Where it Lives
Autofac GitHub
Automapper GitHub
Caliburn MIcro CodePlex
Castle GitHub
CouchDB SourceForge
CruiseControl.NET SourceForge
Farseer Physics CodePlex
Fluent NHibernate GitHub
FluentMigrator GitHub
Fubu MVC GitHub
GitSharp GitHub
JQuery GitHub
Kayak GitHub
Knockout GitHub
Log4net Apache
Manos de Mono GitHub
Mass Transit GitHub
MongoDB GitHub
Mono GitHub
Moq Google Code
MVVM Light CodePlex
NANT SourceForge
NHibernate GitHub
Ninject GitHub
NSeviceBus GitHub
Nunit Launchpad
OpenRasta GitHub
Owin GitHub
Raven GitHub
RestSharp GitHub
Rhino Mock GitHub
Sparkle View Engine GitHub
SpecFlow GitHub
Spring.Net SourceForge
StructureMap GitHub
Subsonic GitHub
Voldemort GitHub