Yeeeeah, there’s that ColdFusion thing
Why CFML is not the web development tech zombie everyone thinks it is.
People who’ve known me for a bit would also know I had a life before mobile development on Android and Flutter.
Apart from being a Flash- and Flex-developer for a few years and being quite involved in those communities, I’ve been doing back-end development since the late 1990s. For that I mainly used various JVM-languages and -platforms. And still, a good amount of my work revolves around the integration on mobile apps with back-end services.
One of the platforms I use for this is CFML. Yes, the infamous ColdFusion Markup Language — quite often erroneously known as ColdFusion in short.
A lot of people think it’s been dead since the early 2000s or at least that it’s on its way out. Technologies follow a weird hype cycle these days. Even Ruby, once the startup language of preference, is now experiencing a wane in its usage. CFML obviously peaked a few years ago. Nevertheless, there are lots of existing systems out there that need to be maintained and new systems are being built in CFML.
In this post, I will give you a brief overview of the terminology around CFML and ColdFusion and what the difference between the two is. Additionally I’m introducing Lucee, an open-source implementation of CFML.
CFML — a primer
It’s important to distinguish between ColdFusion and CFML. The latter is a language spec, the former a commercial product from Adobe. There is also Lucee, an open-source implementation of CFML that is driven by a very engaged community via the Lucee Association Switzerland.
Both CFML implementations are basically tag- and script-based productivity layers on top of the JVM. The idea is to have a language that makes it particularly easy to build web applications of any kind with it.
Adobe ColdFusion has a wild history — born in the mid 1990 by Allaire, then taken over by Macromedia in 2001 or so, which around 2005 itself got purchased by Adobe. In 2019 Adobe still owns Adobe ColdFusion (the current version is called “ColdFusion 2018”) and it’s actively being developed and released in a very enterprise-like 1.5–2 year cycle.
Lucee (currently in version 5) is a fork of Railo, another earlier open-source/commercial CFML implementation. The Lucee team develops and releases regularly and everyone is welcome to contribute to the project. Railo can pretty much considered a stale platform without any further development going into it.
Adobe ColdFusion vs. Lucee
If I’m using CFML for a new project, it’s usually entirely Lucee-based. There are many reasons for that, and the most important are probably:
- Lucee can easily be run in various cloud environments such as AWS, Google Cloud and others. ColdFusion is less flexible when it comes to cloud technologies and cloud licensing
- In general Adobe ColdFusion’s licensing terms (and in particular the licensing cost) are not appropriate for the world of 2019. For the licensing cost of a single ColdFusion enterprise server, one can easily become a full member of the Lucee Association for a whole year.
- Lucee is significantly more lightweight when it comes to criteria like memory footprint, CPU usage at run time and installation size as well as startup time.
- In the vast majority of cases, Lucee’s run time performance is superior to Adobe ColdFusion’s. I have yet to see a non-trivial application that runs faster on Adobe ColdFusion than it does on Lucee.
- Lucee is driving innovation among the CFML implementations. While Adobe created rather obscure features such as a so called CF Client system to create mobile apps on the back-end to render in the front-end, Lucee added and improved language features such as Closures, Member Functions, Map-Reduce Functions, a proper CFScript language and more.
- Adobe ColdFusion’s business model seems to be more or less about upgrades. Anecdotally the US government and some other huge Fortune 500 customers are quite big into using Adobe ColdFusion for internal projects. To me, it seems that Adobe provides just enough “features” in each release that the biannual upgrade can sort of be justified by that particular user demographic.
- The way Adobe deals with reported bugs is frankly sub-standard. There doesn’t seem to be a clear and coherent process when it comes to bugs reported by customers and the wider development community.
Good on them for having a public bug tracker in the first place, but it lacks maintenance and communication. I’ve seen valid and well described issues being right away ignored. Sometimes issues get triaged but never actioned. Sometimes issues are fixed with the fix being released 1.5 years later as a new feature in the next product release. And more often than not, there’s no or hardly any communication on Adobe’s side and tickets don’t reflect the actual status of the issue.
Overall, it is kind of hard to justify using Adobe ColdFusion over Lucee for the above and many other reasons. In 2019 it’s nearly impossible to commercially sell a language to developers. Adobe more or less tries to and I do have clients who are, for one reason or another, still using Adobe ColdFusion. But I would clearly not recommend going down that path to anyone.
Lucee is a totally different story though. Lucee is free, appropriately licensed as LGPL and provides as modern, fast platform that allows rapid development of web applications or APIs. Lucee even adheres to JSR-223, the standard for scripting languages on the Java platform.
CFML as a language and Lucee as a platform are by far not dead. CFML is a stable and robust language that does a very good job in the fields of web application development.
If anything, I’d agree that Adobe ColdFusion is kind of a zombie as a commercial product. Without a significant change, in my opinion Adobe will more and more struggle to attract new commercial customers to their product.
It’s important to remember two things:
- ColdFusion != CFML (the language)
- The commercial Adobe ColdFusion and the free, LGPL-licensed Lucee both provide an implementation of CFML and in my opinion Lucee is far superior to Adobe ColdFusion.
But there’s more:
CFML has a very active community of people pushing what’s considered modern CFML. I will write a few more posts about that in the near future.
As a starting point I recommend that you have a look at Modern CFML in 100 minutes from Ortus Solutions. It’s available for free as an online Gitbook and you can also buy a print/ebook version if you prefer.