The following is republished from the Tech Times #151.
In issue 145 of the Tech Times, I offered some advice on which web technologies beginners should invest time in learning. Ben Forta, the Senior Technical Evangelist at Adobe, felt I misrepresented ColdFusion when I described it as “relatively stagnant.” Having done some homework, I’ve now changed my thinking a little.
First, here’s Forta’s objection:
You are correct about the gentle learning curve, but can you clarify “relatively stagnant”? Just to be clear, the Webster definition of stagnant is “not advancing or developing”. ColdFusion was first released in 1995, ColdFusion MX 7 was released in 2005, 7.0.1 later that same year, and 7.0.2 in June of 2006. In addition, the ColdFusion team is hard at work on the 8th major version of ColdFusion (currently codenamed “Scorpio”), to be released in 2007. Obviously, we are both advancing and developing ColdFusion, and so the term “stagnant” is utterly inappropriate. As such, I must request that you update and correct your statement.
Forta goes on to point out that ColdFusion sits atop a Java foundation, and as such benefits from the full power and flexibility of that platform. My thinking here is that to take advantage of the Java platform beyond what ColdFusion exposes directly, you need to learn Java, which makes it a moot point in a discussion of what a beginner should learn first.
Getting back to Forta’s main point, there is, of course, no arguing with semantics. If the measure of health for a server-side platform is the frequency of releases, then ColdFusion has life in it yet. But even when considering this meaningless metric, compared to the release schedules of competing platforms like Ruby on Rails, PHP, or the dazzling array of Java web application frameworks, ColdFusion comes off looking, well, “relatively stagnant.”
How else can we measure the health of a platform? Well, one way is to look at book sales (something we do at lot at SitePoint). O’Reilly showed the results of the past three years of book sales at OSCON 2006. ColdFusion didn’t even make the graph, but when asked, Tim O’Reilly replied: “ColdFusion would be showing as a flatline at the bottom if we were to graph it.” Of course, a platform might not need books if it were especially well-documented, and perhaps that’s the case with ColdFusion. Or perhaps it’s just that ColdFusion isn’t evolving rapidly enough for people to need new books written about it.
Perhaps the way to measure a platform’s health is to look at the job market surrounding it. I’ve seen a smattering of reports that the ColdFusion job market has perked up recently, so let’s take a look. When measured against Ruby jobs, ColdFusion looks like a solid enough choice for now.
Note that the numbers for “ColdFusion” and for “Cold Fusion” are roughly equal, so you can effectively double the ColdFusion numbers if you don’t mind working for a company that can’t spell.
When you throw in other more established platforms like PHP and ASP.NET, it’s clear that ColdFusion isn’t the best choice if you’re playing the numbers for a new career.
Even if you double up the ColdFusion line on this graph, it’s still only about 2/3 the size of the PHP job market, while ASP.NET and Java (not shown because it overwhelms the others) are even better choices.
But no, I wasn’t talking about any of these forms of stangnancy. Rather, my description of ColdFusion was based on an impression that the platform’s development had slowed to the point that it was unable to respond to the changing needs of real-world web developers in the same way as its aforementioned competitors. Even in major releases like ColdFusion MX 7, changes to the platform seemed to consist mainly of tacked-on features of interest to a small minority of developers (e.g. integrated reporting) or tie-ins with Macromedia’s (now Adobe’s) other properties (e.g. Flex).
Based on Forta’s message, however, I thought it best to revisit that premise. I perused a number of ColdFusion blogs, read a ColdFusion developer journal, and spoke with some active members of the ColdFusion community. And I have to say, on some points I was pleasantly surprised.
One trend I observed on ColdFusion-related blogs recently was a spate of ColdFusion 8 wishlists. Dave Carabetta published a particularly comprehensive one. These lists give a pretty good feel for where ColdFusion’s power users hope the platform is headed. Certain items are worrisome:
Eleven years in and ColdFusion doesn’t have anything built-in to it to really work with images on any sort of useful level.
ColdFusion needs a professional IDE. I have been working with Flex 2 lately, and it’s downright appalling to see the level of professional polish on the Flex Builder IDE versus the CFEclipse IDE.
Something that’s not on these lists that I expected to see, however, is a more powerful application framework. This seems to be one area where the ColdFusion community has really taken charge: Fusebox, Model-Glue, Reactor, ColdSpring, Unity, and many other projects exist as the foundation for different approaches to building ColdFusion applications.
Next I sat down with the Summer 2006 edition of Fusion Authority, a free copy of which serendipitously landed on my desk a few weeks ago. First, let me say that this is a top notch publication, with just the right mixture of big names and enthusiastic upstarts writing timely and practical articles.
Refreshing my knowledge of ColdFusion code through the pages of the journal, I gained a renewed appreciation for the “hide the hard stuff” approach that’s exemplified by the platform. If you’re the kind of person who just wants to get the job done without getting drawn into the technical details, ColdFusion may be uniquely suited to your style.
An article by Kay Smoljak, who I met at Web Directions South last month, attracted my attention, however. In “An Honest Look at Integrated Reporting”, she describes the problems she had making real-world use of one of the flagship new features in ColdFusion MX 7. The severity of the bugs she describes are frankly shocking, and although it sounds like Adobe has been responsive to her bug reports, correcting many of the issues in the recent 7.0.2 release, one has to wonder a) how Adobe could release a flagship new feature that was so fundamentally flawed, and b) how nobody but Kay Smoljak seems to have noticed.
In my mind, this signals a disconnect between the core development of ColdFusion and the real-world needs of its user base. The reason there wasn’t public outcry as a result of the bugs in the integrated reporting features of ColdFusion MX 7 is because few people bothered to use the feature. When Macromedia/Adobe spends its time building integrated reporting that nobody uses instead of fundamentally useful features like dynamic image generation, there is something very wrong.
The good news is that Adobe has announced that ColdFusion 8 will have dynamic image generation built in. Nevertheless, I had to ask Kay Smoljak what she thought of all this.
I was actually a ColdFusion developer long before I was anything else, and really my impression of ColdFusion as a whole is pretty positive. [...] Don’t get me wrong – ColdFusion integrated reporting is a steaming pile of turds. But I’m still a fan of the platform. Perhaps they don’t give the right impression to the wider community of developers, but there is a lot
of stuff happening. [...]
I have some ideas about the type of developer that is attracted to ColdFusion, which I think contributes to the “stagnant impression” – they tend to be “get the job done and move on to the next target” type people rather than coding enthusiasts – they’re just not vocal like Ruby On Rails, PHP and .NET fanatics.
…which is all pretty reasonable, as far as it goes.
The question I keep coming back to is this: what exactly are you paying for when you choose to develop for ColdFusion? Lest we forget, Adobe’s ColdFusion server costs a pretty penny to license, and that’s money that your employer won’t be putting into server hardware, developer tools, or, ultimately, your pocket. Just what is it that you’re getting in return? It isn’t quicker bug fixes, it isn’t a larger job market, it’s not a richer feature set, and it’s not rock-solid reliability. It might be timely support, but other platforms offer that too, and without the up-front costs.
In the end, the only solid reason I know of for choosing ColdFusion today is if you simply prefer its way of doing things. But, when we compare ColdFusion to competing platforms, I do honestly believe that the core development of ColdFusion has been stagnant for some time. It may be that this is all about to change with the release of ColdFusion 8 next year and, thanks to Adobe Labs, we should be able to tell long before this new version hits the streets. But based on where the platform is today, I must stand firm in my recommendation that newcomers to web development look elsewhere, at least for now.