Why I abandoned MetricFu

09 Aug 2012

My last commit to MetricFu was March 2…  of 2011. 

So. much. shame.

Since I am throwing in the towel and handing over leadership (perhaps to you), I thought I should explain why I’ve been such a terrible maintainer and why I’m walking away.

Reasons:

  1. MetricFu is a mess.  At some point, with all the submissions coming in, the architecture and testing got away from me.  Now it’s pretty depressing to see crap code quality in an app that is supposed to be about good code quality.  I can not overstate how embarrassing and frustrating this is – mostly because it’s my fault (I let in things I shouldn’t have. Stupid feature blindness).
  2. In 2008, when I created MetricFu, I was fascinated by metrics and now I’m not because I don’t need the tools to see the problems anymore.  Metrics made me better but now I’m leaving them behind:  Selfish.
  3. I’m not a consultant at the moment so the exploratory nature of MetricFu isn’t very useful to me.  I know where the bad parts of town are in my app.
  4. I think metrics can be a great teaching tool, but you can learn all the wrong things if you’re not careful. You can reduce Flog scores without making the app better (Simple: arbitrarily divide up every large method) . Same with code coverage. Even code duplication detection can lead to bad code.  DRY-ing things up in a bad way can often be much more harmful then leaving them moist (perhaps you removed some duplication by creating a crazy amount of indirection – a common problem).
  5. Ultimately, creating software is a craft.  It’s not pure science and it’s not pure art, it’s a combination of both.  MetricFu leans a too little hard toward numbers and that implies a precision we just don’t have. How to get from bad code to good is a very delicate dance between content, form, and business requirements.
  6. Integrating over a dozen meta-code gems is a god damn pain.  The gems that make up metric_fu use code to analyze code (intense meta Ruby) and so they sometimes conflict.  Also since MetricFu mostly uses regexes to parse the (command line or html) output, every change in one of MetricFu’s underlying gems means that MetricFu needs a version bump. 
  7. The last year has been, personally, very busy and difficult for me.

For these reasons I’m going to be stepping aside as metric_fu maintainer – I’ll still be around to answer questions and such but I probably won’t be contributing much code.  If I’ve somehow disappointed or frustrated you because of last year’s neglect then I apologize. Seriously.  I’m sorry.

Want to lead MetricFu? Make your case in the metric_fu google group: https://groups.google.com/forum/?fromgroups#!forum/metric_fu