Yup, this one again. For literally years people have been asking “is ColdFusion dead?”, each time one of the well-known developers in the CF community would scoff “Pah! Of course not because of xyz…” – but for a while I have been thinking, perhaps there is no smoke without fire….
Not dead, but more like Duran Duran or ShedSeven…
Personally, I don’t think ColdFusion is actually dead; more like a has-been pop band, living out its days putting out the odd release for a hugely diminished yet loyal fan base. Most of the followers from “back in the day” have moved on and found something new, and the only current fans have been there since the beginning – but it’s not gaining any new ones…
I still think ColdFusion is good at what it does; it’s great for fast development of both small and enterprise applications; it’s just that it’s not as popular any more – which comes with it’s problems.
Back in the “Macromedia Days” of ColdFusion, there was a bit of a buzz about it, albeit not in the majority, it was still popular and you didn’t get blank looks from other developers when you mentioned it. There weren’t many real server-side options to choose from (compared to today), and ColdFusion managed to win a few people over with its rapid development, and enterprise features. Still, PHP and ASP were probably more popular than CF, mainly because they came without the prohibitive licencing costs – however CF was better (in my opinion).
Over time however, ColdFusion became less prevalent and is now competing against more alternatives for enterprise environments, and competing against even more for server-side developments. Within about 10 years, ColdFusion slipped from being a popular trend, to some forgotten part of the pre “Web 2.0” era, and is now mostly found in legacy systems and the phrase “is ColdFusion dead?”
Where things went wrong
The Development Community is essential
One of the most important aspects of any programming language is the community – without it, you don’t have anyone to build for, nobody pushing for new features, and a poor support community which is essential. ColdFusion had a big community (it still has a knowledgeable one), but it has shrunk and there seems to be no effort from Adobe to combat this, other than put out new releases.
The question “is ColdFusion dead yet?” is asked so often because it doesn’t seem to be putting up any fight against its contemporaries from back in its heydey, nor has it really evolved or changed much (oh sorry, it’s got rid of JRun and now uses Tomcat). Look at some of the alternatives to ColdFusion 15 years ago:
- “Java is everywhere” as they put it – and they’re right. The software is everywhere and so are the developers. It’s also a nice strongly typed language.
- PHP is hugely popular, and used to build some of the most popular content management systems in the world (WordPress, Magento, Drupal)
- ASP though classic ASP is arguably on the decline, this is likely because Microsoft gave everyone something new to use in ASP.NET, which is also hugely popular.
Where is ColdFusion? What massive things has it done? Well, software giant Adobe became its new owners in 2005, and since then…..well, nothing much really.
It’s greatest strength…
A huge problem with ColdFusion is that it’s greatest strength is also it’s greatest weakness – it’s so easy to pick up. This meant that during its heyday, anyone who picked it up could start writing code quickly – regardless of their ability, which made it a pretty popular choice. However, this meant that almost anyone could cobble something together and even if it wasn’t done well, would still get a result (just because something works, doesn’t mean it’s been done right). This meant that memory leaks became common, and due to a lack of understanding, this often resulted in a call to “restart JRun” with ColdFusion taking the blame – not the developer.
Other languages like Java or .NET, are complex to write but you have to understand it in order to make it work; their complexity is almost a barrier to entry which means that less experienced developers are likely to opt for something more “scripty” or actually learn it properly.
Licencing Fees…
Of course, the cost of ColdFusion licencing has also played a big part in the shrinking of the community; why would a development company pay for an expensive CF licence when it could use PHP for free? True the development process with CF is faster, but businesses would not know this without first buying the software, and unlikely to see a financial benefit until their developers were up to speed with CF.
It definitely is shrinking…
The signs are there that it is undoubtedly decreasing in popularity; the number of jobs in ColdFusion are a fraction of what they used to be, and any companies that still use ColdFusion are diversifying into more common platforms (typically seems to be .NET or Java). For me, the greatest sign of ColdFusion’s demise is the diversifying of its high profile users/bloggers, that the CF community seems to rely heavily upon for reassurance that it still exists…
- Raymond Camden (apart from heralding new CF releases) seems to spend a lot of his time developing PhoneGap applications and is becoming one of Adobe’s faces for this.
- Ben Nadel is becoming more involved with Javascript frameworks, though still blogging on CF.
- Joe Rinehart (contributor of the ColdFusion ModelGlue framework) publicly announced he was moving away from CF in a thought-provoking open letter to ColdFusion on YouTube – favouring other technologies such as Grails.
Apart from these, there are many other developers (other companies, my colleagues, and myself!) that have moved elsewhere. For me, I decided to move to .NET – why? I made a conscious decision to look hard at a few other languages before making a solid decision to throw myself into another one. What are other companies using? What are the better language alternatives? How can a language be used? What is the community like? Where are the better jobs found?
Nails in the Coffin
A large part of me wanted a change, and ColdFusion doesn’t seem to change much. Nothing incredibly radical in the language happens to improve it. However, some final nails in the coffin really helped me make up my mind…
- Frameworks are being left. A while ago there was a message on www.reactorframework.com to say that the ORM project was being “parked”, however the site is now entirely dead. Machii framework has also been “sun-setted” at version 1.8, with a message on its website to say that its original developers have all moved away from ColdFusion (what does that tell you). Finally ColdSpring, the DI, IoC and AOP framework modelled loosely on Java’s Spring. If it were an animal, a kid would be poking it with a stick by now; it’s there, but nothing seems to be happening any more (version 2 has been in Alpha release since 2011). The documentation is weak, and searches for tech info often bring up unrelated results from “www.mail-archive.com” (always a sign you’re getting nowhere).
- Nobody Uses it anymore. It’s true. There were a handful of organisations locally that I knew of using CF, however these have moved/moving to other technologies now.
- Adobe isn’t interested in ColdFusion, and doesn’t really seem to push it or develop it. After Adobe bought out Macromedia, it took about 2 years before the “Macromedia ColdFusion Service” was renamed (how hard could it have been?), and even 10 years on, db error messages still refer to “[Macromedia][SQLServer JDBC Driver]”. Has it really been so long since they took a look at the code, that the previous owners name is still on it? Adobe did however release a “dedicated ColdFusion IDE”, ColdFusion Builder – based upon the open-source IDE Eclipse. Apart from the logo and the price, both IDE’s are identical – they’re even as buggy as each other.
- I want to try other things. CF is a web language, whereas others such as Java, Python or .NET can be used in other ways too. I’m interested in developing software for other uses, not just the web.
- CF Documentation is appalling. Adobe Livedocs (whatever they call it now) is terrible, and it has been for some time. Compare this with the in-depth, ever-deep-linking documentation of Java or .NET and it doesnt even compare. The examples on livedocs have for a long time been terrible, often with comments from the public correcting them. Also, if Google takes me to a tag reference for CF8, and I then click on the CF9 link – I expect to see the equivalent tag reference for CF9 (llike .NET does) – not an introduction to CF9. The poor standard of what is supposed to be the “official documentation” is just another example of how Adobe invests minimal effort into the software and its community.
- CFscript frustrates me so much. Things are so convoluted to write in comparison with CFML or only even possible in CFML, so why bother even bothering with CFscript if it’s only a matter of time before you have to come out of it and use CFML to get everything you want done? I would actually prefer to be able to write everything in cfscript (more OOP feel, and less markup-type coding) but things are just much easier in CFML.
Since ColdFusion MX I’ve been building large applications ColdFusion, but now the time has come to move on. The software world is changing, and CF doesn’t seem to be part of it; so many other platforms take precedence over CF, and for the future prospects of businesses/developers, it’s not a great horse to back with a shrinking community, and no new blood coming in.