Wednesday, 14 May 2014

CF.Objective(): what to put into ColdFusion 2016

First things first... I'm suffering from "writer's block" (such as it can be described with what I do here), which is really unfortunate whilst sitting at CF.Objective() and having no idea what or how to write. This frickin' hangover doesn't help, either.

Anyway, I'm only slightly engaged with the keynote presentation (sorry Jen), so will dwell on something Jason Dean said in the intro whilst I direct one ear to the front of the room. Adobe are running a competition today wherein they are soliciting the community for what people consider the top five (I think it was five?) potential features for ColdFusion 2016. So this article has a twofold purpose... for me to formalise my thoughts whilst I write, and for you lot to put your oar in. The competition only runs until after lunchtime today (so like 4h time), but in general let's think about this.

I've previously written down my thoughts on this back before ColdFusion 11 was released: "What do I want to see in ColdFusion 11?". It's pleasing to see a lot of that list have actually made it into the product:

  • Member functions
  • First class functions
  • 100% CFScript coverage
  • queryExecute()
  • Express install

This is pretty good!

So what do I now think should go into the language / product?

Retool ColdFusion to be modular

CF is very bloated, and I personally don't use a lot of it: charting, Office integration, PDF stuff, image stuff, most of the DB drivers, etc. I would like anything that is not "core language" removed from the product, and reimplemented as pluggable modules. At the same time, make the core language completely free (and not in any way hamstrung). Part of this solution should be to implement a package manager to facilitate installation / packaging / deployment of not only the other Adobe packages (eg: the PDF-manipulation package; the charting package), but third party packages as well. Adobe need to take their cue from NPM / Ruby Gems / etc.

Community Engagement

This isn't a ColdFusion feature, but something Adobe need to work on to improve CF as a viable player in the programming community. The team need to engage in the community an awful lot better than they do now. I think they should also "revitalise" the dev team so the team members all use CF on a regular basis as a part of their professional life. They should be web devs as well as enterprise Java devs. If this means a personnel change: so be it. I find most of the ColdFusion team to be completely detached from the reality the ColdFusion community is working in daily, and this comes across in the work they deliver.

Shorter release cycle

Two years is too long. Bugs need to be fixed when they're raised, not two years (or four years, six years, etc) later. Features need to be released every few months, when they are timely. How this will work with their licensing model? Dunno.

Bundle... a framework

Not FW/1 or ColdBox etc, but something along the lines of Rails / Grails. And not a "kinda like ~" but actually as good / better.

Open source it

At least the core language part of it. I don't care so much about the additional bundles, but the core language should be open source.

Interestingly: I cannot think of a specific language feature I really am hanging out for.

What would you want them to add?

[sorry: this is a dreadfully written article, I know. Hopefully I'll lift my game later in the day / week].