Wednesday 25 June 2014

Looking at the bugs I've raised in Railo

I've always banged on about how Adobe deal with ColdFusion bugs, and what my opinion is of this. I have not - to date - cast my magnifying glass in Railo's direction...

Part of this is because Railo have a far superior bug tracking system - Jira - and one can very easily do one's own analysis (so if anyone is interested, they can DIY). The other part was on the whole I have found myself satisfied with Railo's approach to bugfixes. Well that's the impression I had got, anyhow. Having done some analysis... hmmm.

Realistically on the whole the Railo guys are great. I've added a table below listing how all the bugs I have raised have been dealt with (or ignored).

I will also add that Railo is an OSS operation, so I have less expectation of them to fix issues I raise, as I have paid them nothing, and if I really wanted to, I could fix the bugs myself. On the other hand I have paid for ColdFusion, so if I find a bug that gets in my way, I consider that I have already paid for working software, so there is a burden on them to fix significant bugs ASAP. Which, obviously, they generally don't do. However this article is about Railo, not Adobe, so I'll stop there.

Here's a table of the bugs/issues I have raised with Railo, and their current status. This was taken from an export from Jira, and a bit of dollying up. I've colour-coded some bits and pieces, in what I think are in an obvious way: green: satisfactory; red: not satisfactory; orange: in the middle.

Issue TypeKeyVersionSummaryStatus / ResolutionCreatedUpdatedTriaged?Important?
BugRAILO-30654.2.0.009Semi-colon required before array literalClosed / Rejected15/5/201416/5/2014YesNo
BugRAILO-30474.2.0.005listFilter() doesn't correctly handle multi-char delimitersResolved / Done27/4/20142/5/2014YesYes
BugRAILO-30384.2.0.007Typo in error messageResolved / Done21/4/201413/5/2014YesNo
BugRAILO-30304.2.0.007list iteration functions need to pass the delimiter into the callbackResolved / Done11/4/201417/4/2014YesYes
FeatureRAILO-30294.2.0.007listSome() seems to exit prematurely?Open / Unresolved11/4/201411/4/2014NoYes
BugRAILO-30164.2.0.006CFCACHE doesn't seem to work with simplest exampleResolved / Rejected5/4/20148/4/2014YesYes
FeatureRAILO-30084.2.0.006Revise approach to savecontentOpen / Unresolved31/3/201431/3/2014YesYes
FeatureRAILO-30064.2.0.006 doesn't support clientinfo/fetchclientinfoOpen / Unresolved30/3/201430/3/2014NoNo
BugRAILO-30004.2.0.006Bug with scoping inside iterator functionsResolved / Rejected26/3/20148/4/2014YesNo
FeatureRAILO-29424.2.0.002Iterators and generatorsOpen / Unresolved6/3/20146/3/2014NoYes
FeatureRAILO-29344.2.0.001Callback versions of listSort(), structSort(), querySort() to match arraySort()Open / Unresolved28/2/201428/2/2014NoYes
BugRAILO-29284.2.0.001Many string member functions not implementedOpen / Unresolved24/2/201424/2/2014YesYes
FeatureRAILO-2926Feature toggle systemOpen / Unresolved22/2/201422/2/2014NoNo
BugRAILO-29254.2.0.001Fix isNull()Open / Unresolved22/2/20148/4/2014YesNo
BugRAILO-29244.2.0.001Fix null-coalescing operator to do what it says on the tinResolved / Rejected22/2/20148/4/2014YesNo
BugRAILO-28894.2.0.001Semi-colon required after BREAK and CONTINUE statementsOpen / Unresolved1/2/20141/2/2014NoNo
FeatureRAILO-28874.2.0.001arrayEach() should pass the array index into the callbackOpen / Unresolved30/1/201430/1/2014NoYes
FeatureRAILO-28834.2.0.000Add format mask to parseDateTime()Open / Unresolved29/1/201430/1/2014YesYes
FeatureRAILO-28824.2.0.000Deprecate ODBC functions, enhance date-formatting functionsOpen / Unresolved29/1/201430/1/2014YesNo
BugRAILO-28814.2.0.000parseDateTime() doesn't interpret just a YYYY ISO date correctlyResolved / Done29/1/20148/5/2014YesNo
FeatureRAILO-28804.2.0.000createOdbc~() functions do not do what they say on the tinOpen / Unresolved29/1/201429/1/2014NoNo
BugRAILO-28614.2.0.000Bug in scientific notation parsingOpen / Unresolved21/1/201421/1/2014YesNo
BugRAILO-28284.1.2.005Glitch in parserResolved / Done7/1/20148/1/2014YesNo
FeatureRAILO-28144.1.2.006Allow the type of variables to be specifiedOpen / Unresolved23/12/201324/12/2013YesYes
FeatureRAILO-27884.1.2.005Railo ignores chr(0) in stringsOpen / Unresolved7/12/20137/12/2013NoNo
FeatureRAILO-26504.1.1.005Make sure isValid("email") matches ColdFusion's implementationOpen / Unresolved9/10/201310/10/2013YesNo
FeatureRAILO-26294.1.1.004Make built-in functions first classOpen / Unresolved28/9/201328/9/2013NoNo
BugRAILO-26164.1.1.003QoQ CAST() bugOpen / Unresolved20/9/201323/9/2013YesNo
BugRAILO-26064.1.1.003param does not support associative array syntaxOpen / Unresolved10/9/201311/9/2013NoYes
BugRAILO-26054.1.1.003param does not support scoped variablesOpen / Unresolved10/9/201331/5/2014NoYes
FeatureRAILO-2582<=>: compare operatorOpen / Unresolved19/8/201321/8/2013NoNo
FeatureRAILO-2581==~: regex compare operatorOpen / Unresolved19/8/201321/8/2013YesNo
FeatureRAILO-2580?.: safe navigation operatorOpen / Unresolved19/8/201317/2/2014YesNo
FeatureRAILO-2579.. and ... range operators (and Range data type)Open / Unresolved19/8/20135/12/2013YesNo
BugRAILO-25754.1.1.001TOP functionality not quite implemented correctly in CFDUMPResolved / Done19/8/201322/10/2013YesNo
FeatureRAILO-2278dbvarname on cfprocparamOpen / Unresolved31/1/201331/1/2013NoYes
BugRAILO-22564.0.2.000Bug in hashCode()Resolved / Duplicate Issue18/1/201318/1/2013YesNo
BugRAILO-22284.0.2.002listToArray() incompat with ColdFusionResolved / Done29/12/201211/1/2013YesYes
FeatureRAILO-21284.0.0.013Typo in info screenOpen / Unresolved26/10/201226/10/2012NoNo
BugRAILO-20964.0.0.013RESTful web services do not correctly handle character encodingOpen / Unresolved8/10/20128/10/2012YesNo
FeatureRAILO-20784.0.0.013valueList() should take any expression that evaluates to a query columnResolved / Done29/9/20124/10/2012YesNo
BugRAILO-20704.0.0.013arrayReverse() should update the array inline like other array functionsOpen / Unresolved18/9/201218/9/2012NoNo
FeatureRAILO-20694.0.0.013Locale support for arraySort()Resolved / Done18/9/201218/9/2012YesNo
BugRAILO-20594.0.0.013Bug with parameter parser in Query.cfcOpen / Unresolved7/9/20127/9/2012YesNo
BugRAILO-20484.0.0.013Incompatibility with ColdFusion in arraySwap() behaviour with sparse arraysResolved / Done27/8/201227/8/2012YesNo
BugRAILO-20464.0.0.013arrayDelete()Resolved / Done23/8/201227/8/2012YesNo
BugRAILO-20453.3.4.003arrayContains() should take any data type in the second argumentResolved / Done23/8/201227/8/2012YesNo
BugRAILO-20423.3.4.003Probable bug with duplicate()Resolved / Done22/8/201229/8/2012YesNo

It's interesting that they've actually fixed far fewer issues (proportionally) than I thought. I was under the impression pretty much everything I raise gets fixed. It's less than 50% (closer to 33%). That said, I raise everything I notice, and not all of it is important to me (I should add a column for that, I guess. Done).


As Ryan points out in the comments below, I'm being a bit harsh with my analysis here (actually it's just a case of me being in a rush, and forgetting to consider this): I include feature requests in that calculation, and he rightly observes there ought to be no expectation as to when they're implemented. Indeed as I have no expectation of them being implemented, I should treat them accordingly. That being the case, the ratio comes down to [counts on fingers] 10/26, so around 60% fix rate.

What I think is not great is that there are so many issues that simply haven't been looked at at all: a full third of them. And a few of those date back to 2012. Harrumph.

Anyway, there you go. I've not much else to say on this, and it's time for me to start work.