An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

The State of OOP and Frameworks in ColdFusion

March 14, 2006 ·

Some interesting reading on a couple of blogs today, post-cf.Objective(). Nathan Strutz expounds on the state of object-oriented programming in ColdFusion and Ryan Guill responds with a post focused on frameworks that answers some of Nathan's points. Nathan makes two predictions that I agree with:
  1. We'll see more integration between frameworks
  2. The average developer will use a framework (or maybe more than one)
I think the first point speaks to the growing maturity of the frameworks as they all make sure that you can pick and mix solutions to best address your problems. The second point speaks to the growing maturity of the ColdFusion community itself - and the expectations that will be placed on developers to build robust, maintainable software. Nathan thinks there are three things that we need in order to get there:
  1. A central source of approachable learning material
  2. Scaffolding a la Ruby on Rails
  3. An uber-framework as the One True Way to build applications
I don't think we'll ever have one, single source of material but for getting your head around MVC and OO design I'd point to the Mach II Development Guide (despite the name it has a lot of generic MVC / OO stuff in it) and Dan Short's recently created OO Glossary. I'm not a huge fan of scaffolding, to be honest. I know it can get you up and running quickly but I don't believe we'll really see a one size fits all approach to UI construction. That said, yes, scaffolding would be very useful for prototyping and I wouldn't be surprised if one or more of the frameworks added something in that area soon. As for the uber-framework... no, I don't think that will happen and I don't think it should. I don't believe there is One True Way to build applications and I think it's a mistake to go down that rabbit hole. One of the commentors goes so far as to suggest Adobe should create that One True Way and I think that would be a terrible idea! No, we need the variety, we need to be able to select our tools as needed for each given project. In Ryan's follow-up post he makes the very important point that we should all be focusing, first and foremost, on becoming better programmers so that we can make informed choices about how to build our applications.

Tags: coldfusion

14 responses

  • 1 Sami Hoda // Mar 14, 2006 at 1:19 PM

    Couldn't agree more. I'm glad a conference like cfObjective was able to get this sort of talk started.
  • 2 tony of the weeg clan // Mar 14, 2006 at 5:42 PM

    ive started the trek with ray camden and his path through his blog series and am learning model glue with him. trouble is, i followed the instructions, and for the life of me i cant get past step one :(
  • 3 Teddy Payne // Mar 15, 2006 at 8:27 AM

    We will have the "One True" way when we only have the "One True" internet browser.

    I am not trying to digress.

    We all have reasons in becoming application developers. If there was only way to solve a problem, I feel that developers would be confined and creativity would be a trait of the past.

    Application development is ever changing because the communities are always seeking ways to find a way out of the "box."

    "Give a programmatic boundary to a developer and he/she will bang his/her head against it until there is a hole."
  • 4 Adedeji Olowe // Mar 15, 2006 at 8:51 AM

    I don't think we would or should have one "One True" way of building applications.

    For one, a way to build application is a reflection of the developer's mind. Different gurus tend to prefer different frameworks and they still deliver!

    And two, as long as a framework delivers, there is absolutely no reason to try out all fancy ideas of how to build applications.

    Remember that the 'Big Picture' is to deliver superb applications faster and cheaper. The end user doesn't really care about the framework. For example, people love Firefox not because it is open source but because it is free, good and stable.
  • 5 Gary Herman // Mar 15, 2006 at 11:35 AM

    I agree that "Ont True" framework is not something we should strive for as a community. Rather the influx of multiple frameworks will drive the ability for Cold Fusion developers to gain more ground over other development platforms. Different frameworks suit different developers and it's rather essential that some frameworks keep the barrier to entry low for newbie Cold Fusion programmers. The worst thing that could happen is that we lose the simplicity that Cold Fusion has elegantly brought to our community in an effort to establish "One True" framework.

    The diversity here is the key that will allow all kinds of developers to open the door to Cold Fusion and allow this community to thrive. I do however, look forward to the 2.0 versions of current frameworks such as Mach-II - my hope is that these new versions will make it even easier for large teams of experienced and in-experienced programmers to work together...!
  • 6 Hans // Mar 16, 2006 at 9:48 AM

    "I don't believe there is One True Way to build applications and I think it's a mistake to go down that rabbit hole."

    On the flip side, there's a reason the world didn't want both VHS and Betamax--even if both had unique strengths.

    There isn't one true way to build web applications in Ruby either. However, having Rails as the standard framework for building web apps in Ruby works to unite Ruby developers and makes Ruby feel much more approachable. The entire community appears to be behind the standard. (Fusebox--regardless of what we may think of it as a framework--provided a similar benefit to the CF community for years.)

    While I agree there isn't one true way to build apps, a single base framework still has many benefits... especially in a community of our size and for otherwise approachable languages like CFML.
  • 7 mike cohen // Mar 16, 2006 at 7:37 PM

    it's sad to see the ColdFusion community going down the same misguided path that the cool kids of Java are only now recovering from.

    discuss.joelonsoftware.com/default.asp?joel.3.219431.12
  • 8 Sean Corfield // Mar 16, 2006 at 9:58 PM

    I see you're missing the point as usual Mike. Perhaps you need to look at where things like ColdSpring and Reactor are different to what you have in Java? Perhaps you need to embrace dynamic typing?
  • 9 Mike COhen // Mar 17, 2006 at 4:58 AM

    What point am I missing exactly? The ColdFusion community has its head up its arse right now with all these frameworks. ColdSpring is the poster child. Porting a Java AOP framework to CF? Really, I don't think it can be said any better than that guy on the Joel site said it.
  • 10 Sean Corfield // Mar 17, 2006 at 8:57 AM

    Mike, you repeatedly comment here that ColdFusion is a cheap rip-off of Java and that CFers are just doing Java Lite - but you haven't taken the time to actually learn about the new frameworks in any depth to see how they are different and how they work better in a dynamic language.

    You admitted here that you had only written one Mach II app, yet you felt qualified to criticize Mach II. I'll bet you haven't actually used ColdSpring or its AOP machinery?

    If you can't post something constructive, don't post. You're not going to influence anyone by insulting the ColdFusion community...
  • 11 Nathan Hunsaker // Mar 17, 2006 at 8:57 AM

    I agree we'll see more developers using frameworks but I don't think the average developer will use them unless they are forced to. If they are developing solo, maintaining old code, limited by older servers or creating small apps then I don't blame them. This is the difference between average and great.

    I hate the idea of having "one true way" to build an application, I want to do things my way and use any combination of Mach-ii, Fusebox, Modle-Glue, ColdSpring, Tartan, Reactor, etc. Frameworks (Mach-II, Fusebox, Modle-Glue) need a common way of supporting plugins (ColdSpring, Tartan, Reactor).
  • 12 Sami Hoda // Mar 17, 2006 at 10:01 AM

    It's the developer, not the platform or framework that actually makes a difference. I think sometimes we forget that.

    And it starts with a bit of humility.. knowing that you can't possibly code your way, and have it be the best way every time.. that others will at some moment in time have to work off your code... that others out there have found solutions to common problems (read: design pattern), and have found ways to standardize that do NOT get in the way but are based on solid software engineering foundations... then you know realize how and when to use frameworks.

    I know a lot of people who like to quote Joel. If your a successful entrepreneur, high-level experienced programmer, and ran a successful company where you can control standards, then maybe you to can post an article stating you hate frameworks. Saying "Hate" in itself shows a lack of understanding. Saying "I dont like frameworks because it didnt fit my need in this scenario." would have been better.

    But to say that his words apply to all well to do programmers is quite non-sensical. To assume that the JAVA frameworks paradigm is the same as ColdFusion is also nonsensical.

    JAVA is complex. There are hundreds of frameworks, many trying to reduce the complexity and standardize one way or the other. On the other hand, CF is easy, and maybe all too easy, and here frameworks provide a standard for easing complex, however beneficial in the long term, development. It may make sense to criticize JAVA and the many frameworks since everyone has one of their own, but in CF, where "anyone" could literally program, it makes sense to appreciate the frameworks that help take those novice programmers to the next level.

    JAVA, CF, Joel, Frameworks... if stop looking at them and look at ourselves.. and how CF needs to be taken to the next level, then we can appreciate what others have to done for us to help us raise our game.

    -Sami
  • 13 Mike Cohen // Mar 17, 2006 at 10:58 AM

    Sean, I comment here that the proliferation of MVC frameworks in CF is following the same misguided path that the framework geeks in Java went down. Complexity for complexity's sake. Yeah, I've only done one app in mach-ii. How many does it take? Yep, never used ColdSpring. I've used Spring, and truth be told, DI of service object singletons is really of limited benefit. The BeanFactory's primary benefit is for testing outside the container - not nearly the problem for CF that it is for Java. Basically, ColdSpring is just more intellectual masturbation. And CF devs would be wise to ignore it. And don't say anything that's not constructive? Gosh, you sound like the Bushies now.
  • 14 Tom Minderson // Jul 25, 2006 at 5:00 PM

    I think "helpers" are better than big all-encompassing frameworks. Helpers are "micro-frameworks", such as a function or classes that helps you quickly build a pull-down list or a form row. Helpers allow you to easily abandon or rework them if they do not suite your needs. You date them instead of marry them: no-long-term commitments, no extended family to deal with, etc. You can trade them and tweak them.