Thursday 15 May 2014

ColdFusion 11.5?

Rakshith did a good job in the latter half of the main Adobe ColdFusion 11 presentation @ CF.Objective() yesterday. The first half was still a bit of a sell job on <cfclient>, but in the latter half Rakshith rolled up his sleeves and showed us some code. Which is what developers at developer conferences want to see. Towards the end of the presentation he (or was it back to Elishia at this point?) spoke about some of the stuff they're looking at for ColdFusion 2016. I sent out Twitter messages about it all at the time, but here it is again.

Firstly, thanks to Andrew Dixon for taking a snapshot of the slide I'm referring to:

And the text version:
  • High Performance engine - Optimizations - compiler, bytecode and runtime
  • Modular Nimble Engine - services as independent modules
  • Enterprise Class Package Manager - CLI, dependencies, public/private repository
  • Language Revamp - performance, OOP, concurrency, extending lang
  • Language - improved logging, image manipulation, deploy anywhere WAR
  • Security
  • Existing feature enhancement
If this is only the highlights... that's a huge amount of work just there. And this is all with a view, apparently, to try to achieve this faster release cycle (which they said they'd be doing with ColdFusion 11, but never achieved).  Rakshith confirmed it's still part of the plan, y/day:

Here's the thing though... all that stuff there is probably a year's work in itself, and it won't be the sum total of the whole project. Plus there's already at least one updater's worth of issues in ColdFusion 11 to take care of, and I really hope a significant updater for ColdFusion 10 to back-port a bunch of the issues fixed in 11.

So I think they should release an 11.5, and focus on one thing: "Modular Nimble Engine - services as independent modules". Well ignore the marketing angle, and just "modularise the engine". This by itself is a serious undertaking, but it will shape the way for everything else in ColdFusion going forward. This would need to be coupled to the concept of the package manager. Having a modularised language only works if there's a way to manage the modules.

Once the engine is modularised, then they can make the core language free. As Andy pointed out this morning:

This is essential to perpetuate the uptake of ColdFusion. Languages are free these days. That's it. Obviously Railo have got this ground covered, but I'm specifically thinking about ColdFusion's future here.

So how does Adobe make money from ColdFusion? I guess they make compelling modules that they can bundle together atop the core language: <cfclient>, PDF generation, image manipulation etc. Charge for those. People will want to buy them (not all people, obviously, but there will be a bunch of people - chequebooks at the ready - to pay for those modules). But they need to resolve themselves to the fact that it's a barrier to entry to charge for the actual language. Give the language away, and this will build the community base for then upselling them the modules. And for enterprise customers, a whole bunch of modules can be sold as a bundle so that the cost centres can remain the same.

Money aside, once the language is modularised, it should expedite further development of modules, bugfixing etc, as a module's surface area will be reduced.

Talking to some people today, there's skepticism as to whether "increasing uptake" of ColdFusion is really on Adobe's radar at all, instead their content to milk their US govt (and EU govt too, I understand) support & upgrade contracts, so they don't really need to worry about making it a more attractive prospect to the great wodge of developers out there who could conceivably be convinced to shift to CFML if ColdFusion was more accessible to them (cost and usage, both). As cynical as I am, I really hope this is not the case.

Anyway, I think Adobe need to be less optimistic about what they can get into a release, and just do the modularisation first, as a baseline for all future work. And as this is not, in an of itself, a very sellable feature, it should just be an "11.5" exercise not a "12", but get on with it now, and aim to get it released within the next 12 months. Then the more feature-y stuff can go into ColdFusion 2016.

I hope to collar Rakshith at some point whilst at CFObjective and see what he thinks about this sort of thing. In the meantime, what are your thoughts?