A framework post, but without opinons
As a semi active blogger in the community I tend not to worry about what I post, but this one I am. Not cause its highly opinionated but because it deals with frameworks, which means there a good chance of flame wars and trolls in the comments, please don't.
So, to the post....
Over the last (lets says few) years I have been heavily into frameworks for my apps. Currently I have Fusebox 2,3,4, and ModelGlue 1,2(Unity) applications out there in live environment all running fine (I know, I know no Mach-ii, maybe in the future). But recently at work I was asked to complete 2 small project, and for both I dumped the frameworks and went with just Application.cfc, quasi OO components, and one with Coldspring. Both projects run amazingly, without the need to process and myself manage quite a few core files (except for the CS project). Don't get me wrong, I'm not in an environment were every millisecond counts, but it's nice when your app executes so quickly with so few files in the debug.
This got me thinking though who is running what out there and for what reason. I can say the my Fusebox 2 app I did for structure when I was starting out with CF, Model Glue I used for the next logical step after FB4 and getting into a more OO style programming. Then the reason for dumping them all for Application.cfc is speed and ease of use, plus to get my head fully around the Application.cfc template and its workings. Has anyone else stuck with a framework for a project and realised it was overkill, or either gone the other way and realised that a framework could of saved the live :o)
n.b. I'm not dumping frameworks in anyway! They have a great purpose which for me work fine, don't see me dumping them for two small projects as anything else that just learning!
I got stuck on FB2/xFB for ages (the thought of FB3 and its core files still makes my blood pressure rise) and I've recently been looking at MG (not unity) with Reactor, but I know some people swear by not using frameworks at all.
Personally, I need all the help I can get structuring my apps so that its easier to maintain when I come back to it later, but for small stuff it just as easy to not bother with a strict framework - it just adds unneeded complexity.
At work, we will start working on a project soon that initially we thought would be good for a framework. We realized that for what the application needs to do (which is kind of be its own framework), none of the community supported frameworks was a perfect fit.
I've played a little with FB3, M2, MG and I've found that my home rolled framework better fits my use case as I only really have one application and just use it to generate hundreds of sites (it is a software product line approach), so having a framework optimized for my exact use cases with just the right design patterns and not a single feature I don't need is worth the hundreds of hours I've spent on it.
I think it is really valuable to play with community frameworks and to look inside them, and if they fit well for your use case, go for it. But I don't think there is anything wrong with rolling your own framework that you use consistently as long as you can sit down and defend each design decision you made.
I think the reason that not using a community framework gets such bad press is that it is very easy to do a horrible job if you don't know what you are doing - my first few attempts were pretty lame.
There is also the argument that community frameworks are better documented and new developers may get up to speed with applications written in them more quickly.
Again, as with everything "it depends" :->
I just put together some questions I'd ask of anyone putting together their own framework. I actually am working up my own framework (whether I'll use it or a community one remains to be seen), but I think these are a fair set of questions anyone should ask themselves before moving away from the community frameworks.
Trying to make the point that it IS OK to create your own, but you gotta understand what you're gettig yourself into.
Any (non flame) comments much appreciated as I think we really need to get over all the silly framework flaming and replace it with intelligent heuristics that developers can use to make more informed decisions.
Anything you'd add to or remove from the list?
http://www.pbell.com/index.cfm/2006/10/28/Question...
Initially I thought I'd write just a two page app - one page for the ballot form and one page for the voting results. But as I thought about just what I needed to write this, I realized it would be just as easy to edit the build.xml file that came with sample application for Model-Glue: Unity, run ant and then add a couple of scaffold tags and go from there. Edit the controller to add the custom validation. Edit the view page to layout the ballot form in a more intuitive way. Add the voting calculation to the controller. That was about it.
Now I have a good basis for future enhancements, well-structured, easy to maintain. I'm glad I resisted the temptation to just hack together a two page application!
I'm a strong advocate of frameworks but of *all* frameworks - I believe a well-designed model can be moved between frameworks easily and that views are also, for the most part, framework-neutral as well.
I think people need to get over any stigma they feel is attached to any given framework and treat them simply as tools to help them get their job done faster.