Thursday, June 23, 2005

Frameworks: Let's All Take a Deep Breath ...

The recent discussions around ColdFusion frameworks, specifically the Mach-II vs. Model-Glue debate is, in my opinion, getting a bit overly frenetic and verging on just plain silly. Recent posts on CF blogs such as Mach-II is Dead! and Is Mach-II an Ex-Framework? (which is admittedly just a link over to the "Mach-II is Dead!" entry but certainly adds fuel to the fire) have the tone of a bad disaster movie from the 70s. The plane's not crashing into the ocean, the skyscraper isn't burning down, there's no earthquake that's going to make half of the United States fall into the ocean. Take a deep breath, relax, and let's discuss all of this rationally for a moment.

Don't get me wrong, I'm a big framework proponent, I like Mach-II, I like Model-Glue, and I think there are great benefits to developing with frameworks. Joe Rinehart, Hal Helms, Ben Edwards, and everyone else who contributes in one way or another to this aspect of the CF community all deserve a round of applause in my book. Where I think the recent discussions have jumped the shark a bit is because they're beginning to ignore why we use frameworks: to build applications. When you spend more time thinking about frameworks than you do using them to build applications, something's a bit out of whack in my mind.

Mach-II is a great framework. Yes, it's stagnated a bit compared to Model-Glue (which is younger, therefore you'd expect more activity surrounding it and more frequent updates), but it's not as if it's going anywhere. Mach-II isn't suddenly going to evaporate and render all Mach-II apps null and void. If you like Mach-II then by all means use it. The framework code doesn't die or go bad like that stuff in the back of your fridge that you forgot about. It will continue to work for a long time to come. There is of course the issue with finding someone with Mach-II skills if they have to take over an application written with Mach-II, but it's not as if a competent CF programmer with OO skills won't be able to figure out Mach-II if they have to.

Model-Glue is also a great framework, it has some nice features Mach-II doesn't have, it eliminates some of the complexity of Mach-II, and I like it a lot from what I've done with it so far. Phrases associated with it like "wildly popular" tend to be a bit skewed in my mind, however. Reading blogs tends to provide a skewed perspective on the world anyway, and nowhere in the CF world has this been more true recently than the framework frenzy. Let's try to keep this all in perspective.

The other thing these sorts of discussions do is make people scared to jump in and work with frameworks because they're afraid they will make a "wrong" choice. I can just hear people saying, "Phew! Thank god I didn't waste my time with Mach-II! It's DEAD!" Utter nonsense. Whether or not you choose to write a particular application using a given framework is something you have to ponder a bit of course, but this whole discussion is just getting blown WAY out of proportion in my opinion.

I understand the point of view that Mach-II's future is a bit in question, but it's a solid framework that has a lot of great benefits, and until a new version of CF breaks it (which it may or may not), it's going to work fine. If you think Mach-II has stagnated too much then don't use it, or take the ball and run with it (meaning pick up where you see Mach-II as having "left off" and roll your own version).

I also applaud Joe Rinehart for his attention to the small-but-growing (again, keeping this all in perspective) Model-Glue community, and I greatly appreciate the framework itself and his responsiveness to its users. ColdFusion needs as many people like Joe in the community as we can get, and Model-Glue is admittedly becoming my framework of choice these days. My point is that I'm not trying to bolster Mach-II or take away from Model-Glue; I've just been laughing out loud when I've read some of the blogging about all of this lately.

I've written a lot of Mach-II applications since it came out. Am I going to worry about them breaking because Mach-II is "dead" or feel that I need to rebuild them all in something else? Of course not. They run great, they're easy to maintain, and they'll continue to run great until some fundamental change in CF breaks Mach-II (which it can potentially do to ANY framework remember), which may or may not even happen.

Will I write more Mach-II applications in the future? Maybe, maybe not. The jury's out on that one. I'm still getting up to speed with Model-Glue and I like it a lot, and given the tremendous support Joe's giving to it it's definitely an attractive framework, particularly for people with Mach-II and OO experience. However, if in some particular case Mach-II seems to be a better fit for one reason or another, I'm not going to avoid it just because it's falling out of favor with some folks. If I was worried about using the most popular framework in CF, I'd use Fusebox exclusively (and as an aside I've been spending a significant amount of my spare time learning FB 4.1 lately).

So the bottom line in my mind is that everyone needs to take a deep breath, step away from the computer for a bit, and come back to all of this with a bit more rational head. Your server's not going to start on fire if you choose the "wrong" framework, and you aren't permanently sealing your fate by choosing one over another. Remember: this is all about building great applications, it's not about becoming a framework junkie (fun as that is) just for the sake of becoming a framework junkie. Learn and use as many frameworks as make sense for you to learn and use, observe the progression among the various frameworks, and by all means take all of the blogging about this (mine included) with a grain of salt.

It's interesting and entertaining to watch all of this unfold, but at the same time I think the mob mentality going on may be causing people to lose sight of the end goal, which is building better, more solid, more easily maintainable applications, and frameworks go a long way toward reaching these goals. I'm just glad that as CFers we finally have multiple great frameworks from which to choose.


Comments



"Yay, the snow has melted and we can all go outside now.....err...i dunno, i don't like the looks of those teenagers, back inside everyone!" - grandpa simpson.

Point is, we can piss and moan all we like about various frameworks but the point is "what works, whats easy to implement and how can it improve my coding-lifestyle without impeding my development".

So, Mr Matt, i freeeeeeeeeeakin agree 110% by the way i am making a framework called FuseMachGlueTartanBatFinkMonkeyLuvingPooPa... basically how you implement it is connect some wire-based nodes to thine skull and simply think the application, the rest is done for you.



Nice post Matt - couldn't agree more.


I think that you have made some very interesting points. However I must digress on your thoughts about Mach-II. The problem with a framework such as Mach-II with no roadmap, very few updates, bad documentation, etc is that if it is marketed correctly then some corporations will jump on board and being using it for application development. The problem with this is that once it dies, and I believe that it will, then developers that have to support and provide incremental development to these sites will not have a platform to learn the basics to help there corporation. But I truly believe that if a framework is not an extraction of a product being developed then it needs a huge following to truly mature to the level necessary to add real value. Once again CF'ers hurting themselves all over again.


This has become my default comment as of late. Everyone is thinking "dead" as the opposite of "alive", but "dead" can also mean "having grown cold" or "lacking elasticity or bounce" [just check the dictionary]. I could have used the word "stalled" but the title "Mach-II is/has Stalled" just does not have that zing to get people to actually read the entry. Sometimes bold statements make people think.

In the end, all I wanted is to get the community to respond and respond they did. I've felt that too many focused on the word "dead" instead of what can be done to move Mach-II along. I didn't want Mach-II to become Rascal-II [as seen on TV]. However, Matt you've made a good post. You're I stirred the pot, but I never intended for the CF community to put the pot over the fire and stoke it.

I am happy that progress is coming and a new version is being planned. I hope to have some involvement.



No comments: