Jake Scruggs

writes ruby/wears crazy shirts

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

6 comments:

Anonymous said...

Wow, I really appreciate your clear words !
I can follow your argumentation, completly.
All the best.

Bye
Jo

Mark Wilden said...

Don't be so tough on yourself, Jake! metric_fu was a great achievement and you should be proud of yourself.

tea42 said...

In a way it is too bad. At its peek you probably could have used the metric-fu's clout to bludgeon the heads of developers of the underlying tools to support YAML output formats. This would have made support much easier.

DanMayer said...

Sorry to see you go, I understand maintaining something over a long time especially when your interests move on is hard. To be honest, I also completely understand how HARD metric-fu is to maintain with so many integrations and changing dependancies. Also, your line "now I'm not because I don't need the tools to see the problems anymore" completely resonates with me. Thanks so much for the awesome project, I hope some in the community will help step up to bring it forward a bit. I will try to support it a bit when I can.

Justin Beck said...

I've always appreciated your work on metric_fu... It made me a better ruby developer and a better coder in general. Thank you for that!

OJ said...

For completeness, metric_fu development continues at https://github.com/metricfu/metric_fu