Choosing a Framework

Published February 25, 2007 on adamfortuna

    Everyone seems to be putting in their $0.02 when it comes to choosing a framework, so I thought I'd toss my change as well. It seemed to start with a post by Brian Rinaldi about how Overthinking Your Framework is a Stalling Tactic . He makes some very good points on this, and the often suggested idea of "making an application in each one, just to try them out”. Sean Corfield agrees, emphesizing the important part is making the decision more than anything else. After watching Brian Koteks presentation on framework agnostic model layers I couldn't agree more on this subject. So what framework should you use? That question really hasn't been answered because there is no always true answer. If you want the most popular framework with the most jobs for it, use Fusebox . According to Indeed.com there are more than twice as many fusebox jobs than model-glue and mach-ii combined.

    " ":http://posterous.com/getfile/files.posterous.com/import-verf/AFrjIefnjFcJltykkjzzHIkJupkcinHpybBavDsIjkdIHrkrdFoqtEguhxgh/media_httpwwwindeedco_wfxbt.png.scaled1000.png

    If you've never used a framework before, it's also more intuitive to learn than Mach-II or Model-Glue (in my opinion at least), and with Fusebox 5 much of that same featureset can be incorparated later in one way or another using lexicons. That's not to say I'm suggesting Fusebox for all situations by any means, but the most used, easiest to learn framework it certainly the obvious first target. Why did I put Ruby on Rails on this chart? Well I'm sorry, it wasn't to be cruel. One thing that Coldfusion seems to suffer from isn't that we don't have a good framework, but that we aren't unified under one as Ruby is. Java has a few huge frameworks (and more than a few small ones), but they also have the numbers to support that many. With Coldfusion however, our numbers are so spread out between frameworks that nothing is gaining significantly. Take a closer look at the time when Ruby On Rails surpassed Fusebox for job postings…

    " ":http://posterous.com/getfile/files.posterous.com/import-verf/lgucgtrBFuEEdencEorCkyjfupaJayCHqberjJBpxkEdEnHIqvzwymmcdavu/media_httpwwwindeedco_tryFH.png.scaled1000.png

    At that time (May 2006) roughly 1 in 4 people using Ruby was also using Rails. For Coldfusion it was closer to 1 in 8. Dig a little deeper into this data and you'll one glaring statistic in this- - 1 in 3 ruby programmers uses a framework! It's probably much more than this actually, as there are surely jobs comming up with "ruby”. "Ruby programming” vs "Ruby On Rails” gives roughly 3 out of 4 people using rails for instance.

    " ":http://posterous.com/getfile/files.posterous.com/import-verf/uskqrtmbtmGBlHdboeokcBACghiinznnHigkesvknpwGjclAxyaslholnkvJ/media_httpwwwindeedco_aqBGf.png.scaled1000.png

    Looking at Coldfusion vs frameworks though, it's a little more one sided…

    " ":http://posterous.com/getfile/files.posterous.com/import-verf/qIJpuxxwfeJdtFgClheCDBJwxswDnEIGeHzgJllouEednrFpoAtphjurkBnn/media_httpwwwindeedco_jkgdf.png.scaled1000.png

    We don't use frameworks; or at least they're not an important enough to put in a job description. It could also be because no Coldfusion frameworks are so confusing that a CF developer would have a hard time learning them. While both are true, based on some of the frameworks surveys I've read the total number of coldfusion developers not using frameworks is decreasing (there is currently a poll in progress at CFFrameworks.com on the subject). Of course the average blog reader is a lot more likely to be using a framework, so this isn't an accurate picture of the Coldfusion community as a whole. From that graph I'd say _ maybe_ 1 in 6 Coldfusion jobs mentions a framework. It's not a pretty sight seeing all that white space, so if you're in doubt about whether or not to use a framework, just pick one. :) Oh yeah, and all those comparisons to Ruby? They were just for comparison of the community as a whole. Coldfusion has a larger base of programmers (although you'd never guess it by the general publics perception of Coldfusion), which makes it capable of supporting both a framework and a non-framework community. There are of course times when using a framework is just needlessly complicating things, which CF edges out the framework-driven approaches of just about any language in it's ease of doing this. It's also a curse if you never take the time to learn the skills to make the next step. I think John Ashenfelter put it best in his presentation at the Frameworks conference (paraphrased).

    The debate between using a framework and not using a framework was over in the rest of the programming world long ago. Frameworks won.