On the TAP discussion list, there's a robust debate over the future of TAP diagnostics. To a large extent, it's been pretty much settled that TAP diagnostics will be in YAML format. Currently, there are no diagnostics. You might think there are, but what you see is unstructured information dumped to STDERR. By a happy accident, you can deterministically read the file and line number, but that's it. Any other diagnostic information is effectively lost and a human has to eyeball it. People have tried a number of times to work around this, but to no avail. Thus, we need structured diagnostics. Most of you won't, but just because you are happy with plain text, someone who requires RTF isn't going to be happy with Notepad.
For the most part, we aim to ensure that the casual user sees no difference. Got that? The casual user should see no difference! Under the hood, however, you should be able to tweak that engine to your heart's content. People like me need to get under the hood. People like Yahoo! need to get under the hood (and they've already shoehorned some of their needs on top of TAP). If we really want the 'A' in TAP to stand for 'Anything', then we need to provide for this. Thus, diagnostics need to allow user-supplied keys.
That's where the disagreement starts. Schwern argues that we should have them completely free-form. We can't predict what the user needs and therefore we shouldn't try.
The counter-argument from chromatic is that if two TAP streams supply a key named 'Time' and one means 'start time' and the other means 'duration', how can a client possibly disambiguate them? Requiring identifying prefixes on the keys eliminates the ambiguity.
While I am very sympathetic to Schwern's point of view, the problem is the same problem with blessed hashes and large applications. Key collision can be very painful and difficult to debug. People with serious test suite needs aren't going to be terribly impressed when you tell them to build rich clients on unreliable keys.
The problem with chromatic's point of view is that at the end of the day, we're actually trying to attach semantic meaning to these keys and the only unambiguous way to do that is to define authorities for any prefix and this goes way beyond the scope of TAP.
I am, however sympathetic to chromatic's point of view and while I don't think he would argue for providing canonical authorities for prefixes, I think he would agree with requiring users to supply arbitrary but meaningful prefixes (in fact, I think this is what chromatic meant) for their keys or to group them under said prefix. This is admittedly ambiguous, but less so than just an unstructured mass of data. Clients can then selectively choose to use official TAP keys and known prefixes.
There was a claim that since we don't know what people will do with these, we're arguing from ignorance. I don't buy this because there is plenty of prior art in this area. Just look at TestNG, ant XML test output or any other well-used test-information structure. We can see plenty of what people need in the real world. Much of it doesn't always apply to different problem domains and hence the necessity of allowing systems to disambiguate their keys from other's keys.
Failing to provide even basic namespace safety leads to the problems you see in COBOL or PHP where you have ridiculously long function names which embed a faux namespace. It's a nightmare to work with (I speak from plenty of experience here).
If we go down the typical Perl route of being Captain of the USS Make Shit Up, how on earth can we convince those with serious testing needs that TAP is a serious protocol? It's a stated goal of ours to bring TAP to a wider audience. If we don't do this, we need to rename TAP to TAPDANCE: Test Anything Protocol Doesn't Address Needed Commercial Exigencies.