> I’m not letting anyone near my carefully crafted code with an automated 
> formatter.

Ha. Same.

Let’s not get carried away. The main problem here seems to be overzealous code 
reviewers, and this can be solved with better reviewer onboarding / guide.

The minor formatting nits can and should be fixed on commit by the committer, 
with a post-factum note to the (non-committer) author that this was done and a 
link to the code style. Reviewer should not be creating roundtrips for the 
author based on style nits alone. Fix it on commit, please, don’t waste 
everyone’s time.

> On 17 Jan 2025, at 04:39, Abe Ratnofsky <a...@aber.io> wrote:
> 
> If breaking blame is a concern, we can address that with the ignore-revs-file 
> flag in git and GitHub blame viewers: 
> https://docs.github.com/en/repositories/working-with-files/using-files/viewing-and-understanding-files#ignore-commits-in-the-blame-view
> 
>> On Jan 16, 2025, at 18:11, Cheng Wang via dev <dev@cassandra.apache.org> 
>> wrote:
>> 
>> 
>> I am personally in favor of more automatic code linting and enforcement than 
>> worrying about the code style. 
>> 
>> On Thu, Jan 16, 2025 at 1:56 PM Josh McKenzie <jmcken...@apache.org 
>> <mailto:jmcken...@apache.org>> wrote:
>>>> 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 
>>>> <mailto: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 
>>>> <mailto: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 
>>>>> <mailto: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 
>>>>> <mailto: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 
>>>>> <mailto: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 
>>>>>>> <mailto: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 <mailto: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 
>>>>>>>> <mailto: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 
>>>>>>>> <mailto: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 <mailto: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
>>>>>>> 
>>>>> 
>>>> 
>>> 

Reply via email to