I think we inherited brace-on-newline, nobody has ever liked it
(stockholm syndrome aside.)  As I recall we decided against changing
it in the past because it would be a huge patch and likely provide
merge pain for a long time, unless we do it in all the branches.

Kind Regards,
Brandon

On Thu, Jan 16, 2025 at 2:20 PM Jordan West <jw...@apache.org> wrote:
>
> I think we are in strong agreement Stefan. It’s more convenient because we 
> took the time to make it automatic and not require human effort.
>
> Yet it’s still imperfect as Bernardo pointed out.
>
> And as Caleb pointed out, had we taken a more convenential Java project 
> approach it would’ve been even better / easier.
>
> Jordan
>
> On Thu, Jan 16, 2025 at 12:17 Š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 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
>>>>
>>>>
>>>>

Reply via email to