Hi list,

I want to clarify the policy we have when we want to / going to change the 
output of the tooling (nodetool or tools/bin etc.).

I am not sure it is written somewhere explicitly, but how I get it from the 
gossip over years is that we should not change the output (e.g. changing the 
name of fields etc) in minors, but for majors (4.0 -> 5.0), this is OK, correct?

For example, when some tool prints this:

thisIsAStatistic: 10

and we see that all other lines in that output print it like this:

This Is Another Statistic: abc

scratching the itch is almost irresistible so we want to change the output to:

This Is a Statistic: 10

This is the natural way how fixes are done. We are improving the output, making 
it consistent etc.

Someone may argue that we are changing "public api" and people are actually 
parsing the output like this and we better not to change it because we might 
break "the scripts" for somebody.

While I get this for minors and it is understandable that minors should be 
same, is this relevant for majors? Because if we care about majors too in this 
situation, how are we supposed to evolve the output over time? Is it supposed 
to be just frozen for ever? I do not buy this argument. For minors, fine. But 
for majors, I do not think so.

I feel like "not break the output because API" is more or less an urban legend 
we keep repeating ourselves. I yet need to meet somebody who is stressing over 
the fact that her output changed *between majors*.

If that is the case, we should start to treat this problem completely 
differently and we should not rely on the output of tooling at all and we 
should either provide corresponding JMX method to retrieve it or we should 
offer other formats tooling prints, like JSON or YAML.

Anyway, the main question here is if we are OK to change the output in majors.

Regards

Reply via email to