How I handled a new code base
A month or two back I was checking out various validators for .NET. I wasn’t doing MVC and didn’t want to try the workarounds to use Dat Model Validations, but at the same time, I didn’t really want to write a lot of validation code.
As I looked through NuGet to see what was out there, I saw one called FubuValidation. I was drawn to this, because I admire the guys doing the FubuMVC project (and Jeremy Miller is a Chiefs fan so you know it must be good code.)
I downloaded the code and realized one of the attributes I wanted (MinimumLength) was not there. Thankfully it’s an OSS project on GitHub. So I created a fork and set to work to add my new attribute. I was excited because this was going to be my first ever Pull Request on an OSS and it was going to give me the attribute I needed.
I was instantly greeted with the fact that simply loading the solution into Visual Studio didn’t work. There were missing files and assemblies. I figured I just missed a couple files but couldn’t find them on GitHub. As I read and re-read the Readme, I noticed there was a rakefile, so I set out to get the necessary files to make the rakefile build. Still no look. I spent a couple hours trying to get the code to build, but couldn’t.
The next day, I reaced out to Jeremy and Josh Arnold on Twitter and asked them where I could ask some questions. They directed me to their Google group, where I asked my question about building Fubu Validation.
Thankfully, those guys were able to get me up and running in now time. Turns out I needed a newer version of Ruby than what I had.
I took a couple things out of this experience. First, it helps to be nice to the OSS guys. I didn’t go in “Guns blazing” complaining about needing Ruby, or telling them their code was broken. I asked a question, explained my situation and took their advice.
Secondly, I gave them the benefit of the doubt. That is, I assumed the project did normally build and run. I don’t always do this, sometimes I assume the worst, but in the end, it usually shows people that I’m a fool. After all, what’s more likely, that an active project on GitHub (which is written by developers who are working on several projects) doesn’t actually build and run? Or that there’s a piece of information that I’m missing, either because of miscommunication, or because I ignored something?
I hope in the future that when I come to more new code bases, I’ll give those code bases the same benefit of the doubt that I did FubuValidation.