Thursday 13 November 2014

ColdFusion 2016: instead of <cfbell> and <cfwhistle>...

I was asked to comment on Microsoft's announcement that the entire .Net Framework is going open source (".NET Core is Open Source"), and what we - the CFML community - should think about that in the context of ColdFusion.

Obviously Railo is already a completely open source CFML solution, but the bulk of people are either willfully or necessarily tithed to ColdFusion, so Railo doesn't help most people. On one hand I think "more fool them", but on the other hand, this does not give ColdFusion itself many excuses.

This is not a new thought, indeed every time most people offer a "wish list" for the next release of ColdFusion, it includes a nod to open sourcing it. The most insightful reaction Adobe have thusfar come back with is "no".

I think Adobe seriously need to revise their position here. Surely they can see that their closed source model is out of date. Microsoft was one of the last hold-outs, and even now they've moved along with the rest of the software community. This leaves Adobe. And standing there alone, Cnut1-like in the face everyone else moving in the opposite direction, reduces what little credibility they have as a language vendor to basically nil. They're operating on last-decade business principles, and anachronicity like this just doesn't wash in the IT industry.

This is what I think Adobe need to do, to keep everyone - including themselves - happy.

Modularise ColdFusion

Separate out all the Adobe-written code and the third-party-written code completely, so they can be deployed separately. I don't necessarily mean they are only deployed separately, just that they can be.

Open source all their own code that goes into ColdFusion

There is third party code in there that quite reasonably (I guess...) doesn't have OSS licensing. Having done the first step above, this is now separate from the Adobe-written source code, so it enables the core Adobe-written components of ColdFusion to be open-sourced. This removes the chief "they probably can't open source because of [this]" issue.

Open source a builder

I don't mean ColdFusion Builder (I couldn't care less about CFB), I mean a mechanism to compile and package the ColdFusion source. With the core source code and a builder available, this should allow people to use a bare-bones version of ColdFusion to process CFML source code.

Open source the bug tracker

I don't mean the bug tracking software - that should just be deleted as the abomination that it is - but the bug tracking process. Be transparent with bugs, and allow people to properly participate in the upkeep of the CFML source. But also get rid of the existing bug tracker and use something that's of professional quality. Use Jira. For the love of god: use Jira.

Decouple the notion of language and application server

I only mean the language parsing and compilation should be open sourced. This is where Adobe still get to make money on this. The freely-built CFML engine should still require the dev to then set it up in a servlet container by themselves, and also to provide for any third-party packages they need to use (say the DataDirect JDBC drivers) that the core CFML engine doesn't provide.

So what Adobe sell is same as what they currently sell: a flavour of ColdFusion which is packaged into a .exe or .bin installer, which includes Tomcat and a JRE and Solr and all that carry-on. This will still be as appealing a product for most of their corporate clients as it ever was. It'll just have the value-add of crowd-sourced code maintenance.

Adobe could also perhaps sponsor some sort of sponsored bug-fix consultancy which connects businesses with developers when a business needs a specific bug dealt with, but it's not seeing any love for whatever reason. There's money to be spent and made right there. Obviously not a huge amount, but it just results in all parties being satisfied.

Open source the CFML language spec

In reality, Adobe make a lot of right decisions when it comes to CFML (having compared to how terribly it can go wrong, with PHP). However they also make some quite crap ones, and just ignore the community when this is pointed out to them. If Adobe want to release <cfclient>? Cool. Do it. But do it as an Adobe side project which is then bundled with their release of ColdFusion. However they ought to release the decisions about what goes into the core language to the community. Obviously they are part of the community and ought to also have input, but they should no longer be the sole decision-makers when it comes to the CFML language.

Inside the sausage factory

I suspect part of why Adobe don't want to open source the ColdFusion code base is that they'd not be particularly proud of a lot of their code, and don't want us to see it. Adobe: have a look at all the open source projects out there. A lot of them are bloody rubbish. I won't participate in a few CFML open source projects because the code quality is so far beneath my own particular levels of contempt I can't bring myself to look at it. But I'm particularly fussy like that. My point is everyone writes bad code, and we all get that. There's no harm here.

The best thing for ColdFusion and the CFML community

Adobe needs to stop playing the short-game. ColdFusion is not making any traction in the dev community for a bunch of reasons, but the fairest one is that it's closed source and it's simply too expensive for what it is. We can't help the latter, but that's Adobe's problem. We can help the former, if you'll just let us (I mean "let us help").


This'll probably just garner a "no" from the high-ups in the ColdFusion Team. But here's a challenge for all of Tridib, Kishore, Rakshith and Hemant: please explain yourself. Why not? Why is ColdFusion so particular in that it cannot embrace OSS like everyone else seems to be able to? Why is your position on this the way it is? I think the community could really benefit from an decent explanation as to why you think it's appropriate for ColdFusion to trail behind the rest of the industry in this area.

I'm sure we all await with bated breath...


1 I'm using the popular understanding of Cnut and the tide there, not the real one. I understand this.