Open Source provides Accountability
By Andrew Sterling Hanenkamp on Tuesday, October 23, 2007
I’m a big fan of Open Source software. I began to be a fan of Open Source (or Free Software as it was more generally known back in those days) because I feel that it is not right to “steal” software. When I started towards Free Software, I did so because I was a rather poor college student and I couldn’t afford much of the commercial software available for various tasks I wanted to do. When I found out that much of that software was available for free as long as I learned to use Linux (and I really enjoy trying new things) I wouldn’t have to worry about “stealing” anything to do what I wanted to do.
I switched to Linux, started using free tools for almost everything, and now have come to love Free Software for many of it’s benefits. In my own software development, I often release my work under a Free Software license not because I necessarily think anyone else might find it useful but because the quality of my work increases when I do it. Open Source provides accountability.
This accountability may not work for everyone, but it certainly works for me. I am not a person who wants other people looking at my work and saying to themselves, “That’s a piece of @#$%! It has no documentation. It has a horrible interface. It engages in bad design practices.” The reason for this is two-fold: (1) I am a lot more concerned about appearances than I like to pretend and (2) I use my Open Source code as a resume enhancement and if I put out crap, I can expect my resume to look like crap.
Therefore, I often seek ways to take a program I’ve written for myself or for Boomer Consulting and see how I can abstract that code out so that it could be used in a my general solution. When I do so, I then go through all the modules and add documentation, I am more careful about adding inline comments to explain what it’s doing, and I generally work harder at making my code reusable rather than hacking together a quick solution that just gets the job done. And, perhaps most importantly, it forces me to write extensive test cases to make sure that the code actually works rather than just performing the trial-and-error process one time around and then never verifying that a feature works again until it breaks in production.
In the short term, this often has the tendency to make my life harder (even significantly so), but in the long term, my it means I have to spend less time trying to fix my own crappy code because I was lazy about how I put it together initially.
Anyway, that’s just one more benefit of publishing my code as Free Software.
Cheers.