Dear ColdFusion Skeptic

Hi, how you doing? Your day going okay? Cool. I’m not looking to fight you. It got a little heated on Twitter. I know our community is passionate; sometimes that “passion” becomes “an angry mob of flame warriors.

You think bad things about ColdFusion. You’re certainly entitled to your opinions, but I think you’re mistaken. I think it’s possible you haven’t tried ColdFusion in the past few years, or ever. If you haven’t, I invite you do so.

But let’s be civil. We can disagree without it being a whole flame war thing.

Let me respond to your issues, we’ll see if I can’t persuade you to see things from a different view. First, let’s start with why you say you dislike ColdFusion:

“ColdFusion encourages spaghetti code.”

It doesn’t. Unfortunately, it enables it, just like most other languages. However, we do have a number of features and community driven projects around enabling well-architected applications. Those include:

All of these combine to make it easy to create well-encapsulated, modern projects in ColdFusion. Here’s an example of some modern ColdFusion code I used in a recent project.

“ColdFusion is just tags.”

Actually it isn’t. In addition to CFML, ColdFusion also supports CFScript. Most of the core features that CFML enables are available here. There are a few view related features (for example AJAX driven html form tags) that aren’t implemented in CFScript because they don’t make sense to.

One thing I’ve found about writing in both script and markup is that writing an app entirely in markup is painful and silly, as much as writing entirely in script is. I’ve come around to the idea that views should be in markup. Views contain hierarchies of content, containers, and other features that are easy to express and understand in markup. On the other hand, when you are dealing with large libraries of functions and business logic while trying to figure out what each piece of code does the less extraneous characters the better. That’s why scripting is better on back-end code.

ColdFusion enables both. Do what you like, where you like. You have the choice in CF to do so.

“ColdFusion isn’t free.”

It isn’t. Sure there are open source clones out there, and if you like the rest of what I have to say, but can’t get over this, feel free to check them out.

ColdFusion is a productive language. If you look at Total Cost of Ownership versus similar products, you’ll see that the cost of licensing is a small part. Development and maintenance is the largest chunk of TCO. Every solution pays this cost, and a language that is more productive will be cheaper in the long run, despite upfront licensing costs.

Total Cost of Overship Chart

All that being said, I skipped out on one part of the story here: development is free. The developer version of ColdFusion is free. If you do move to a production environment, shared development, testing, and disaster recovery servers are free too. The IDE, ColdFusion Builder, isn’t free, but there are free and open source alternatives. If you are using ColdFusion for educational purposes the server and IDE are both free.

ColdFusion does have low cost hosting out there. Additionally, ColdFusion 9 tweaked the EULA with regards to cloud hosting, making it both possible, and economical.

It’s not free. It costs money. But we at Adobe feel that we provide a lot of value for that cost.

“ColdFusion doesn’t have any open source projects.”

Riaforge.org, which requires included projects to be open source, lists 716 ColdFusion projects and 39 ColdFusion Builder Extensions at the time of this post. Brian Rinaldi’s open source list lists 352 projects.

Enough with your arguments let me tell you why I think ColdFusion rocks:

I’ve already written extensively on this, so I’ll sum up and invite you to check out some of these other posts.

ColdFusion makes hard things easy. Most things in ColdFusion are single operations. By “most things”, I mean “things that every web programmer has to do but other technology solutions don’t integrate at a language level.” Send an email? Wrap 2 lines of code around your message content. Talk to an LDAP server? One ColdFusion tag call (or script object.) I don’t have to manage database connections. ColdFusion has features that make it easy to work with results from a database. It doesn’t take me 80 lines of code to talk do an HTTP get request.

ColdFusion already integrates with lots of technology. Need to talk to LDAP, Microsoft Exchange, Microsoft Office or a Java Portlet server? ColdFusion comes equipped to do so. Need to integrate some Java or .NET project into your application? ColdFusion can talk to either. Need to talk to printers or cell phones via SMS? ColdFusion can do it. The great thing here is that I don’t have to search for and rely on third-party code to do so. I can if I want to but for a lot of these commonly used technologies, ColdFusion already talks to them.

ColdFusion can play many roles in a web application stack. Need to build a classic HTML driven web application, or and AJAX driven site? ColdFusion can handle that. Want to build a Flash based rich application? ColdFusion has special protocols that make it a snap to call from Flash, again right out of the box. Need to write a SOAP or REST API for your application? ColdFusion can do that, usually by just writing an easy faΓ§ade on your existing code. Need to build an IM or SMS driven application without a web based front end… Yep, ColdFusion has you covered.

I hope you made it this far. I hope I caused you to question your stance. I can even hope that I encouraged you to try ColdFusion before you dismiss it.

30 thoughts on “Dear ColdFusion Skeptic

  1. From the perspective of making this post more transparent…

    Where does the total cost of ownership come from; and who generated the numbers?

    It was my understanding that “shared development, testing, and disaster recovery servers” are free only if you purchase a ColdFusion license. Is that understanding correct? Are such uses free for CF standard customers or just enterprise?

    I use a managed VPS to host my sites; the host is the formal owner of the CF License. Can I install a “testing” version on my staging server?

  2. Great list. Another thing a often blurts out is that CF’s performance is crap, especially in a shared environment. You may want to touch on how a lot of shared hosts out there aren’t set up effectively and one crappy app can bring hosts like that to their knees. Plus, any idiot can get behind any language and write a crappy app–it’s just easier to do in CF, re: your first point.

    Competent, well-written CF apps that implement proper caching techniques, take advantage of CF’s shared memory, and use just plain old common sense (uhhh, yeah…let’s not run 20 SQL queries on the homepage) perform perfectly fine.

  3. @Shawn – you’re right. Shared hosting is often not a good option for *any* tech that requires top performance, and the time spent chasing down problems which result from shared hosting could usually be saved by paying a bit more for a dedicated box up front.

    CF *is* a rather expensive proposition up front, but in the right hands, it can certainly be a lower TCO and allow people to be more productive. Problem is, you have to want to learn how to exploit it in the first place. Being a crap PHP or Ruby or Python dev has a lower barrier to entry (low up front cost and such) than does being a crap CF developer. Basically, if you plan to use CF, I think you owe it to your bottom line to get the most out of the license that you’re paying for (ditto with a .net stack too).

    “Competent, well-written CF apps that implement proper caching techniques, take advantage of CF’s shared memory, and use just plain old common sense (uhhh, yeah…let’s not run 20 SQL queries on the homepage) perform perfectly fine.” This could – and probably *should* – be rewritten as

    “Competent, well-written *web* apps that implement proper caching techniques, take advantage of a platform’s optimizations, and use just plain old common sense (uhhh, yeah…let’s not run 20 SQL queries on the homepage) perform perfectly fine.”

    I’m tired of hearing PHP doesn’t scale, Ruby doesn’t scale, Java doesn’t scale, ASP.NET doesn’t scale. They all *can* scale, and usually all reasonably well, but at some point you need to be an expert in certain aspects of your chosen tech stack (or have access to one!). So… choose your stack, develop, learn, scale, and have fun!

    Minor plug – I did a podcast chat with Bob Silverberg and we touched on CFHaters and language bigotry a bit over at http://webdevradio.com – long story short, I wish we could all just get a long.

  4. My concern with CF.

    I have a hard time finding interesting work in my area. I think many others do to. To me it seems that many shops are running and maintaining very old legacy CF apps. They are not super interested in active development in those particular apps anymore, but they do pay very well to have a well seasoned CF developer to sit in and make sure it does not break… but lets face it, thats boring as hell. Your not seeing a whole lot of fun start ups building exciting applications on top of CF, and those are typically the most fun to do jobs for.

    When I do find shops involved in active CF development, they always seem to be large organizations with large political games going on, and the IT director knows nothing about development, but yet he is the one calling the development shots… so that that kinda sucks.

    I am young in my development career, and I grasped a hold of CF early on and enjoy it most of the time. But it seems if I want to my career to stay away from boring jobs or annoying political ones, I have to choose a different platform? If CF is such a less expensive platform to run in the long run, why don’t more start ups that have tight budgets utilize it?

  5. @Garrett

    It may be cheaper as a long term TCO, but there’s still an upfront cost which is hard to convince people to spend (unless they’ve already got CF skills on board). MS realized this, and is fighting the ‘free’ stacks with programs like websitespark.com which offer free licenses to small shops and startups for up to 3 years, with reduced pricing afterwards. Free LAMP and Rails stacks and the like are hard to compete against. These platforms have commoditized the marketplace.

    To break out of a commodity status, you differentiate. What is CF’s differentiating factors? Beyond “faster development” (which, frankly, most platforms tout/promise anyway), the big diffs (imo) are MS/Office integration, PDF integration, etc. The same features that differentiate CF from other stacks also appeal to (and have value to) larger MS-oriented organizations.

    I’d love to see more CF out there – I think it’s got some unique things to offer (tight flash integration, for one), but it’s not enough to pull me away from Grails or PHP for any projects right now. Unless someone already had CF skills on board, it’d be hard for me to recommend someone building something in CF – unless there was a specific use case to spoke to the MS/Office integration, PDF integration, etc. And those projects would likely be at the larger, boring ‘enterprise’ type places.

    I don’t think it’s ‘no win’ for CF, but it’s at risk of being marginalized in to specific niches (like asp.net may be marginalized in to primarily in-house and intranet projects).

  6. This was a great article. However, I to would like to see more statistics on usage of the ColdFusion platform as well as what the ROI would be on investing into the technology again. I have always loved developing in CFML and had done so up until a couple of years ago. I would love to see the ColdFusion community strong like we were in the early 2000’s.

    The open source solutions are great but nothing will ever compete with the Allaire/Macromedia/Adobe ColdFusion solution.

  7. Good article, Terry.

    @Garrett

    I feel your pain, but they are out there. I work for a mid-sized agency who have been working with ColdFusion for many, many years now. When I joined 5 years ago we were an ASP/CF house. We’re now CF, .NET, PHP, but we still use CF for a large proportion of our projects. Are these projects boring, or political? No.

    We’ve got a project in development at the moment that is doing something with audio that hasn’t been done before, and it’s built using CF. That’s a start up, by the way. We’ve worked with another successful startup in the last year to build them a networking site with some really nice touches, which is doing very well. We’ve currently got a cool little data absorption and analysis tool being made VERY rapidly using cfspreadsheet, and we’ve got any number of other innovative little sites going on that use features of CF that other languages just wouldn’t give us. It’s not all about the little projects either – we work with some very big names, and a hell of a lot of them are using CF.

    If you want your career to stay away from boring jobs or annoying political ones my advice would be to choose better workplaces, not blame the platform. ColdFusion, like any other language, is what you make of it. I happen to like it. Others don’t, and that’s fine by me because we’re all entitled to have a preference.

  8. I don’t think it’s just the startup cost of the sever license but rather the lack of popularity, inventivness and/or community (CF talent pool has shrank dramitically over the past few years) that makes companies like AT&T, AIG and IBM GS move away from the CF server platform/solution.

    I once thought I would always be doing CFML development but the market practically dried up here in Atlanta. (not completely though) I have since (in order to obtain work) moved to Java, .NET, Pega and/or Ruby development.

    I hope to one day see the market for CFML developers pick up again. However, the only way we are going to see CF play a heavy hand in the market again is if companies see a profitable ROI. Once this happens we will see CF developer/architect/engineer jobs become plentiful.

  9. The TCO argument is definitely weak without better sourcing and more complete comparisons– comparing to Java is shooting fish in a barrel πŸ™‚ I’d like to see Python and Ruby in there at a minimum.

    That said, CF’s sweet spot is traditional businesses — the folks that *do* do a lot of integration with MS-Office, Unix, .NET, PDF, Flash, etc. If you’re in that world, CF is *way* better than Java, .NET, and PHP for glueing things together. If you’re not in that world, it’s less of a great match. And if you’re in the Java world, there are a lot of good options now other than just CF — Scala, Groovy, Closure to get started.

    That graphic from the evangelism kit is for the CTO at a biz that’s based on MS and/or Java tech — not really an startup org IMHO.

    The one single enhancement that would make CF an even better language for integrating diverse toolsets is decent REST support built in. I’d love a built into CF. Give me that and we’ll talk πŸ™‚

  10. Terrence, I understand the predicament you are in, being employed by Adobe, an evangelist on the CF team, and all that. We (my company) use ColdFusion and that gives us a competitive edge in our market place, and a pretty serious edge, at that. The rich feature set, and short development time allow us to concentrate on product requirements and getting them to market quickly.

    What am I saying? Enough already. We’ve got enough ColdFusion out there. If companies don’t want to use it, good for them. Seriously. I’m not being tongue in cheek here. Let’s just leave well enough alone, ok?

    Thanks.

  11. @Michael
    Thanks for the info!

    @sjenkinson
    Thanks as well, yeah I am def not doubting there are exciting things going on out there. Just in my area its Hospitals and Banks using it and I am def have no interest in working with those industries πŸ™‚

    As far as those graphs go, they are certainly interesting. Not trying to be super critical, but I am sure whatever company Adobe pays to do research will come up with results to make their customer (Adobe) happy. Its just like results claiming to have 800,000 active CF developers, I mean could be true (that would be great), but it just seems like a big number, especially considering wherever I go and say that I work with ColdFusion I either get “HUH?” or “HAHAHA”. Would be better to find some research that Adobe did not initiate.

  12. Regarding Garrett’s interest in CF being available for fun work and new development activity I just wanted to mention a few things.

    I have in the past few years had the pleasure of working on some of the coolest websites and applications that any web developer gets to work on (and not small ones either…think in the range of below 2000 to below 10000 in Alexa rankings for some). Industries I’ve hit thoroughly along the way: Sports / Media (including one superbowl team website for scalability :-)), background information, xmpp chat integration, mobile application integration, asset management in every way and much more. All in ColdFusion, with some being completely new applications, some having been around for a while and others a bit dated while still being very innovative.

    By no means have I escaped dealing with dated code or badly written code at any point, but hey, if I walked into a job and everything was done perfect they likely wouldn’t need me for much other than adding a couple features. Sometimes a scenario resembling that happens, but I prefer jobs where I can innovate with the client and have some room for me to show them how valuable we can be long term as well. In particular, startups are often looking for assistance in choosing the toolsets they work with or they have a tech person they trust to help them with that already, so often its about finding the ones that are interested in what you have to say.

    My suggestion after reading some of these posts is to remember we are web developers, not local shop owners. By definition our trade is globally reaching regardless of the size of our projects and its no surprise we are seeing that trend become even more ingrained. Find the creative companies out there and show them the tools that inspire you, knowing why, regardless of what language and also look outside your area. Many of the people I work with are in completely different areas of the US and some other countries.

    I’m thankful for this so far civil discussion on the topic, but I would argue against picking a language simply on a couple charts a pretty bad way to look at it for any language. I can argue bias all day with a chart anyone puts out on languages like that, but at the end of the day the logical points made are pretty accurate. In the spirit of things, you can argue about the chart or realize that making that chart with cfchart was probably 10 times easier both in time and brain power than any other standard web application model. The latter argument sells me more than the chart itself.

    Sorry for my typical long comment.

  13. Good article. . Maybe adobe can do ‘something different’, something perfectly new idea about cfusion licence. This is good web progrmming,really. . .

  14. Thanks Terry for putting together this “letter” and I would like to add a couple of things. There is no doubt in my mind that the total cost of ownership (TCO) for ColdFusion applications is substantially less than most of not all other languages; the issue is that most developers do not care at all about that aspect. This is an issue because most of the criticism about ColdFusion comes from developers. Those who do assess TCO are the business managers and that is why, 15 years on, companies still buy ColdFusion and yes it is not free and yes it was not killed off by Microsoft, as was Netscape and many others. The reason, because it is a great language/framework or whatever term is used to describe it. My second point and another criticism often leveled at ColdFusion is that it does not scale, that is absolute and arrant nonsense and I speak from authority, having spent the past 11 years of my working life designing, engineering and deploying large ColdFusion applications around the world. On the weekend of the Indy500, 4 ColdFusion servers handled a peak traffic load of 48,500 concurrent users and did not “bat an eyelid” and I am not exaggerating, that is 48,500 concurrent users, I just want to repeat that. ColdFusion will survive and prosper because in a free market economy it is eminently marketable and exceptionally good.

  15. ColdFusion Rocks! Yeah, I do most of my work in ColdFusion, but still I find that it is far easier to do complex jobs in ColdFusion than in other languages like PHP. I’ve also been part of very large ColdFusion projects. One company that I worked for was ranked by Alexa around 2500 in the U.S. and routinely handled 2.5 – 3.0 million ColdFusion page views per day. So I know from experience that ColdFusion Rocks!

    I think that part of the reason some of the ColdFusion myths still persist is in part Adobe’s fault. Adobe needs to do more to get the word out to the Manager types, get into colleges, and get to seasoned programmers. The remaining blames lies in the arrogance of my programming ‘religion’ is better than yours mentality. Not much you can do about that.

    @Mike Brunt: “On the weekend of the Indy500, 4 ColdFusion servers handled a peak traffic load of 48,500 concurrent users and did not “bat an eyelid”” — I would have loved to been there for that!

    Wil Genovese

  16. UK companies we work with all run on CF apps, Argos, Virgin Mobile, Virgin Money, Zurich, Aviva, O2, Carphone warehouse. I dont have to justify cost. all our clients are interested in is time, and if it could be integrated with external agencies. they did not want to know the language because its down to cost and the job being done right.

    Adobe are doing a very good job, credit to them and I hope they continue. One thing I will also say is that blue clips I work with only speak CF, .NET or JAVA, I have never worked with a blue clip using PHP.

  17. For the spaghetti code accusation, I would offer that because CF is dynamic and does not require objects is one main reason people are able to pick it up so easily. For some web developers, you may only need a simple admin for some content management and/or a way to capture user information. CF and its easy to understand tags make it easy for someone who understands HTML to jump in and add that kind of functionality.

    I believe there are quite a few developers out there that started this way. The awesome ColdFusion community also make it easy to take the next steps to learn advanced ways to build applications. I’m speaking from experience on this comment.

  18. I manage a small group of Coldfusion developers inside a large (Fortune 5) corporation. Our Internal IT oranization does not formally recognize Coldfusion, but we belong to engineering, not IT. When I approached corporate IT ten years ago with our amazing results with the tool (great apps developed in about 1/10th the time of other tools), the response was “anyone can program in it, it can’t be that good”. Well, my team has been flourishing and my developers wouldn’t trade jobs with anyone in the company. Why is it so hard to break through to corporate IT ?…IMHO it’s because most of the key decision makers have not really written applications and don’t realize many of the points made in this post. Other people who manage complex solutions in Java enjoy the fact that nobody can understand what they do. Senior IT management is risk adverse and bets on tools like Sharepoint and Java…which they read about in CIO magazine. CF is an amazing tool, we are an “under the radar” team and if we exist…I’m sure there are others in big companies that are just like us.

  19. @Warren: First of all, great results, and more power to you.

    Regarding your quote: “IMHO it’s because most of the key decision makers have not really written applications and don’t realize many of the points made in this post.”

    You know, I think the problem is that decision makers *have* written applications, or, at very least, are heavily influenced by those that have (want-to-be geeks!)

    If you get your story in front of the CFO, or any bean-counters, I guarantee your entire organization would be CF in a heart beat. A trend in corporate America over the past number of years has been to have the CIO report into Finance, as a cost containment measure. So, if that ever happens in your organization, make sure you go straight for the jugular πŸ˜‰

    Cheers

  20. I can’t say this enough. Adobe as a company and the evangelists need to stop throwing random statistics and graphs trying to support their arguments. We have no source for the TCO information on the graph and it doesn’t take much effort to see some serious problems with it.

    – Java annual maintenance costs are approx. 3 times larger than CF. Yet Adobe CF runs on a Java server. How can it be so much less? In maintaining a CF instance, do I not have to maintain the underlining Java server as well?

    – If we’re talking about code maintenance then that really depends on code development and structure. Java forces an OOP style where CF doesn’t. I would argue Java has a leg up on that point. A lot of the early CF code examples, I think, help create the spaghetti code problems. Today, CF has far better OO attributes, but most CF developers still don’t use OO principles.

    – The differences in training is also seems off to me. Yes, CF is very easy to learn, but so is PHP. The official CF training isn’t cheap nor effective in my opinion. The graph paints a difference picture.

    – The license cost listed for CF with this graph is at the standard pricing level of $1300. In many projects, the requirements will call for the enterprise version which is $7500.

    – Development costs are expanding in the CF world. With less available CF developers, the costs of hiring experience is going up. The graph shows it in parity with PHP and .NET.

    This isn’t a FUD argument. I suspect the TCO will be less for many people using CF, but these stats are sloppy. The main point your making is correct: Yes, CF isn’t free but really nothing is. The TCO is something many forget in making their early technology decisions. Case in point, Twitter going with Rails πŸ™‚

  21. CF vs Free Software

    Remember, free as in speech, not free as in beer.

    It speaks volumes that a company has to hire an evangelist to fine tune arguments for using its product.

    I work for a company that is small and dynamic. A huge part of what we do is on the web in terms of sites and APIs. We use all free solutions if we can. Here is an example of why. One Monday morning, we decided that we needed to add 5 web/app servers. We cloned the existing VMs and in a few hours the new servers we up. There were no licensing considerations. If we had to drop $5000 to buy licenses, I suspect we would have gone in a different direction. One that would have taken longer and impacted our time to market.

    Licensed solutions like CF (that cost money) have a place in the web ecosystem. However, they need to provide clear advantages over the free solutions like PHP, Ruby, Python etc. It does not appear to me that this is the case. If the advantages were so clear cut and so much better, usage would be higher. So I doubt that this is really the case.

    I suspect that CF is now something like COBOL. No significant amount of new companies are deciding to use it. Very few, if any, businesses are switching to it. If anything they are switching away if they can. Companies that have existing applications would decide to use it on new projects if they had the staff for it.

    It would be interesting to see a comparison done by a developer who has used both CF and RoR or some other such solution.

  22. Again ryanxr, if you don’t want to pay Adobe ColdFusion for their product, there are other free cf options like Larry pointed about with OpenBD or Railo. I have heard other extremes where the company will not use anything open source.

    And as for RoR, there is a ColdFusion framework based on RoR called CFWheels.

  23. ryanxr

    It seems to me that if a company is not willing to spend $1200 or so for the Adobe CF Standard license, they have major problems that even FOSS will not help. In the 3 cases where I’ve experience3d this, each one has gone under a short time later. To me its a giant red flashing warning sign to run away as fast as you can, they have a lot of other problems other than being too stingy to purchase CF.

    As for RoR vs CF, that is an invalid comparison, given that RoR is a framework rather than an application server. CFWheels vs RoR for instance would be a better comparison.

Leave a Reply

Your email address will not be published. Required fields are marked *