On German’s point, to be honest in pre-4.1 any new changes we tried to add
with a flag after concerns for breaking changes were raised. So in that
sense I think it will be confusing to flip that to - new output by default
and moving to legacy the old one

On Thu, 13 Jul 2023 at 12:09, German Eichberger via dev <
dev@cassandra.apache.org> wrote:

> Let's take this discussion in a different direction: If we add a --legacy
> <version>​ argument where we are supporting an old version for those who
> need/want it but have the (breaking) changes on the default this feels like
> a compromise - and then we can deprecate the legacy format without
> impacting innovation. We can also flip this with requiring a flag for the
> changed format if we feel this is better.
>
> This let's us innovate without breaking anyone. Thoughts?
>
> Thanks,
> German
>
> ------------------------------
> *From:* Miklosovic, Stefan <stefan.mikloso...@netapp.com>
> *Sent:* Thursday, July 13, 2023 8:20 AM
> *To:* dev@cassandra.apache.org <dev@cassandra.apache.org>
> *Subject:* [EXTERNAL] Re: Changing the output of tooling between majors
>
> "Dinesh's message cautions against making "breaking" changes that are
> likely to break parsing of output by current users (e.g., changes to
> naming/meaning/"
>
> That is 100% correct. So by that logic, changing the output which you grep
> on to something else will break your scripts if you expect it there.
>
> For example, take sstablemetadata command - I know it is not nodetool but
> it does not matter. This is just an example. Same "problem" can be found in
> nodetool probably, sstablemetadata just came to my mind first as that is
> what I hit recently.
>
> sstablemetadata write this:
>
> Repaired at: 0
> Originating host id: d2d12c56-7d9c-49a7-aaef-05bd2633b09e
> Pending repair: --
> Replay positions covered: {CommitLogPosition(segmentId=1689261027905,
> position=59450)=CommitLogPosition(segmentId=1689261027905, position=60508)}
> totalColumnsSet: 0
> totalRows: 1
> Estimated tombstone drop times:
>
>
> Do you see "totalColumsSet" and "totalRows" when all other keys in that
> ouput (in whole command) are following different format? In this case, it
> should be "Total columns set" and "Total rows".
>
> So when we change it to that, anybody who is grepping "totalRows" will
> have no output. That is a breaking change to me. His script stopped to work.
>
> You are correct and I agree with you completely that STRICT ADDITIONS
> (what I was suggesting) are fine because we are not breaking anything to
> anybody.
>
> So here, if I want to change this, by what Dinesh says, (we change the
> naming and we break it), I need to offer JSON / YAML alternative to what
> sstablemetadata prints currently. (might be as well nodetool, just an
> example).
>
> ________________________________________
> From: C. Scott Andreas <sc...@paradoxica.net>
> Sent: Thursday, July 13, 2023 17:01
> To: dev@cassandra.apache.org
> Cc: dev@cassandra.apache.org
> Subject: Re: Changing the output of tooling between majors
>
> NetApp Security WARNING: This is an external email. Do not click links or
> open attachments unless you recognize the sender and know the content is
> safe.
>
>
>
> Dinesh's message cautions against making "breaking" changes that are
> likely to break parsing of output by current users (e.g., changes to
> naming/meaning/position of existing fields vs. adding new ones). I don't
> read his message as saying that any change to nodetool output is
> conditional on offering a JSON/YAML representation, though.
>
> What are some changes that you'd like to make?
>
> – Scott
>
> On Jul 13, 2023, at 7:44 AM, "Miklosovic, Stefan" <
> stefan.mikloso...@netapp.com> wrote:
>
>
> For example Dinesh said this:
>
> "Until nodetool can support JSON as output format for all interaction and
> there is a significant adoption in the user community, I would strongly
> advise against making breaking changes to the CLI output."
>
> That is where I get the need to have a JSON output in order to fix a typo
> from. That is if we look at fixing a typo as a breaking change. Which I
> would say it is as if somebody is "greping" it and it is not there, it will
> break.
>
> Do you understand that the same way or am I interpreting that wrong?
>
> ________________________________________
> From: C. Scott Andreas <sc...@paradoxica.net>
> Sent: Thursday, July 13, 2023 16:35
> To: dev@cassandra.apache.org<mailto:dev@cassandra.apache.org>
> Cc: dev
> Subject: Re: Changing the output of tooling between majors
>
> NetApp Security WARNING: This is an external email. Do not click links or
> open attachments unless you recognize the sender and know the content is
> safe.
>
>
>
> "From what I see you guys want to condition any change by offering
> json/yaml as well."
>
> I don't think I've seen a proposal to block changes to nodetool output on
> machine-parseable formats in this thread.
>
> Additions of new delimited fields to nodetool output are mostly
> straightforward. Changes to fields that exist today are likely to cause
> problems - as Josh mentions. These seem best to take on a case-by-case
> basis rather than trying to hammer out an abstract policy. What changes
> would you like to make?
>
> I do think we will have difficulty evolving output formats of text-based
> Cassandra tooling until we offer machine-parseable output formats.
>
> – Scott
>
> On Jul 13, 2023, at 6:39 AM, Josh McKenzie <jmcken...@apache.org> wrote:
>
>
> I just find it ridiculous we can not change "someProperty: 10" to "Some
> Property: 10" and there is so much red tape about that.
> Well, we're talking about programmatic parsing here. This feels like
> complaining about a compiler that won't let you build if you're missing a ;
>
> We can change it, but that doesn't mean the aggregate cost/benefit across
> our entire ecosystem is worth it. The value of correcting a typo is pretty
> small, and the cost for everyone downstream is not. This is why we should
> spellcheck things in API's before we release them. :)
>
> On Wed, Jul 12, 2023, at 2:45 PM, Miklosovic, Stefan wrote:
> Eric,
>
> I appreciate your feedback on this, especially more background about where
> you are comming from in the second paragraph.
>
> I think we are on the same page afterall. I definitely understand that
> people are depending on this output and we need to be careful. That is why
> I propose to change it only each major. What I feel is that everybody's
> usage / expectations is little bit different and outputs of the commands
> are very diverse and it is hard to balance this so everybody is happy.
>
> I am trying to come up with a solution which would not change the most
> important commands unnecessarily while also having some free room to tweak
> the existing commands where we see it appropriate. I just find it
> ridiculous we can not change "someProperty: 10" to "Some Property: 10" and
> there is so much red tape about that.
>
> If I had to summarize this whole discussion, the best conclustion I can
> think of is to not change what is used the most (this would probably need
> to be defined more explicitly) and if we have to change something else we
> better document that extensively and provide json/yaml for people to be
> able to divorce from the parsing of human-readable format (which probably
> all agree should not happen in the first place).
>
> What I am afraid of is that in order to satisfy these conditions, if, for
> example, we just want to fix a typo or the format of a key of some value,
> the we would need to deliver JSON/YAML format as well if there is not any
> yet and that would mean that the change of such triviality would require
> way more work in terms of the implementation of JSON/YAML format output.
> Some commands are quite sophisticated and I do not want to be blocked to
> change a field in human-readable out because providing corresponding
> JSON/YAML format would be gigantic portion of the work itself.
>
> From what I see you guys want to condition any change by offering
> json/yaml as well and I dont know if that is just not too much.
>
>
> ________________________________________
> From: Eric Evans <eev...@wikimedia.org<mailto:eev...@wikimedia.org>>
> Sent: Wednesday, July 12, 2023 19:48
> To: dev@cassandra.apache.org<mailto:dev@cassandra.apache.org><mailto:
> dev@cassandra.apache.org>
> Subject: Re: Changing the output of tooling between majors
>
> You don't often get email from eev...@wikimedia.org<mailto:
> eev...@wikimedia.org><mailto:eev...@wikimedia.org>. Learn why this is
> important<https://aka.ms/LearnAboutSenderIdentification>
> NetApp Security WARNING: This is an external email. Do not click links or
> open attachments unless you recognize the sender and know the content is
> safe.
>
>
>
>
>
> On Wed, Jul 12, 2023 at 1:54 AM Miklosovic, Stefan <
> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com><mailto:
> stefan.mikloso...@netapp.com<mailto:stefan.mikloso...@netapp.com>>> wrote:
> I agree with Jackson that having a different output format (JSON/YAML) in
> order to be able to change the default output resolves nothing in practice.
>
> As Jackson said, "operators who maintain these scripts aren’t going to
> re-write them just because a better way of doing them is newly available,
> usually they’re too busy with other work and will keep using those old
> scripts until they stop working".
>
> This is true. If this approach is adopted, what will happen in practice is
> that we change the output and we provide a different format and then a user
> detects this change because his scripts changed. As he has existing
> solution in place which parses the text from human-readable output, he will
> try to fix that, he will not suddenly convert all scripting he has to
> parsing JSON just because we added it. Starting with JSON parsing might be
> done if he has no scripting in place yet but then we would not cover
> already existing deployments.
>
> I think this is quite an extreme conclusion to draw. If tooling had
> stable, structured output formats, and if we documented an expectation that
> human-readable console output was unstable, then presumably it would be
> safe to assume that any new scripters would avail themselves of the stable
> formats, or expect breakage later. I think it's also fair to assume that at
> least some people would spend the time to convert their scripts,
> particularly if forced to revisit them (for example, after a breaking
> change to console output). As someone who manages several large-scale
> mission-critical Cassandra clusters under constrained resources, this is
> how I would approach it.
>
> TL;DR Don't let perfect by the enemy of good<
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPerfect_is_the_enemy_of_good&data=05%7C01%7CGerman.Eichberger%40microsoft.com%7Cc64a38a8cbb04d68807908db83b4d34a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638248584902482700%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vHDB8PBizpHJLMRh%2BDg%2F8bKIOb2IyKMxF1p1lsqyDwE%3D&reserved=0<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPerfect_is_the_enemy_of_good&data=05%7C01%7CGerman.Eichberger%40microsoft.com%7Cc64a38a8cbb04d68807908db83b4d34a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638248584902482700%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vHDB8PBizpHJLMRh%2BDg%2F8bKIOb2IyKMxF1p1lsqyDwE%3D&reserved=0><https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPerfect_is_the_enemy_of_good&data=05%7C01%7CGerman.Eichberger%40microsoft.com%7Cc64a38a8cbb04d68807908db83b4d34a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638248584902482700%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vHDB8PBizpHJLMRh%2BDg%2F8bKIOb2IyKMxF1p1lsqyDwE%3D&reserved=0<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPerfect_is_the_enemy_of_good&data=05%7C01%7CGerman.Eichberger%40microsoft.com%7Cc64a38a8cbb04d68807908db83b4d34a%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638248584902482700%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vHDB8PBizpHJLMRh%2BDg%2F8bKIOb2IyKMxF1p1lsqyDwE%3D&reserved=0
> <https://en.wikipedia.org/wiki/Perfect_is_the_enemy_of_good>>>>
>
>
> [ ... ]
>
> For that reason, what we could agree on is that we would never change the
> output for "tier 1" commands and if we ever changed something, it would be
> STRICT ADDITIONS only. In other words, everything it printed, it would
> continue to print that for ever. Only new lines could be introduced. We
> need to do this because Cassandra is evolving over time and we need to keep
> the output aligned as new functionality appears. But the output would be
> backward compatible. Plus, we are talking about majors only.
>
> The only reason we would ever changed the output on "tier 1" commands, if
> is not an addition, is the fix of the typo in the existing output. This
> would again happened only in majors.
>
> All other output for all other commands might be changed but their output
> will not need to be strictly additive. This would again happen only between
> majors.
>
> What is you opinion about this?
>
> To be clear about where I'm coming from: I'm not arguing against you or
> anyone else making changes like these (in major versions, or otherwise). If
> —for example— we had console output that was incorrect, incomplete, or
> obviously misleading, I'd absolutely want to see that fixed, script
> breakage be damned. All I want is for folks to recognize the problems this
> sort of thing can create, and show a bit of empathy before submitting a
> change. For operators on the receiving end, it can be really frustrating,
> especially when there is no normative change (i.e. it's in service of
> aesthetics).
>
> --
> Eric Evans<mailto:eev...@wikimedia.org<mailto:eev...@wikimedia.org
> <eev...@wikimedia.org%3Cmailto:eev...@wikimedia.org>>>
> Staff SRE, Data Persistence
> Wikimedia Foundation
>
>
>
>
>
>
>
>

Reply via email to