On ColdFusion and the Changing Landscape of the Web

This is the blog post that’s been rolling around in the back of my head for months, but I haven’t really wanted to write. But as I see others write about it and hear others talk about it, I think that it’s time. Yes, it’s another post on the decline of ColdFusion, but I think from a different perspective. It’s more of an observation of the factors that have contributed to the decline of ColdFusion, almost all of which have been external. In short, the death of ColdFusion is not to be blamed on Adobe, the community, or even on ColdFusion itself. It’s simply a matter of evolution. The evolution of the Web.

I’ll preface this by saying that ColdFusion, along with Allaire, Macromedia, and Adobe, have all been very good to me over the past 15+ years. The platform has earned me a living, put a roof over my head and food on my table. The community has given me friendships that are still strong today, and I would expect will still be strong 20 years from now. I’m eternally grateful for what I have today, and it’s not an exaggeration to say that none of it would be here if it wasn’t for ColdFusion. There are no ulterior motives here. No animosity. Simply my observations.

I do think that ColdFusion is… well, dying. I don’t think there’s anything that can be done. It’s just… time. Others have talked about it recently. Why add to the noise? Because I don’t think a lot of the previous discussions have gone into the *why*s of the decline, and I think that’s important to understand.

So, what happened?

Flash back to 1995(ish). The “world wide web” was gaining popularity as a commercial entity. Web sites began popping up. Very basic sites, certainly. A solid color background, some text marked up with a handful of HTML tags, and that was basically it. “Webmastering” was not a particularly challenging endeavor. But the nature of technology is that nothing stays the same for long, and the web began to evolve. Web sites could now include images. Different fonts. Eventually, frames. But still, web sites were largely static in nature. There was no need for programming. For the most part, programmers weren’t focusing on the Web.

As the evolution continued, we started to get our first glimpses of interactive and dynamic sites, largely through the use of perl and CGI scripts. But still, web sites were just that… web sites. Slapping a CGI script on your page to add a hit counter or guestbook still didn’t involve any particular level of “programming”.

The next significant evolutionary step was the big one. Somebody somewhere said, “I have all of this data in an Access database. I’d like to take the data from the database and display it on the World Wide Web.” And thus the problem was born for which Cold Fusion was the solution. This was, for all intents and purposes, the “Big Bang”.

But there was a problem… getting data from the database to the Web, that would take more than just HTML. It would take somebody with database knowledge, and maybe even some programming knowledge. Unfortunately, people with those particular skill sets still weren’t paying much attention to the Web. The dilemma was that the average HTML developer didn’t have the technical skills to handle this. And the average DBA/programmer has more technical skills than were needed to handle this.

BOOM! Cold Fusion.

Thus began the influx of non-programmers, including yours truly, doing programming-like things. And it was Good. And we learned how to do programmer-like things. We learned about variables and loops and conditionals. We wrote web sites with “Admin” areas where people could update the content on their web sites on their own. We were idolized. We were… well, we were freaking WEBMASTERS, baby.

For a number of years, we filled a niche quite nicely. The Web was still largely overlooked by traditional programmers, as most sites were basically CRUD apps. But the evolution continued. Web sites evolved into web apps. And as they continued to evolved, so did the complexity. This was no longer a matter of implementing CRUD. The problems encountered by Web Developers were starting to resemble the problems encountered by traditional programmers. This resulted in two things occurring: 1) More people with traditional programming backgrounds started paying attention to the Web, and 2) ColdFusion did it’s best to evolve along with the Web.

This is where poor ColdFusion was really put in a position that it just couldn’t win. Remember that even at this point in time, the average ColdFusion Developer was not somebody with a formal programming background. Most ColdFusion developers were drawn to the language due to its simplicity. They resisted change. They resisted what they perceived as complexity. As frameworks were introduced into the ColdFusion community, I’d see many lament on forums or mailing lists, “What happened to the simple language that I loved? Why do I need to add the complexity of frameworks?” What was ColdFusion supposed to do at this point? If ColdFusion evolved with the Web, and indeed it tried by adding CFCs, ORM, etc, it would alienate a large majority of its community. If it stayed stagnant, it simply wouldn’t be a tool that could handle the increasingly complex requirements of today’s web applications.

I think ColdFusion tried to compromise, and stay as simple as possible so that the “5 Taggers” would continue to use it, but also introduce enough “complexity” that it would let the more advanced developers address the complex issues. Unfortunately, there’s just no possible way to please both. And I think that is ultimately the downfall of ColdFusion in today’s Web. It spent a decade carving out a niche as the application that makes it easy to develop web apps. But “easy” comes at a cost. In today’s Web landscape, that cost is obsolescence. There are too many experienced programmers working on the Web today, and too many other languages that aren’t hindered by the “easy” niche.

So, that’s my take. Yes, I think CF is going away, but through no fault of its own. It was a great facilitator when there was a gap to bridge between need and available skill sets. But that gap has all but disappeared. It’s been a little frustrating to watch, as I see fantastic efforts being made by both Adobe and the ColdFusion community. There’s a (relatively) new ColdFusion product manager and marketer, and I think they’ve taken the reins with an enthusiasm that I haven’t seen in a while from within Adobe towards CF. The community? Well, they’re busy putting together resources like Learn CF in a Week. I don’t mean for this post to diminish the efforts of any of those people. It just emphasizes the point that it’s not Adobe’s fault, and it’s not the community’s fault. It’s just a natural progression in which ColdFusion really doesn’t address a particular need for a majority of the people who are now involved.

It’s been said by others, but I’ll reiterate. Learn a new language. Learn more languages. You don’t have to abandon ColdFusion. Even if I’m correct in my perception of where things are going, they’re not going to get there tomorrow. ColdFusion will be around. I expect a ColdFusion 11 from Adobe. I expect Railo to outlast ColdFusion. CFML will be around, but it won’t be prevalent. Learn Ruby. Learn Node. Learn Python. Learn Clojure or Haskell or Scala. Moving on shouldn’t be seen as a “bad thing”.

There will always be a special place in my heart for ColdFusion. I will always appreciate what it’s done for me, my career, and my family. I guess at this point, rather than see it continue to be pulled in two different directions, trying to satisfy both the “5 Taggers” and those who want ORM and objects and functional programming, ultimately failing in the futile effort of trying to satisfy both… I’d prefer to see it get the well-earned rest that it deserves.

Thanks, ColdFusion. For Everything.

I had thought about linking to the other recent discussions around the decline of CF, but Mark Mandel and Kai König of “2 Devs from Down Under” fame have already done that. See the page for Episode 28 of their podcast. Give the episode a listen while you’re there. Good stuff.