This project is intended to show a comparative, side-by-side analysis of several open-source ColdFusion application frameworks. My hope is that this project will show mostly how these frameworks are fundamentally similar, although through the process of elimination I also hope to show what features or implementations of each framework might be unique and the relative strengths of each.
A post on Brian Rinaldi's blog originally inspired me to start this project. In his article Brian had mentioned programmers putting off learning frameworks in the hopes that "one true framework" might emerge as the "champion of frameworks". (Which isn't even remotely likely.) My initial response was to write a blog about general indecisiveness. But moreover what really encouraged me to start this project was that the advice frequently given to people who've never used a framework before is to "build a small application in each", which is kind of a "sink or swim" approach. It's difficult, confusing and time consuming. After that I started working on this project as a means of giving folks a "jump start" into the world of frameworks. The hope is to show that an understanding of any framework leads to a general understanding of all frameworks. Thus the decision "to framework" is much more important than the decision "which framework" because the skills you learn for one can be applied to others.
These ports are for demonstation purposes only. I make no warranties as to their quality or suitability for purpose.
Critiques and other comments may be directed to my email.
S. Isaac Dealey - 25-May-2008
NOTE: Please take a minute to participate in this brief survey. The results will be published back to the broader ColdFusion community so everyone will benefit. :)
UPDATE (26-Sep-2008): Thanks to Adam Tuttle for pointing out that the introduction / overview sections of this report were a bit rough around the edges. I've added a paragraph to the introduction explaining the history behind why I started this project and linked back to it from the comparison overview as well.
I chose to port Ray Camden's Galleon Forums application (license) for several reasons. It's already written, it's relatively small, it's popular, it'a a real world application (as opposed to cfpetmarket.com) and there was already a port of it for the ColdBox framework from the framework author Luis Majano. (Note: The ColdBox port was originally created with Galleon version 1.7 and has been subsequently semi-updated to support the database changes in Galleon 2.2 - as a result this port may include some unexpected inconsistencies.)
I chose these frameworks merely because I perceive them as being the most popular frameworks for ColdFusion (with the exception of the onTap framework I authored). I have no particular affiliation with any of these frameworks except the onTap framework and would be willing to include other frameworks as well.
The frameworks I chose are
These are all open source frameworks and distributed under different licenses.
If you have another framework you would like to see ported, email me at firstname.lastname@example.org or you can email me a zip of your own port for inclusion.
If you send me a zip archive, please be sure to use the unmodified copy of Galleon 2.2 included with this distribution as the basis of your port to ensure compatibility (they all use the same database) and include a complete copy of the unmodified framework core distribution.
I also considered porting Galleon to the PLUM Framework but its license prohibited me from including it. Specifically the PLUM license doesn't allow me to distribute PLUM.
Inversion of Control (IoC) frameworks like ColdSpring and Lightwire serve the specific purpose of instantiating and caching business objects. While there's nothing wrong with IoC frameworks (although I don't prefer them), this project is intended to compare less specific "application frameworks" which usually boil down to creating a Model-View-Controler (MVC) architecture. IoC frameworks are a different and more specific model focused on just the model or "domain model" aspect of an application. IoC would normally be responsible instantiating business objects, but since Ray's Galleon Forums already had code for performing that task, porting to an IoC framework would have simply been more work outside of my scope.
If you'd like to see IoC frameworks compared, feel free to email me (see above) with your port of Galleon using your favorite IoC framework. Once I have two or more of them, then I'll include a separate side-by-side comparison of IoC frameworks in this distribution.
Download the Galleon Ports code here.
View the comparisons article here.
SQL Abstraction Library