Introducing Framework One

The first question on everyone's mind is probably: why on earth would you create and publish yet another MVC application framework?

I've become increasingly dissatisfied with the application frameworks out there. They're big, bloated, complex and, with one or two exceptions, they require XML configuration in some way or other.

A discussion on the recently created ColdFusion OO mailing list (started in the wake of the verbal sparring match between Brian Kotek and Hal Helms), saw me admit this... ColdFusion's simplicity was being buried in the complexity of application frameworks and there was no simple on-ramp. Even Fusebox, the mainstay of ColdFusion application frameworks has become far too much for simple applications.

The second question is probably: why did you choose that name?

Years ago, I worked with a programming language called PL/1 (Programming Language One) which was intended to be the "one language to rule them all", so to speak. I wanted to create a very small, simple framework. Something that involved only one core file if possible. Once I'd built it, I needed a name for my one file framework... FW/1 seemed like a good pun.

The third question is going to be: why should I care and why should I use it?

If you're happy with an existing framework, keep using and feel free to ignore FW/1. If you haven't picked a framework yet because they all seem so complex, maybe FW/1 is for you. If, like me, you're tired of framework bloat, try FW/1 and give me your feedback. I'll be posting some examples as blog posts as well as building out the project wiki over the coming weeks.

I built FW/1 in a few hours. It's a single CFC. It's 400 lines of code - including comments. It's entirely convention based. It supports controllers (CFCs), services (CFCs), views (.cfm) and layouts (.cfm). URL/form actions take the form section.item and FW/1 will look for section.cfc (controller and service) and section/item.cfm (view and layouts).

It optionally supports your favorite bean factory (ColdSpring, Lightwire and any other IoC container that implements getBean() and containsBean() methods). If you use a bean factory, it will autowire your controllers and services - or your controllers and/or services can be managed by the bean factory.

Comments
Ben Koshy's Gravatar Out of curiosity -- when would you recommend one to use one of the more complex frameworks over FW/1?
# Posted By Ben Koshy | 7/20/09 4:54 AM
Todd Rafferty's Gravatar @Ben: Probably stability since the existing frameworks are older / thoroughly road tested by now.
# Posted By Todd Rafferty | 7/20/09 7:02 AM
Sean Corfield's Gravatar @Ben, right now stability is definitely one reason as Todd says (FW/1 will become more robust as more people use it :)

FW/1 doesn't provide for "plugins", "interceptors" or fine-grained control over the request lifecycle - deliberately. It's meant to be a simple framework that leverages the built-in Application.cfc lifecycle and some conventions to let folks get going quickly without needing to worry about "wiring".

I'd say FW/1 is essentially "feature complete" so anything it doesn't provide today is probably ought of scope for its future too.
# Posted By Sean Corfield | 7/20/09 1:58 PM
Steve Withington's Gravatar @Sean, thanks for sharing this project. while i appreciate the features, time, etc. other talented developers have given to frameworks, most seem to be feature rich yet overly complex. in order to use most of the frameworks today, it seems like you need to attend a 2-day course on the framework just to get started! ugh.
# Posted By Steve Withington | 8/28/09 2:26 PM
ziggy's Gravatar what about cfwheels compared to this? still too bloated, you think? sounds like they have similar complaints with other frameworks.
# Posted By ziggy | 10/11/09 2:49 AM
Sean Corfield's Gravatar @Ziggy, cfWheels is a "full stack" framework - which is definitely bloated compared to FW/1.
# Posted By Sean Corfield | 10/11/09 4:24 AM
Rodion Bykov's Gravatar I'm impressed by simplicity of FW/1 and accompanying tutorial. Learning goes from simlest "Hello World" app with small increment of complexity on each step, and results of previous step are making grounds for next one. I was able to start with FW/1 within a hour. Will definetely watch this framework evolves, as my beloved Fusebox seems stopped its evolution.
# Posted By Rodion Bykov | 11/27/09 1:27 PM
Bharat Patel's Gravatar I m working with coldfusion last 1.7 years and i never work with any framework i m using mvc pattern. i want to learn FW/1 from beginning. Give me help.. Thanks
# Posted By Bharat Patel | 1/1/10 11:54 PM
Sean Corfield's Gravatar @Bharat, join the mailing list and read the FW/1 wiki to get started!
# Posted By Sean Corfield | 1/2/10 12:33 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.5.006. | Protected by Akismet | Blog with WordPress