Coldfusion and the law of dialectics of progress

Every now and again these articles pop up about the future of Coldfusion, I myself wrote such an article some time ago.

It’s my believe that Coldfusion, the application server and CFML the language suffer from what is known as the law of dialectics of progress. In layman’s terms: the law of the handicap of a head start.

In 1937 a Dutch journalist and historian, Jan Romein wrote about the dialectics of progress. Simply put it explains why more advanced solutions can create a problem for the adaptation to new evolutions in the future.

One of the examples Jan writes about is such as the fact that London at his time still had public lighting based on gas lamps while the rest of the world was moving towards electric lights. Because then London was ahead of the rest of the world it had massively invested in gas lamps while the other cities didn’t even had gas lamps. So for these cities it was easier to switch to electric lamps. The fact that London had lamps that worked well and had invested a lot in it caused a delay in the adoption of new technology.

I believe that this is in part causing Coldfusion to lose much of its appeal. At the time Coldfusion was so far ahead of any other server-side web technology and was so easy to use that not many people felt the need to keep an eye on new evolutions that were taking place. These evolutions led to test driven development, use of version control, no-sql databases, ORM …etc. Although Coldfusion and it’s community is catching up in those fields it wasn’t leading this evolution mostly because of the handicap of having a head start, nobody really felt the need to try new ways or were hindered by the closed source model of Coldfusion.

When looking at cfml as a language it’s clearly far behind any other language. Mostly because all other web technologies are based on languages that are not only used as “web languages” but are programming languages in their own right. Think of Python, Ruby, Java, Clojure and even PHP and Javascript to some extend.

Of course that’s not the only reason, the fact that Coldfusion until recently (with the advent of open source alternatives) has been closed source hasn’t really helped in terms of adoption. The expensive & complex licensing model is also not appealing to young developers who want to experiment, start up a new company or just create a simple blog.

Some people deny that there is a problem others complain about Coldfusion and prophesize it’s downfall. I’m sure the adoption of Coldfusion will not grow much in the future, there are fewer jobs around and more and more companies are switching to alternatives mainly because it’s hard to find Coldfusion developers these days.

What bothers me is that we are all (including me) good at analysing the status quo instead of focusing on the future.
TV didn’t kill radio, internet or digital magazines didn’t kill traditional magazines or newspapers. In that sense I don’t think CFML will disappear either.

Many business decisions are made not on the quality of a product, but on other grounds, like what’s trendy or how easy is it to find programmers or what strategic benefits a cooperation with a certain company offers and so on.

People choose Drupal or WordPress not because they are written in PHP but because they are good and can be installed nearly everywhere. Ror or Django are said to be superior to PHP and yet PHP is still more popular, has more well-known apps. So it’s clearly not the technical merits that define popularity of a certain technology.

Think of Apple how it used to be great then went almost bankrupt to rise from its ashes again. What it needed was a new OS and a focused leader. Apple has taken drastic business decisions, like switching from OS 9 to OS X, cutting down the amount of products, from powerpc to intel, from being a computer company to building consumer devices and selling music online.

Coldfusion has done that once in the past by switching to Java with Coldfusion MX, now it’s time to reinvent the language. What I believe should be the next step either the adaption of the existing programming language or the creation of a new language that would be modern while keeping the philosophy of CFML. Something new, fresh, possibly revolutionary that will attract young developers. Combined with a demo of building a powerful app in minutes that would blow away the competition. Marketing is important whether we like it or not. A scenario like this would put CFML back on the map.

Does this mean we all have to start complaining about Adobe and why it’s not doing more for CF? I don’t think we have to wait for it until it’s all handed to us on a plate.

Let’s embrace open source and show the world Coldfusion or rather CFML can coexist with Django, RoR, NodeJS …

The advent of a company like Railo is addressing a lot of the problems that Coldfusion is facing.

  • Open: it’s open source
  • Modern: It’s introducing lots of new modern features
  • Hosting: cheaper and more hosting options
  • Commitment: Has made a 10 years commitment
  • Good product: Lightning fast product and a fixes bugs fast
  • More focus: Railo (CFML) is its primary product not one of the many

I’m not pessimistic when it comes to the future of cfml, I see a change that has been going on for a few years, new frameworks like FW/1, Coldbox lite, Coldfusion on Wheels are all very modern. I see companies like Mura embracing an open source model and working with Railo or ContentBox that offers a modular CMS.

The seeds are there.

  • http://www.mattbourke.com m@

    well said
    open source software is now the norm for 90% of business, and will soon be running 90% of cfml sites ;)

  • admin

    @m@ Matt I agree while open source once was something frowned upon now it’s the norm. The linux-kids from the 90′s are now running the IT departments.

  • http://adamcameroncoldfusion.blogspot.co.uk Adam Cameron

    G’day
    Hey, I was gonna add a comment here but I ended up blathering on more than would have been fair as a comment on your blog, so I’ve written an article on me own blog commenting on my thoughts of what you’ve said: http://adamcameroncoldfusion.blogspot.co.uk/2012/11/thoughts-on-coldfusion-and-law-of.html

    Excellent thought-provoking article, btw, and I’ll def be watching your blog in future.

    Cheers!


    Adam

  • http://www.raymondcamden.com Raymond Camden

    I’d like to take issue with your comment: “When looking at cfml as a language it’s clearly far behind any other language.” That’s so broad as to be senseless. Of course, it isn’t fair to compare CF to Java (or .Net). CF is a web development language, not a general purpose language. Is that bad? I don’t think so. It’s like complaining your hammer is somehow missing something because it can’t screw stuff in. That being said though, I’d love to hear some specifics. What language/syntax features are missing that make it “clearly far behind.”

    • admin

      First of all I don’t question cfml’s strengths as web development language. Maybe I didn’t frase that part well, it was not to say that cfml is not adequate as a web development language but more that having a general purpose language offers more possibilities. Sure there isn’t much you can’t do with cfml when it comes to creating web applications.

      Then why is this import well if we look at ruby in ruby on rails for example, it offers package management for modules, has command line tools for generating a skeleton app, for migrations, scaffolding, deployment …etc NodeJS has similar stuff and I assume Python and Django as well. These are things that you can’t do with cfml without having to resort to another more general purpose language like java.

      On top of that having a more general purpose language means your programming skills in that language can easily be used for creating scripts to manage your server or to create desktop or mobile apps. Looking at Python or Ruby you can do almost anything with it, so with knowing 1 language you have a broader field in what you can use that language for while with cfml you are really confined to doing web development.

      PS: Maybe you should see what Sean Corfield has to say about the language (on his and other blogs), he is far more knowledgeable than me on this subject and what he says makes sense to me

      • http://twitter.com/cfjedimaster Raymond Camden

        The thing is – if your job is web development, you aren’t being confined, are you? I’ve expanded what I do quite a bit lately – mainly moving from just server-side to a lot of client-side development too, but I’m still “just” a web developer (despite using multiple languages, techniques, etc). So saying CF can only be useful for web isn’t a negative for me.

        • stofke72

          Yes but wouldn’t you like to have the ability to have command-line scripting to get the same benefits as ruby or python or even nodeJS offer.

          Recently I saw the new meteorJS framework and it really blew me away. Real-time updates, latency compensation, hot code pushes all right out of the box. All done with javascript.

          Javascript is by no means superior to cfml but it makes this kind of stuff possible because you are not confined to server-side programming. NodeJS makes it possible to run server-side and client-side javascript, package-management, deployment-scripts, run a web server with a simple command … and so on.

          Ask yourself if you were new to web development without any prior knowledge about server side languages, what would you choose?

          You would look to what is new and modern, to what offers better job opportunities, to what technology is not dependant on the faith of 1 company but that is open. You would look at a technology that has a rich set of tools to make you job easier and more fun to do.

          I love cfml don’t get me wrong and in many ways it’s much easier to do certain stuff with cfml than with other languages. But we can’t ignore that it’s lacking the above mentioned features that those newer other general purpose languages have to offer.

    • http://twitter.com/seancorfield Sean Corfield

      Half-baked “classes”, random redefinition of industry-standard OO terms, poor (near-nonexistent) handling of null, half-baked implementation of closures (and ffs in 2012? after all those languages have had closures for _years_?), horrible inconsistencies in basic language constructs (loop array/index anyone?), half-baked script implementation (Railo are way better than Adobe here but even Railo’s implementation is incomplete), complete lack of packaging / deployment story for third party libraries, total inability to play nice with standard JVM build and dependency management tools. The list goes on and on. So, yeah, CFML is “clearly far behind”…

      • stofke72

        @Sean thanks for your reply and for backing my claim up.

        Not all of the problems you mention will be a problem for everyone on a day to day basis like Raymond is pointing out. But if you make a comparison indeed cfml is not on par.

        Some people are doing hard their best not wanting to see these things. I don’t know why?

        I predict that in 2013 a lot of devs will move over to either another language/framework combo or to Railo.

        It’s pretty obvious nobody in the upper management at Adobe is still interested in coldfusion.

        You don’t have to be a visionary to see all the signs.

        I believe it’s just kept alive until it becomes unprofitable to maintain it’s development and support.

        I didn’t mention this in the article trying not to be to negative on Adobe and do another round of Coldfusion is dead ramblings pointing fingers at Adobe. But one can’t deny that it’s partly Adobe’s fault.

        I went to a local coldfusion user group last year and guess what? 5 people were there 90% of them employed by government services, most of them older than 30.

        All Coldfusion jobs I come across are either government related legacy stuff or transfer of existing projects to Java or .NET

  • Miguel Ulloa

    This is silly, why bother re-writing cfml? Why not just switch to Ruby or Clojure?

    • stofke72

      Imagine if Apple would have said why bother reinventing the Mac with Next let’s just run Windows on it.

      I can understand your point and many will make that decision. I expect 2013 to be the year of massive switching of CF developers to other technologies or Railo.

      The economic crisis is forcing many companies to save wherever they can and if they can find cheaper developers and use cheaper open source technologies they will.

      I notice that more and more are switching to .NET

      • Miguel Ulloa

        My questions weren’t meant to suggest quitting. Although, since Adobe is progressively quitting on us assuming the trend is to continue we will likely be forced to quit also. Moreover if Adobe fully quits nobody knows for sure if Railo will be able to lead the future of cfml. The other point to my questions is that what you seek already exist with Ruby or Clojure. If cfml was to be rewritten hopefully it would add more than just familiar cfml syntax although I agree that would help. I think the trend seems to suggest not just general purpose languages but languages with university support. Ruby, Java, Python, and PHP all have university support. Lisp, one of the oldest programming languages modernized as Clojure is also is also in part successful for the same reason. It has energized the Lisp community and many universities are now teaching Clojure not just because it satisfy their academic curriculum but also because it’s practical. Students can get a good paying job right after school. That’s because Clojure is more than just cool, it is a serious artificial intelligence tool, so another sub-trend may be AI support. That opens the opportunity to create Intelligent Web applications. Prior to Clojure the existing programming languages were not able to derive business rules based on a set of predicates. That puts Clojure on a category of its own. Luckily most Web applications do not need to be that smart so cfml may remain relevant. That said cfml is likely to continue the trend of loosing talent if nothing changes. Where is the next generation of cfml developers coming from? Universities are a good place if we already have the support but it maybe hard to gain new support since universities chose the languages they support not the other way around. Perhaps the trick is getting them young say from High School.

        • stofke72

          You have a very good point here one that I have been making in an article I did years ago. If you don’t get the attention of high school kids you can forget if for the future.

          That is in my opinion why a language like php is very popular. PHP isn’t particular exceptional as a programming language if you compare it to either Python, Ruby or Clojure, yet it is immensely popular as a web development language.

          That’s mainly because it’s available on cheap hosting so high school kids can use it to build their first sites with it. It’s omnipresences also makes sure it’s taught at universities.

          That is why if Adobe is smart, it would free coldfusion from licensing cost make it open so kids can use it to build real sites with it, startups will consider using it again. Large enterprises would still require SLA’s, extra options + support and Adobe would still make money. Maybe less money but it would have a future and the install base would increase.

          I think they have given up on cfml being a general purpose web development language and are more focused on a niche market of large enterprises. At least that is the impression I get from looking at their roadmap.