Adventures in OSS

I’ve always been a fan of OSS, but being a MS developer made me hesitant about OSS (kind of).  While I’ve used OSS, I’ve never customized OSS since I felt MS would eventually incorporate OSS into their stack.  However, my love of NUnit and DRY pushed me into creating an addin for NUnit.  I thought I’d share my experiences extending NUnit.

Problem

I was spending a lot of my day either using SOAP UI or manually crafting WCF data contracts to troubleshoot defects, so I wanted to minimize my pain.  I asked myself why I was continually violating the DRY principle I value so much.  This epiphany led me down the path of customizing NUnit, so I could spend more of my time on the “fun” aspects of my job.  I thought I’d share my experiences other developers’ benefit.

Solution

In order to alleviate my pain, I reviewed the NUnit documentation to see whether an existing implementation met my needs.  As expected, NUnit doesn’t provide a native mechanism to deserialize an XML file into a test parameter.  While I think the NUnit documentation is very good for NUnit users, I think the extensibility documentation is not great.  The extensibility documentation gap was not a surprise for me since most OSS projects’ documentation (as well as most projects) is usually barely adequate.

I stumbled upon the RowTest implementation using parameterized unit tests which was nearly a solution to my problem.  Using the RowTest implementation as a guide, I created a implementation to meet my needs.  However, I encountered problems with NUnit recognizing my custom test attribute.  I didn’t want to spend the time debugging NUnit to determine the root cause, so I went to the NUnit-Discuss user group.

Epiphany

I posted my question to the NUnit user group to figure out what I did wrong.  I was surprised by the quick response I received to my issue (Thank you, Charlie Poole).  Of course, I didn’t understand the NUnit architecture, but Charlie answered my question and really cared about my problem.  I’ve dealt with commercial support throughout my career and I was surprise by the quick and insightful response I received.

Previously, I’ve dealt with the StructureMap user group and I also received a quick response.  While it’s nice to have an 800 number to call when you need a SWAT team to address a problem, I think the passion and responsiveness for OSS projects minimizes the benefits for having of an 800 number.  I hope my OSS support sample size isn’t too small, but the lack of commercial support of OSS projects doesn’t scare me anymore.

Call to Action

Based on my experiences, I think supporting OSS for common good is imperative.  I think infrastructure code should just work and supporting OSS projects is every professional developers’ responsibility.  I’ve decided to make contributing and supporting OSS projects a significant part of my job.  I understand developers are limited by the number of hours in the day, but we need to give back to the community and support OSS in order to advance our craft.  I’ll write a blog about my NUnit addin later, but we all need to support OSS.  If we continually give back to OSS projects, we’ll improve our own skills and allow us to focus on delivering business value.

Tags:

Leave a Reply