I think your argument that function metadata should not support colons in the attribute names because they currently support colons for assignment in function attributes is not the best reason.
I don’t have CF11 installed, so I’m testing on CF10, but my testing on CF10 shows that ACF does not support colons for function metadata assignment, as in:
<cffunction name=“foo” colon:“colonified”>
So if Railo supports this, it is different from ACF. ACF also supports this syntax:
And according to the bug tracker, at least in CF11 (possibly being back-ported to CF10), this is supported (I have not checked):
// WORKS:
function foo() colon:foo=“colonified” {}
So if Railo choose not to support this syntax, it will be (yet another?) deviation from ACF.
You also say that in CFML namespaces “don’t exist.” Just because we don’t have a WSDL doesn’t mean namespaces don’t exist. Perhaps “namespace” is a bit of a misnomer, maybe “prefix” would be more reasonable. (We could argue the finer points of that, but in the end it doesn’t really matter what you call it.) Their reason for existing (and they do exist) is to allow framework developers to use reasonable variable names without fear of collision with another framework or a future core-language feature. For example, should CFML add a “URI” attribute for REST (or some other functionality) support, there is no danger of a collision with Taffy because it uses “taffy:uri” and “taffy_uri” (both are supported because of the aforementioned bug in CFScript).
Prefixing is clearly a good idea. And if colon is an available character, I think it makes a lot of sense to use it. Adobe seems to agree that it’s a reasonable addition, because they support it for tags and are fixing (have fixed?) it for script.
The only reasonable explanation I’ve seen so far has been your explanation of why it doesn’t work for tags/component{}, but does work for functions… That explains why things work the way they do, but I still don’t think it’s a good reason not to support this functionality. The argument essentially becomes, “it’s hard” or “it would make the code messy” (to add in exceptions to the general rule of how things work currently). Neither of which are valid arguments, in my opinion. It’s a consequence of the choice to implement script as a general solution to drop the angle brackets from tags; combined with the consequence of supporting colons for assignment anywhere outside of structures and function-execution argument lists, which as far as I can tell, are the only two places that ACF supports them. Basically: you’ve made your bed, now you’re complaining about sleeping in it.
Adam