Open Source Tools and Visual Studio 2008 / .NET 3.5

Since I have started consulting I have encountered a few projects that use open source tools fairly heavily.  It seemed to me that most of these tools now have equivalent counterparts in .NET 3.5.  Mind most of these were written between 2003 and now and Microsoft has been picking them up and adding them to the .NET Framework or Visual Studio.  So I asked the question of the other elegant coders.  “With so much stuff in .NET 3.5, why would I learn the Open Source tools instead of concentrating on what is in the framework?”

I specifically asked about the first 5 in the list below.  As other elegant coders replied, more were added to the list.

1. Nhibernate -> SQL Metal and Linq
2. Nant -> MSBuild. 
3. Castle Windsor -> System.AddIns
4. NUnit -> MSTest in VS 2008 Pro
5. NDOC -> Sandcastle

The first is the open source tool.  The second is the Microsoft equivalent.

——————————————————————————————————————-

The final list turned out like this (as posted by Chris and David with comments below)

Note: Linq and Linq to SQL are different products.  Linq itself is not database specific, nor an orm.  Linq to SQL is built on top of Linq and is database specific and an (poor mans) ORM.

  1. Nhibernate, SubSonic -> SQL Metal and Linq to SQL -> MS Data Entity Framework
  2. Nant -> MSBuild, FinalBuilder
  3. Castle Windsor, Spring.Net, StructureMap -> MS Unity IoC Framework
  4. NUnit, MBUnit, XUnit.Net -> MSTest in VS 2008 Pro
  5. NDOC -> Sandcastle
  6. CruiseControl -> TeamCity -> Team Systems TeamBuild
  7. SubVersion -> SourceSafe -> Team Systems

1. NHibernate: more configurable than Linq to SQL.  Also allows you to generate your database from your domain, which Linq to SQL does not, and Entity Framework doesn’t yet (but will).   If you really want to compare apples to apples, compare LINQ to SQL to SubSonic and NHibernate to the Entity Framework.

2. Easier to find samples for Nant, and Nant can run C# code from the script.  FinalBuilder has a nice GUI for doing a lot of the same stuff.

3. Unity isn’t going to be any easier to setup than the OSS tools for this one, and currently Unity is much less of a product (bare bones really).  Actually, Unity is sort of OSS itself (you can get the source, but I’d have to check the license again).  I like Spring.Net, but I’m taking a serious look at StructureMap and Castle Windsor right now.

4.  In 2005 you could only get MSTest with Team Systems — fixed in 2008.  But again, MSTest isn’t any easier to explain or use than NUnit, MBUnit, or XUnit.Net.  ReSharper has a beautiful support for NUnit (and support for XUnit.Net is coming).  I don’t see an advantage to MSTest.

6. I <heart> TeamCity.  CruiseControl is a pain to setup the first time, but pretty easy after that.

7. Other people can answer that one better than me.

——————————————————————————————————————-

As Jason and Scott pointed out the problem is the Open Source version of these can be a tough sell in an organization when you already have somewhat equivalent functionality already in the framework or being released by MS on CodePlex.

The primary issue I see is if I install the 3.5 ,NET framework I get the Microsoft version of the these tools built in.

  • .SQL Metal and Linq to SQL -> MS Data Entity Framework
  • MSBuild.
  • System.AddIn (I know this is not technically a IOC container but it is pretty close).

If I pick up Visual Studio 2008 Professional I get

  • MSTest in VS 2008 Pro. I have come to the conclusion that I am not as dedicated to TDD as Chris. :-).

Finally I do use

  • CruiseControl
  • SubVersion

Because I don’t want to buy Team System for a one man shop. 

All in all I will still need to know the open source tools because they are in wide use, just like I seem to be acquiring third party user controls (Ifragistics, Componet One, Telerik) because my customers are using them. 

I will try to use the .NET framework tools as much as possible because, as Scott said:

Wow, everyone has made some pretty good comments, there is not much more I can add except for one point of view I did not see mentioned and I think Darrel was hinting at.  The point is or  word of the day is “cohesion”.   Microsoft’s .Net stack is maturing and they seem to be paying attention (for the most part) to very popular open source movements that are delivering some kick butt products and tools.   While the MS integrated offerings are not always best of breed (most feature rich) when compared to the before mentioned open source tools, they are nicely integrated i.e. high cohesion factor which can (but not always) translate into shorter training/learning curve and higher productivity.

I am a fan and have used and still use many of the open source tools mentioned here.   However, I am sure most of us can agree it does take a bit of effort to stitch together a string of these open source tools when building your engineering/development environment.  The integrated MS stuff is just there and is pretty easy to use.  Probably a bigger point is that finding people skilled in the majority of these open source tools/products can be quite changeling, as a few of us have recently experienced.   It is sad to say guys but we are not the typical developer.   The native/integrated MS solutions will become the standard given enough time and maturity.  At some point you will be hard pressed to find devs who have ever worked with the tools we have discussed here but there will be a good chance they know or have heard about the MS integrated offerings.  One of the new devs we hired was all excited telling me about sandcastle (I just had to listen made him feel good) when I told him it was nothing new they got the Idea from nDoc, his reply was nDoc what? 

I may be one who is just drinking the Kool-Aid here, but going the more pure MS tools approach definitely has its merits, once that particular product hits a certain maturity which lately is beta 1 ;-) 

kick it on DotNetKicks.com

7 Responses to “Open Source Tools and Visual Studio 2008 / .NET 3.5”

  1. I use open source because they are more mature and have been round the block more. They will be less buggy.

    Compare Log4net to the Application block logging nonsense.

    Nhibernate was ported from Java. Entity Framework is a poor imposter and will never ever catch up.

    CAB application block was overly complex.

    Their last IOC objectbuilder used reflection every time it did a look up and did not cache the results ike any decent IOC.

    Unity is not a patch on Castle’s IOC again it will play catch up. Why do we need yet anothe IOC when there are severl OS good choices.

    The question should be why would I use Microsoft over open source.

    It is Microsoft endorsed and that is it.

    Can these guys not come up with anything original?

  2. Can I further say if the MS tools were better, I would use them.

  3. Here’s how I’ve seen the two choices implemented:

    1. Buy lock, stock, and barrel into a Microsoft stack. You spend your entire budget on MSDNs and a lot of time configuring everything, but it works together fairly well once you get past their weak initial versions and subsequent breaking changes. For advanced software engineering, you’ll still have to integrate some third-party tools.

    2. Augment basic Microsoft products (Visual Studio, Team System) with Open Source frameworks, unit testing, etc. Less money, more mature, but more integration work and the inevitability that Microsoft will eventually offer a decent integrated replacement.

    Neither one is ideal, though if you have the money and really want your developers to spend more of their time writing code, I’d be inclined to buy as much of the Microsoft stack as you can afford and feel is mature. Either that, or choose your technology base so you can go all open source.

  4. The worst thing about open source is finding staff with relevant experience.

    Why oh why can P&P and Redmond not come up with anything original?

    What have they ever done that was original and not a rehash of an open source product.

    If anybody mentions CAB I will laugh.

  5. I am not sure Microsoft is in the market of inovataion. It is not what they do. They tend to embrace and extend and make it something for their enterprise customers to use. That said there are some pretty cool features in C# 3.0 I have not seen anywhere else.

  6. The CLR is a many wonderous thing that is not in question. I love it. I like the way it is evolving uniquely.

    I do not like the guidance or the tools that come out of Redmond.

    They need a kick up the rear.

    They should be ground breaking not copying.

  7. The big issue for me is simplicity. Most of the OS tools mentioned are faster and get to the point of what you are trying to accomplish.

    The Microsoft tools, while improving, are still over-wrought, complex and slow.

    Subversion is the tool of choice for SCC. Team Foundation Server is getting faster, but it’s server chauvinistic. Svn is (again) lighter-weight, quicker and more aligned with the task at hand. Team Foundation Server is not only an SCC but a complete task management system of SCC is one element. Again, to use TFS you must have SQL Server; SharePoint too if you want some of the other capabilities.

    TeamCity, while not OS, is so much easier to configure than CruiseControl that it’s not funny. Those Jetbrains guys do it right (most of the time). Can you live without ReSharper? I could but why should I?

Leave a Reply

Close
E-mail It