I'm just ranting. Don't take it too seriously, and feel free to tell me that I'm wrong.
We're working with FitNesse as a means of automating our acceptance testing. I'm pretty happy with the way its going so far, but we've bumped into some annoying crap around lack of support for .Net idioms like enumerations. One thing is very obvious, FitNesse and Fit itself is a Java-centric tool. The original tooling was written I believe in Perl, then ported to Java. The .Net version is a further port of the Java version and it shows. There are far more extensions for FitNesse in the Java version (I'm thinking about FitLibrary). There is also vastly more support, documentation, and samples for working with the Java version. Like so many other tools, the .Net version seems to be an afterthought.
My shop relies very heavily on open source development tools. Almost every single tool we use is a port of a previous Java tool. Sometimes that's fine, but it often means that the tools are a little awkward because they aren't completely adapted for .Net idioms. It depresses me somewhat that development innovation seems to be reserved for the Java and Ruby worlds, with only a trickle down effect for .Net tools. Seriously, how many truly innovative open source projects came out of the .Net community?
I'm not enthralled with the Ajax.Net tool, but I'm excited about the AJAX activity and buzz just because it's being led by .Net developers.
Yeah, I know that Visual Studio Team System is coming out soon as the answer to all development needs. Here's the deal though, the VSTS tools may not be any better in many cases than the existing (free) open source tools. For another thing, does the majority of the .Net community realize that a lot of the VS2005 improvements (refactoring, unit testing and build script integration) are merely creating a rough parity with functionality that's been in IntelliJ and Eclipse for years?
I honestly think the MS would have served the .Net community better by embracing the open source tools inside VS.Net much the same way that IBM and JetBrains has done be creating JUnit and Ant integration directly into their IDE's. I get that Linux is a real threat to MS, but NUnit and NAnt were not. The open source community filled some very major voids in the .Net tooling space that MS ignored for quite some time.
Just for fun, here is a list of hand me down tools we use. Just to drive the point home.
| .Net tool |
Java forebear |
VSTS or MS analogue |
| NUnit or MbUnit. The bright shining star of .Net tools because it's arguably better than JUnit. The first version was a straight up port, the second version that we use was ".Nettified." MbUnit is genuinely innovative. |
JUnit |
VSTS unit testing tool. Everything I'm hearing so far says that the VSTS unit testing is considerably slower to execute than NUnit/TestDriven.Net. That matters. |
| NAnt |
Ant |
MSBuild contains a subset of the NAnt functionality. It'll be enough for many teams and the integration with the IDE is cool. I think that many teams will use both tools. We depend on a couple of NAnt tasks that are not included in MSBuild. |
| CruiseControl.NET. CC.NET has grown up considerably in the two years I've been using it. I think CC.NET might actually be better than the original. |
CruiseControl |
None. You can schedule builds with VSTS, but no true continuous integration support IMO. |
| NMock |
JMock |
None |
| log4net |
log4j |
EIF or the logging block in the EntLib. I hate the EIF, and log4net gets the job done just fine. |
| NHibernate. It's okay, but the Java version is obviously more mature by far. |
Hibernate |
None. I'm still irritated over the ObjectSpaces mess. The EntLib has a new Data Mapper block, but it's mapping against DataSet's. DataSets! The P&P team is actually recommending DataSet's as a business domain! |
| FitNesse / NFit. I just think that NFit needs to be ".Nettified" to make it a little smoother. We might try to hook on as committers to the project to do this. |
Fit |
None |
| StructureMap (Dependency Injection). Also Spring.Net, Castle (EDIT - inspired by the original Apache Avalon, which probably influenced PicoContainer to some degree), and PicoContainer.Net. I wrote StructureMap from scratch in C#, but I was influenced somewhat by the Pico and Spring teams. They broke the ground. |
Spring and PicoContainer |
EntLib is introducing some limited DI support in an upcoming version. |
Thanks you for listening. I feel better now.