Typically speaking in the past, critics would have laughed or promptly smashed any one who supported the “evil empire” in any way, shape, or form. However, times change and the pendulum swings. Thanks to people like Scott GU, there has been much change to how Microsoft is doing development and relating to developers who work on their platform. Granted its not perfect or without incident, but there is change from within the evil empire.
On the skirts of the empires domain, there has been for some time, open source projects that really have been the cornerstone and often taken for granted to daily development. NUnit, NDoc, NAnt, Log4Net, NHibernate, Spring.Net, just to name a few projects that have really helped .net development community in general.
However, in the last couple of years, the reach out to developers of .Net who use opensource projects, software, tools, etc, has increased, with the likes of web sites like CodePlex and Port 25, which were not only created, but constantly improved upon and continued to be improved upon. CodePlex now supports SVN as a code repository. Not only that in the last year or so; Microsoft has actually been helping Mono (which is an open source project that helps bridge .net to work on other platforms like linux or mac) with its adoption of Sliverlight, called moonlight. Microsoft has even released their own shared/open source licenses like Ms-PL to the community.</p>
Now there are a ton of crazy things that are currently going on, and there are some hidden gems that are being developed that might not get as much attention as they deserve.
- Unity** (**Ms-PL**) – **a dependency injection framework with the latest version of Object Builder. The configuration seems much less evil than spring.net.
- **White (Apache) **- Windows Forms, WPF, & SWT (java) automation. Basically a library to help automate UI tests or batching for .net thick client UI’s. People that use NUnitForms really should give this a go. Thanks ThoughtWorks.
- WaitN** (**Apache**)** – Web site automation for the .net runtime, works with both IE and Firefox.
- Subsonic** (**MPL 1.1**) – **a toolkit for web sites that tends to use rail like concepts, including generating the DAO, migrations, etc.
- BlogEngine.Net** (**Ms-RL**)** – light weight blog engine
- Facebook Toolkit** (**Ms-PL**)** – .Net Facebook API wrapper Library
- Gallio** (**Apache**)** – Automation Platform for .net let you use various tools and testing frameworks side by side such as MB-Unit, NUnit, PowerShell, Pex, NBehave, etc.
- MB-Unit (Apache) - Generative Unit Test Framework that can also be super useful in creating functional tests as well as unit test, (and to me, it has more to offer than the testing framework that comes with visual studio).
- Flickr.Net Api Library** (**LGPL**)** – a .net wrapper around the flicker api.
- Avalon Dock** (**New BSD**)** – WPF Docking Suite, much like its win forms forms counterpart.
- Ajax Toolkit (Ms-PL) – A library of AJAX controls for .net web sites.
- Iron Python** (**Ms-PL**)** – implementation of the Python programming language running on .NET
- Iron Ruby – still in the works, but this will be an awesome addition to .net when its finished.
- BOO** (MIT/BSD)** – a wrist friendly language for .net, also still in the works.
- F#** (pending)** – it supposedly will be released under the Ms-PL when it reaches the 1.0 state.
New Software Options from Microsoft
- Asp.Net MVC** – **Microsoft is writing a rails like MVC option for its web development genre, that is being released, including source code and tests in iterations to the public for testing, feedback, developer interaction,actually depending on the community to help drive what is being built and how it functions.
- Prism** (**Ms-PL**)** – Composite Application Guidance for WPF, (similar to CAB in a way) in order to help build WPF clients in general.
- WPF Toolkit** (**Ms-PL**)** – basically the initial release of the WPF DataGrid as well as making room for MS to release new WPF controls without having to release a new version of the framework.
Of course I have to make a small plug for Amplify, a BHAG project and an open source framework that I’m working on in my spare time. I’ve started working on a dashboard / GUI tool called FUSE for amplify that will help create database fixtures, help with migrations, and other code habits in general. I’ll be using Unity, Log4Net, Avalon Dock, Gallio, Mb-Unit, and White for this tool, its using the latest version of .Net 3.5 sp1 and will be using WPF instead of win forms for the first release. A preliminary screen shot, below of FUSE pulling info from the database’s schema.
So with all that being said, the next time you go to pick a platform and think open source doesn’t apply to c# or .net in general, you might want to take another look.
If you know of any other hidden gems or tools that I have missed, please, add them in the comments below.