> I merely remember Josh saying I say a lot of things. :D And I reserve the right to change my mind in the face of better thought through arguments.
> It could just be done in trunk, after any huge outstanding feature branches > are merged, and eventually it would just be a memory. I'm receptive to this. I strongly dislike the wasted vertical real-estate of our bracing style. On Thu, Jan 16, 2025, at 4:28 PM, Štefan Miklošovič wrote: > oh well, I was wrong, they were all big bangs: > > here we avoided star import everywhere and updated IDE configuration around > that > > https://github.com/apache/cassandra/pull/2041 > > here we sorted imports > > https://github.com/apache/cassandra/pull/2108 > > https://lists.apache.org/thread/d3s3ghkb81f7mbb6t09gy6t2nvl94nyy > > I merely remember Josh saying (yeah, really :D but I can't find that) that it > _should_ be rather gradual. But then we most probably just pulled the trigger > anyway, I really dont remember. > > On Thu, Jan 16, 2025 at 10:04 PM Štefan Miklošovič <smikloso...@apache.org> > wrote: >> All seasoned contributors already "got it" and there are no issues as far as >> I can tell. >> >> The "wrong" braces are most often happening for one-off patches and in that >> situation it just does not make sense to explain that to people. In that >> case I sometimes fix that on commmit, yes. >> >> For multi-branch patches, I am striving to not do anything with it. It >> really matters what it is. If I see one brace off ... whatever. But if it is >> a consistent pattern over the patch I tend to fix that all. >> >> We were holding back other patches related to massive "code refactoring". If >> you remember, we had some new rules around imports. I think we somehow >> enforced that imports will be explicitly enumerated (no * imports) plus they >> are following the same order (how is that enforced, heh? This is also an >> IDEA thing, braces might be similar) but we have not refactored all >> codebase. We said that once the code style / enforcement is in place, then >> all these changes will be done naturally as new code is added or modified. >> That means that it will not be one "big bang" patch and it will rather >> happen gradually. >> >> We have also contemplated refactoring javadocs etc. Maxim will know more. >> >> On Thu, Jan 16, 2025 at 9:52 PM Josh McKenzie <jmcken...@apache.org> wrote: >>> __ >>>> likely provide merge pain >>> Is there anyone that actually does merge commits w/adjustments to code for >>> any non-trivial patches, or does everyone else have to "-s ours" with >>> per-branch bespoke implementations and a --amend to the merge commit the >>> way I have to? Not to pile on project frustrations with a thread; just >>> genuinely curious. >>> >>> If we have a consensus of preference for the K&R style, we could >>> theoretically wait until immediately after accord merges then bulk update >>> all our branches w/bracing adjustment. I think we'd be able to surgically >>> do only that using intellij w/"Reformat Code" on a folder in the tree >>> structure. If someone created a profile constrained down to only bracing >>> style, I suspect we could hit it in one go. >>> >>> Now, the effect on git blame and potential loss of history w/out doing >>> something painful like imerge and history / annotation preservation? less >>> good. Maybe Jon has some ideas; he's done a lot of black magic with git. >>> >>> It would definitely have its costs, but it also wouldn't be a lot of toil >>> if timed and executed surgically. >>> >>> On Thu, Jan 16, 2025, at 3:34 PM, Tolbert, Andy wrote: >>>> > Isn't that what ant generate-idea-files does automatically? (that it >>>> > sets code style like that) >>>> >>>> Unless i'm not doing something right (very possible), I don't think it >>>> does this automatically with generate-idea-files. I've gotten in the >>>> habit of updating my Checkstyle plugin to pull in .build/checkstyle.xml >>>> whenever I regenerate my project. The checkstyle plugin is definitely >>>> very useful. >>>> >>>> It doesn't currently enforce any code style around braces since no rule is >>>> currently being enforced in the checkstyle configuration. >>>> >>>> Thanks, >>>> Andy >>>> >>>> On Thu, Jan 16, 2025 at 2:16 PM Štefan Miklošovič <smikloso...@apache.org> >>>> wrote: >>>>> _ The burden shouldn’t be on humans to place or check that every curly >>>>> brace is on its own line._ >>>>> >>>>> Who is actually doing this? It is one shortcut in IDEA and it all places >>>>> them correctly. I don't even know what the shortcut is, I never think >>>>> about that consciously anymore. >>>>> >>>>> Isn't that what ant generate-idea-files does automatically? (that it sets >>>>> code style like that) >>>>> >>>>> A committer can just format that upon merge, we do not need to stress >>>>> about that during reviews. >>>>> >>>>> On Thu, Jan 16, 2025 at 8:44 PM Jordan West <jw...@apache.org> wrote: >>>>>> IMO the more we can enforce the style guide programmatically the better. >>>>>> It was a big improvement when we got parts of it in IntelliJ. It saves >>>>>> time and reduces friction. The burden shouldn’t be on humans to place or >>>>>> check that every curly brace is on its own line. And if we say don’t >>>>>> check during review or automatically then why have a guide? Sure we can >>>>>> nitpick on the definition of the word “guide” here but I think we all >>>>>> mostly agree a uniform style (with some wiggle room for edge cases) is >>>>>> good for the project. Or again, why have the guide? >>>>>> >>>>>> The challenge is getting these tools to do what we want can be a pain as >>>>>> folks who have explored it have outlined. So then I think it comes back >>>>>> to Josh’s question (to paraphrase) of “is it good enough as is”? And as >>>>>> an aside we might want to ask ourselves “why have we chosen a style >>>>>> guide that is hard to implement in these tools?” >>>>>> >>>>>> If folks see some easy wins and want to volunteer time to make the >>>>>> changes I think we should encourage that. >>>>>> >>>>>> On Thu, Jan 16, 2025 at 07:35 Josh McKenzie <jmcken...@apache.org> wrote: >>>>>>> __ >>>>>>>> Perhaps a “Review Guide” is what we need to make sure we keep review >>>>>>>> primarily focused on the core contribution, and to help avoid folk >>>>>>>> getting bogged down in style sniping. >>>>>>> I recall reading through / offering this guide in the past as a >>>>>>> starting point for an org I was managing at the time: >>>>>>> https://google.github.io/eng-practices/review/reviewer/ >>>>>>> >>>>>>> Been years; might be worth it to have a skim through that and see if it >>>>>>> could serve as a reasonable starting point for us if someone has the >>>>>>> inclination. >>>>>>> >>>>>>> On Thu, Jan 16, 2025, at 9:17 AM, Benedict wrote: >>>>>>>> >>>>>>>> I can imagine that it might cause some frustrating review interactions >>>>>>>> people would like to avoid, but for solving that I’d prefer we take a >>>>>>>> more social approach. >>>>>>>> >>>>>>>> Review shouldn’t spend much time on minor style points, and these >>>>>>>> should normally be framed as suggestions. Obviously newer contributors >>>>>>>> may need pointing to the style guide as something to familiarise >>>>>>>> themselves with, but it shouldn’t readily be invoked as a “thou shalt >>>>>>>> do this” tool. >>>>>>>> >>>>>>>> Perhaps a “Review Guide” is what we need to make sure we keep review >>>>>>>> primarily focused on the core contribution, and to help avoid folk >>>>>>>> getting bogged down in style sniping. >>>>>>>> >>>>>>>> >>>>>>>>> On 16 Jan 2025, at 14:08, Josh McKenzie <jmcken...@apache.org> wrote: >>>>>>>>> >>>>>>>>> Right now our codebase is pretty consistent, especially for not >>>>>>>>> having a linter enforcing this kind of thing. Are we trying to solve >>>>>>>>> for codebase consistency, education of new contributors, both? >>>>>>>>> Neither? >>>>>>>>> >>>>>>>>> If just solving for consistency I'd argue we're good. If educating >>>>>>>>> new contributors, the Code Style guide *seems* pretty thorough to me? >>>>>>>>> https://cassandra.apache.org/_/development/code_style.html >>>>>>>>> >>>>>>>>> All of which is to say - it *feels* like the status quo is fine here >>>>>>>>> for me. i.e. it's not clear to me what problem we're trying to solve >>>>>>>>> w/a change here. >>>>>>>>> >>>>>>>>> On Wed, Jan 15, 2025, at 9:58 PM, guo Maxwell wrote: >>>>>>>>>> I agree with you for all these two points. >>>>>>>>>> >>>>>>>>>> I think you should open a ticket to solve this if you want to add a >>>>>>>>>> rule to checkstyle, as I know there are many old codes that do not >>>>>>>>>> comply with this rule. >>>>>>>>>> For point 2, this really feels like personal preference, but I'd >>>>>>>>>> probably listen to the reviewer's opinion.😁 >>>>>>>>>> >>>>>>>>>> Tolbert, Andy <x...@andrewtolbert.com> 于2025年1月16日周四 08:47写道: >>>>>>>>>>> Reading back https://issues.apache.org/jira/browse/CASSANDRA-19276 >>>>>>>>>>> a bit more, I think I *was* able to make checkstyle bend to the >>>>>>>>>>> "Code Style" definition by ignoring lambda tokens. It's just that >>>>>>>>>>> there were a lot of "violations" which defined a method on one line: >>>>>>>>>>> >>>>>>>>>>> public int getActiveTaskCount() { return 0; } >>>>>>>>>>> public long getCompletedTaskCount() { return 0; } >>>>>>>>>>> public int getPendingTaskCount() { return 0; } >>>>>>>>>>> public int getCorePoolSize() { return 0; } >>>>>>>>>>> public int getMaximumPoolSize() { return 0; } >>>>>>>>>>> >>>>>>>>>>> I felt that this code was perfectly readable and wouldn't be right >>>>>>>>>>> to change. This is what I wanted to make checkstyle consider >>>>>>>>>>> acceptable. >>>>>>>>>>> >>>>>>>>>>> I think it would be really nice if checkstyle would fail for the >>>>>>>>>>> more obvious case we want to avoid that comes up in reviews or >>>>>>>>>>> sometimes slips into the codebase if not caught by a reviewer, e.g.: >>>>>>>>>>> >>>>>>>>>>> if { >>>>>>>>>>> //... >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Andy >>>>>>>>>>> >>>>>>>>>>> On Wed, Jan 15, 2025 at 6:21 PM Tolbert, Andy >>>>>>>>>>> <x...@andrewtolbert.com> wrote: >>>>>>>>>>>> Hi Bernardo, >>>>>>>>>>>> >>>>>>>>>>>> Thanks for bringing this up! >>>>>>>>>>>> >>>>>>>>>>>> Last year I was looking into enforcing curly braces as defined in >>>>>>>>>>>> Code Style >>>>>>>>>>>> <https://cassandra.apache.org/_/development/code_style.html> and >>>>>>>>>>>> had some thoughts on how to make this work but hit a bit of a >>>>>>>>>>>> brick wall: >>>>>>>>>>>> >>>>>>>>>>>> https://issues.apache.org/jira/browse/CASSANDRA-19276 >>>>>>>>>>>> >>>>>>>>>>>> I don't think there is an easy way as is to enforce this with >>>>>>>>>>>> checkstyle currently: >>>>>>>>>>>> >>>>>>>>>>>> "{ and } are placed on a new line except when empty or opening a >>>>>>>>>>>> multi-line lambda expression. Braces may be elided to a depth of >>>>>>>>>>>> one if the condition or loop guards a single expression." >>>>>>>>>>>> >>>>>>>>>>>> Without making changes to checkstyle itself (e.g.: >>>>>>>>>>>> https://github.com/checkstyle/checkstyle/issues/12226). >>>>>>>>>>>> >>>>>>>>>>>> I think if we were to add a new rule around brackets and newlines, >>>>>>>>>>>> we would ideally try to make it match the Code style definition as >>>>>>>>>>>> its declared, and hopefully it would not be too require touching a >>>>>>>>>>>> lot of files (which maybe the case unfortunately). >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Andy >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Jan 15, 2025 at 6:10 PM Benedict <bened...@apache.org> >>>>>>>>>>>> wrote: >>>>>>>>>>>>> Even something as simple as the curly brace rule has sensible >>>>>>>>>>>>> exceptions. I’m pretty hard -1 on letting a linter make all our >>>>>>>>>>>>> editing decisions. Formatting is a contextual choice about how to >>>>>>>>>>>>> best represent information to the reader, and we should not >>>>>>>>>>>>> abdicate responsibility. The style guide is exactly that, a guide >>>>>>>>>>>>> and that helps us navigate editing choices, and it can be evolved >>>>>>>>>>>>> or refined via discussion and experimentation. >>>>>>>>>>>>> >>>>>>>>>>>>> For example, the second clause in your quote (re: lambdas) came >>>>>>>>>>>>> about only because we could break the restrictions of the first >>>>>>>>>>>>> clause and demonstrate an improvement to readability. >>>>>>>>>>>>> >>>>>>>>>>>>> If this is a pain point during review, either some people are too >>>>>>>>>>>>> eager to point to the code style guide, or perhaps your IDE >>>>>>>>>>>>> defaults need updating. This shouldn’t cause lots of traffic. >>>>>>>>>>>>> >>>>>>>>>>>>> People should try not to overly nitpick formatting, though of >>>>>>>>>>>>> course a balance is to be struck between contributors’ expression >>>>>>>>>>>>> of their code and that code sitting neatly in its context in the >>>>>>>>>>>>> codebase. >>>>>>>>>>>>> >>>>>>>>>>>>> > On 15 Jan 2025, at 23:50, Bernardo Botella >>>>>>>>>>>>> > <conta...@bernardobotella.com> wrote: >>>>>>>>>>>>> > >>>>>>>>>>>>> > Hi everyone! >>>>>>>>>>>>> > >>>>>>>>>>>>> > I wanted to raise a question about code style for the project. >>>>>>>>>>>>> > I've been receiving some feedback on PRs about the need to: >>>>>>>>>>>>> > - Have curly braces start on a new line >>>>>>>>>>>>> > - Remove curly braces if the condition or loop has only one >>>>>>>>>>>>> > expression >>>>>>>>>>>>> > >>>>>>>>>>>>> > Taking a look at the official Code Style stated in the web, I >>>>>>>>>>>>> > read that: >>>>>>>>>>>>> > "{ and } are placed on a new line except when empty or opening >>>>>>>>>>>>> > a multi-line lambda expression. Braces may be elided to a depth >>>>>>>>>>>>> > of one if the condition or loop guards a single expression." >>>>>>>>>>>>> > >>>>>>>>>>>>> > Which addresses the first type of comments I mentioned (curly >>>>>>>>>>>>> > braces starting in a new line), but leaves open the second type >>>>>>>>>>>>> > of comments (remove not needed curly braces). >>>>>>>>>>>>> > >>>>>>>>>>>>> > But, when looking at the checkstyle.xml, I don't see any rule >>>>>>>>>>>>> > enforcing any of those two types of comments. >>>>>>>>>>>>> > >>>>>>>>>>>>> > I believe checkstyle.xml should be our contract, so I'm >>>>>>>>>>>>> > proposing here: >>>>>>>>>>>>> > >>>>>>>>>>>>> > For "curly braces starting in a new line" rule, add something >>>>>>>>>>>>> > like what we already have on Sidecar and Analytics projects: >>>>>>>>>>>>> > <module name="LeftCurly"> >>>>>>>>>>>>> > <!-- Checks for placement of the left curly brace >>>>>>>>>>>>> > ('{'). --> >>>>>>>>>>>>> > <property name="option" value="nl"/> >>>>>>>>>>>>> > ... >>>>>>>>>>>>> > </module> >>>>>>>>>>>>> > >>>>>>>>>>>>> > That way, we can fail fast and not worry about those comments >>>>>>>>>>>>> > on PRs. This of course may be painful, as we probably will have >>>>>>>>>>>>> > to fix a bunch of wrongly placed brackets all over the place. >>>>>>>>>>>>> > >>>>>>>>>>>>> > If there are no concerns here, I'll be more than happy to bite >>>>>>>>>>>>> > the bullet and add a patch for this. >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > For "remove not needed curly braces", I understand that it >>>>>>>>>>>>> > tends to be the preference on the code, so we either modify the >>>>>>>>>>>>> > documentation and add a rule for that on the checkstyle.xml, or >>>>>>>>>>>>> > we are fine with that style and there is no need to remove them >>>>>>>>>>>>> > on patches. >>>>>>>>>>>>> > >>>>>>>>>>>>> > I wanted to hear the thoughts on the community for this one. My >>>>>>>>>>>>> > preference is to always use brackets, but that's just a >>>>>>>>>>>>> > preference, so it's perfectly fine not to enforce it and leave >>>>>>>>>>>>> > the documentation as is. >>>>>>>>>>>>> > >>>>>>>>>>>>> > Thanks everyone! >>>>>>>>>>>>> > Bernardo >>>>>>>>> >>>>>>> >>>