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 Type||Key||Version||Summary||Status / Resolution||Created||Updated||Triaged?||Important?|
|Bug||RAILO-3065||4.2.0.009||Semi-colon required before array literal||Closed / Rejected||15/5/2014||16/5/2014||Yes||No|
|Bug||RAILO-3047||4.2.0.005||listFilter() doesn't correctly handle multi-char delimiters||Resolved / Done||27/4/2014||2/5/2014||Yes||Yes|
|Bug||RAILO-3038||4.2.0.007||Typo in error message||Resolved / Done||21/4/2014||13/5/2014||Yes||No|
|Bug||RAILO-3030||4.2.0.007||list iteration functions need to pass the delimiter into the callback||Resolved / Done||11/4/2014||17/4/2014||Yes||Yes|
|Feature||RAILO-3029||4.2.0.007||listSome() seems to exit prematurely?||Open / Unresolved||11/4/2014||11/4/2014||No||Yes|
|Bug||RAILO-3016||4.2.0.006||CFCACHE doesn't seem to work with simplest example||Resolved / Rejected||5/4/2014||8/4/2014||Yes||Yes|
|Feature||RAILO-3008||4.2.0.006||Revise approach to savecontent||Open / Unresolved||31/3/2014||31/3/2014||Yes||Yes|
|Feature||RAILO-3006||4.2.0.006||Open / Unresolved||30/3/2014||30/3/2014||No||No|
|Bug||RAILO-3000||4.2.0.006||Bug with scoping inside iterator functions||Resolved / Rejected||26/3/2014||8/4/2014||Yes||No|
|Feature||RAILO-2942||4.2.0.002||Iterators and generators||Open / Unresolved||6/3/2014||6/3/2014||No||Yes|
|Feature||RAILO-2934||4.2.0.001||Callback versions of listSort(), structSort(), querySort() to match arraySort()||Open / Unresolved||28/2/2014||28/2/2014||No||Yes|
|Bug||RAILO-2928||4.2.0.001||Many string member functions not implemented||Open / Unresolved||24/2/2014||24/2/2014||Yes||Yes|
|Feature||RAILO-2926||Feature toggle system||Open / Unresolved||22/2/2014||22/2/2014||No||No|
|Bug||RAILO-2925||4.2.0.001||Fix isNull()||Open / Unresolved||22/2/2014||8/4/2014||Yes||No|
|Bug||RAILO-2924||4.2.0.001||Fix null-coalescing operator to do what it says on the tin||Resolved / Rejected||22/2/2014||8/4/2014||Yes||No|
|Bug||RAILO-2889||4.2.0.001||Semi-colon required after BREAK and CONTINUE statements||Open / Unresolved||1/2/2014||1/2/2014||No||No|
|Feature||RAILO-2887||4.2.0.001||arrayEach() should pass the array index into the callback||Open / Unresolved||30/1/2014||30/1/2014||No||Yes|
|Feature||RAILO-2883||4.2.0.000||Add format mask to parseDateTime()||Open / Unresolved||29/1/2014||30/1/2014||Yes||Yes|
|Feature||RAILO-2882||4.2.0.000||Deprecate ODBC functions, enhance date-formatting functions||Open / Unresolved||29/1/2014||30/1/2014||Yes||No|
|Bug||RAILO-2881||4.2.0.000||parseDateTime() doesn't interpret just a YYYY ISO date correctly||Resolved / Done||29/1/2014||8/5/2014||Yes||No|
|Feature||RAILO-2880||4.2.0.000||createOdbc~() functions do not do what they say on the tin||Open / Unresolved||29/1/2014||29/1/2014||No||No|
|Bug||RAILO-2861||4.2.0.000||Bug in scientific notation parsing||Open / Unresolved||21/1/2014||21/1/2014||Yes||No|
|Bug||RAILO-2828||4.1.2.005||Glitch in parser||Resolved / Done||7/1/2014||8/1/2014||Yes||No|
|Feature||RAILO-2814||4.1.2.006||Allow the type of variables to be specified||Open / Unresolved||23/12/2013||24/12/2013||Yes||Yes|
|Feature||RAILO-2788||4.1.2.005||Railo ignores chr(0) in strings||Open / Unresolved||7/12/2013||7/12/2013||No||No|
|Feature||RAILO-2650||4.1.1.005||Make sure isValid("email") matches ColdFusion's implementation||Open / Unresolved||9/10/2013||10/10/2013||Yes||No|
|Feature||RAILO-2629||4.1.1.004||Make built-in functions first class||Open / Unresolved||28/9/2013||28/9/2013||No||No|
|Bug||RAILO-2616||4.1.1.003||QoQ CAST() bug||Open / Unresolved||20/9/2013||23/9/2013||Yes||No|
|Bug||RAILO-2606||4.1.1.003||param does not support associative array syntax||Open / Unresolved||10/9/2013||11/9/2013||No||Yes|
|Bug||RAILO-2605||4.1.1.003||param does not support scoped variables||Open / Unresolved||10/9/2013||31/5/2014||No||Yes|
|Feature||RAILO-2582||<=>: compare operator||Open / Unresolved||19/8/2013||21/8/2013||No||No|
|Feature||RAILO-2581||==~: regex compare operator||Open / Unresolved||19/8/2013||21/8/2013||Yes||No|
|Feature||RAILO-2580||?.: safe navigation operator||Open / Unresolved||19/8/2013||17/2/2014||Yes||No|
|Feature||RAILO-2579||.. and ... range operators (and Range data type)||Open / Unresolved||19/8/2013||5/12/2013||Yes||No|
|Bug||RAILO-2575||4.1.1.001||TOP functionality not quite implemented correctly in CFDUMP||Resolved / Done||19/8/2013||22/10/2013||Yes||No|
|Feature||RAILO-2278||dbvarname on cfprocparam||Open / Unresolved||31/1/2013||31/1/2013||No||Yes|
|Bug||RAILO-2256||4.0.2.000||Bug in hashCode()||Resolved / Duplicate Issue||18/1/2013||18/1/2013||Yes||No|
|Bug||RAILO-2228||4.0.2.002||listToArray() incompat with ColdFusion||Resolved / Done||29/12/2012||11/1/2013||Yes||Yes|
|Feature||RAILO-2128||4.0.0.013||Typo in info screen||Open / Unresolved||26/10/2012||26/10/2012||No||No|
|Bug||RAILO-2096||4.0.0.013||RESTful web services do not correctly handle character encoding||Open / Unresolved||8/10/2012||8/10/2012||Yes||No|
|Feature||RAILO-2078||4.0.0.013||valueList() should take any expression that evaluates to a query column||Resolved / Done||29/9/2012||4/10/2012||Yes||No|
|Bug||RAILO-2070||4.0.0.013||arrayReverse() should update the array inline like other array functions||Open / Unresolved||18/9/2012||18/9/2012||No||No|
|Feature||RAILO-2069||4.0.0.013||Locale support for arraySort()||Resolved / Done||18/9/2012||18/9/2012||Yes||No|
|Bug||RAILO-2059||4.0.0.013||Bug with parameter parser in Query.cfc||Open / Unresolved||7/9/2012||7/9/2012||Yes||No|
|Bug||RAILO-2048||4.0.0.013||Incompatibility with ColdFusion in arraySwap() behaviour with sparse arrays||Resolved / Done||27/8/2012||27/8/2012||Yes||No|
|Bug||RAILO-2046||4.0.0.013||arrayDelete()||Resolved / Done||23/8/2012||27/8/2012||Yes||No|
|Bug||RAILO-2045||3.3.4.003||arrayContains() should take any data type in the second argument||Resolved / Done||23/8/2012||27/8/2012||Yes||No|
|Bug||RAILO-2042||3.3.4.003||Probable bug with duplicate()||Resolved / Done||22/8/2012||29/8/2012||Yes||No|
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).
Update: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.