Monday, September 21, 2009

ColdFusion and Frameworks

If you haven't read it yet, I would suggest reading this post by Matt Woodward. Very good points.

Honestly, if ColdFusion has been around for almost 15 years, why don't we have anything that comes even remotely close to Ruby on Rails or Grails? You could make the case that ColdFusion on Wheels and ColdBox are similar in their implementations, but then there are people that swear by Model-Glue, Mach-II, and Fusebox... and then there's Edmund, FW/1, onTap, etc... and those are just the front controller frameworks. If you want the total package, you'll have to wire in ColdSpring, LightWire, Transfer, Reactor, MXUnit, cfcUnit, cfSpec, etc...

Unfortunately, the ColdFusion framework community is so fragmented that I don't think there will ever be a widely-accepted, well-designed, dominant framework - a framework that just works - a framework that some developers might actually confuse with a language, like what happens with Rails(Ruby) and Grails(Groovy). Right now there are just too many smart ColdFusion developers all working on their own versions of the same thing.

8 comments:

  1. IMO there is a huge, although very subtle. distinction between Rails, Grails (and even Django and Lift) and all the ColdFusion frameworks: namely the fact that Ruby, Groovy, Python and Scala are NOT web development languages and they require an infrastructure in order for them to be able to listen, process and respond to HTTP requests. Yes, they do have the libraries that enable the port communication and HTTP messaging, but they are not married to any particular application server or web server. So, those frameworks not only serve the purpose of enforcing good programming practices; they in fact provide a whole infrastructure for dealing with a web environment, something that if any programmer want to do by themselves, it would really take a lot of reinventing not only the wheel, but the brakes, transmission, and a whole lot more.

    This is of course a very big contrast with the nature of ColdFusion. ColdFusion is not a general purpose language that can live outside a web environment; it can't even survive without a servlet container; so all that is left for frameworks to do in CF is just provide some naming conventions, maybe some reusable libraries and a directory structure, which honestly can be done in a thousand different ways in an equally effective manner, hence the multitude of all kinds of frameworks in CF-land.

    So you see, its moot to attempt to draw a comparison between Ruby et al and ANY of the ColdFusion frameworks (even if they are really neat stuff). There is no dominant framework because there is neither NEED nor OPPORTUNITY for one.

    ReplyDelete
  2. One could argue that Ruby was completely useless as a web development platform before the advent of Rails. ColdFusion is productive with or without a framework.

    ReplyDelete
  3. I agree with Oscar. In fact, you can go a step further and make the case that ColdFusion itself is the Java equivalent of Rails.

    ColdFusion is a web framework for Java, in much the same way Rails is a web framework for Ruby.

    ReplyDelete
  4. No need for a framework? ColdFusion equivalent to Rails? No offense, but have you guys ever used Rails? Yeah ColdFusion has some nice features that help increase productivity, but to compare the ColdFusion platform to a well-design, cohesive framework like Rails or Grails is a little bit of a stetch.

    ReplyDelete
  5. @Tony, I think you misunderstood the point. When I said that ColdFusion didn't need a framework I was referering only to the fact that there is no need for a CF framework to do the same type of internal plumbing that frameworks in other languages have to do.

    CF already provides very high level (albeit a bit too basic) "framework" features, like for example the Application.cfc features, custom tags, cfincludes, etc. And yes, CF frameworks do provide an added value and are helpful, however the problems that they solve are more superficial so its relatively easy to come up with multiple alternative and equivalent ways to do the same thing (i.e. directory structure, how do you call the events, how do you handle layouts, etc)

    Saying that 'ColdFusion itself is the Java equivalent of Rails' is about comparing the role of ColdFusion relative to the Java language, and the role of Rails relative to the Ruby language.

    ReplyDelete
  6. @Oscar,

    Ok you've made some solid points I'll give you that. However I still feel that if you take ColdFusion and add in all the various CF frameworks out there, it still doesn't add come that close to the development experience you get from simply installing Rails/Grails alone.

    And as for having multiple alternative ways to do the same thing, I would rather have a standard, consistent, accepted way of doing things. In the end, they all produce the same desired result, but why take the long route? It's true there might be a thousand ways to skin a cat, but there's quite a difference between using a machete and using a butter knife.

    Ok that analogy might not be the best...

    ReplyDelete
  7. Tony.

    I been working with Web Applications since 2000, with CF I started with 5. I been working with other languages like ASP,JSP,ASPX and other ones.

    I never need use a CF framework,in my opinion all is about the software Desing you made. I just try always to made everything Simple as posible. I use desing patterns to complex problems.

    Maybe one framework will be use full in large, very large projects.

    ReplyDelete
  8. Tony.

    I been working with Web Applications since 2000, with CF I started with 5. I been working with other languages like ASP,JSP,ASPX and other ones.

    I never need use a CF framework,in my opinion all is about the software Desing you made. I just try always to made everything Simple as posible. I use desing patterns to complex problems.

    Maybe one framework will be use full in large, very large projects.

    ReplyDelete