- FW/1 - The Invisible Framework
- ColdFusion and the Open Source Landscape
Barring technical difficulties, it will be broadcast and recorded via Connect - details on the BACFUG website.
Please RSVP so they can estimate pizza and beer (and get you on the security list).
I started the spec on July 17th and "finished" it on July 20th. The spec was titled "New Lightweight Framework". Here's what it said:
Goal: Create an extremely lightweight convention over configuration framework.That's it.Considerations:
Caveats:
- Leverage Application.cfc and lifecycle
- Automatically call controller, model, view if appropriate
- Autowire from bean factory?
- Application.cfc extends org.corfield.X
- Programmatically set everything, no XML
- variables.framework struct to specify everything
- variables.framework.action is URL / form variable for the, er, action, defaults to 'action'
- variables.framework.home is home action, defaults to main.default
- fold URL / form into request.context
- ?action=section.item maps to controllers/section.cfc:item() then models/section.cfc:item() then views/section/item.cfm
- implicit layouts based on actions
- Should controller / model be instantiated every request or cached?
- How should cache be refreshed?
I wrote the first version of FW/1 on July 19th. You can see the original 381 line framework.cfc on RIAForge.
If you click 'Return to SVN History', you'll see the entire history of framework.cfc - with the majority of changes since early November being Ryan Cogswell's awesome contributions. One of the reasons I love version control (and why I was so pleased to see Ray add source / history browsing to RIAForge!).
So there you go: an insight into my design process!
There were about 80 people there - great to see so many folks interested in FW/1!
The next FW/1 preso will be at BACFUG on February 17th.
In addition to lots of great usability improvements, I'm very pleased to see that they've switched the Mura admin from Fusebox to FW/1:
NEW Admin Framework - We're switching to Sean Corfield’s FW/1 (away from FuseBox) to improve performanceYou can read more about Mura 5.2 on their blog!
ColdFusion has always been about simplicity and "getting stuff done". I created Framework One (FW/1) in that same spirit: with just one file and some simple conventions, you won't even notice you're using it! If the learning curve, code bloat and XML have put you off other frameworks, find out why developers are saying "FW/1 is perfect" and how you can use it to just focus on your code, be productive and stop worrying about "the framework".
- January 12th - NYCFUG - Javier Julio
- February 4th - CFMeetup - Sean Corfield - to be confirmed
- February 17th - BACFUG - Sean Corfield
- April 22-24 - cf.Objective() - Sean Corfield
- June 19-20 - D2WC
Once I find out more details about Scotch on the Rocks 2010, I'll submit a FW/1 talk there as well.
As that blog entry says, thank you to everyone who has contributed to the creation of Framework One!
Here's to a lot more FW/1 applications in 2010 - and coverage at user groups and conferences!
I'll be making one or two additional tweaks tonight and then declaring a 1.0 release for the New Year!
Coming soon: two new documentation sections covering how to design applications (some general MVC and OOP guidelines, as well as some FW/1 specifics) and how to migrate applications to FW/1 (both from legacy, procedural code and from other frameworks).
Ryan's recent additions to FW/1 include a number of enhancements that make the framework more robust and more flexible, especially around error situations or accidental misuse of certain framework features - which all help developers be more successful with FW/1.
The latest enhancement from Ryan is the ability to string together multiple FW/1 applications as "subsystems" so that URLs can take the form app1:section.item and app2:section.item, allowing for modular construction of large, complex applications. New modules can just be dropped in alongside existing modules and seamlessly integrated! Nice work Ryan - thank you!
As the FW/1 mailing list has grown to nearly 80 members since I launched the project in late July and several people have sites in production based on FW/1, I'm going to start blogging more here as I feel it is now realistic to start promoting FW/1 as a serious option for CF developers at large who are looking for a framework that provides structure without getting in the way.
I'll be submitting talks to cf.Objective() 2010 and CFUnited 2010 that will introduce FW/1 to a larger audience (if the talks are accepted, of course)!
I'm planning to complete the Reference Manual soon and make another pass over the Developer's Guide and examples. I hope to declare a stable 1.0 release fairly soon!
That's where you'll also find the forums, wiki, source code repository and bug tracker. The blog also has a link to the new mailing list if you'd rather use that instead of the forums.
What is FW/1? Read the RIAForge project description and introductory blog post there.
Why create FW/1? Again, read the project blog on RIAForge!


