>While I can agree that a consistent style can help I don’t agree that it is >necessary. If the compiler understands the code then IMO we are good.
I agree with Dave's idea. My concern is how much value this change will bring to Pulsar. What's more, it will bring other burdens, such as PR review, PR cherry-pick, git blames. The main goal of Pulsar is to improve the reliability. -1 for this change. Best, Hang 徐昀泽 <xyzinfern...@gmail.com> 于2023年9月4日周一 19:24写道: > > Well, I’m just back to this thread. > > Now I’m +1 to this extremely huge change, but to be more friendly to > developers, > we should document the workarounds for the git blame issue. And we should > apply > the spotless tool to every active branches. > > > On Sep 3, 2023, at 19:43, Asaf Mesika <asaf.mes...@gmail.com> wrote: > > > > I couldn't stress how much I oppose the sentence "If the compiler > > understands the code then IMO we are good." > > > > Sinan is right: This project needs to take calculated risks in order to > > move forward to be better. > > Yes I agree prioritizing is super important, since Pulsar has *so many* > > fronts to be better at. > > > > We need more people on this thread, to get a wide angle on this IMO. > > > > > > On Sat, Sep 2, 2023 at 7:27 AM Dave Fisher <wave4d...@comcast.net> wrote: > > > >> While I can agree that a consistent style can help I don’t agree that it > >> is necessary. If the compiler understands the code then IMO we are good. > >> > >> I am a bit of a dinosaur since I have keypunched code on cards in my > >> career. I’ve played with writing interpreters and specialized languages. > >> > >> But I’m -0 and if the project prefers strict code style then that is fine > >> too! > >> > >> If anyone agrees with me know that part of consensus building is to > >> provide opinions and accept divergent results. > >> > >> Best, > >> Dave > >> > >> PS. If tisun wants to put on their superhero cape and convert the code > >> base then let’s acknowledge that AND let’s consider all of the PRs that are > >> now effectively closed. > >> > >> Sent from my iPhone > >> > >>> On Sep 1, 2023, at 8:57 PM, SiNan Liu <liusinan1...@gmail.com> wrote: > >>> > >>> Consistent code style is crucial for a large project. In order to make > >>> Pulsar better, I believe we shouldn't be afraid of "risks". > >>> By introducing Spotless, we can permanently resolve the issue of > >>> inconsistent code style and ensure that all contributors adhere to this > >>> rule moving forward. > >>> If we don't make these changes now, we might have to deal with changes in > >>> over 3000 files today and potentially over 5000 files tomorrow. > >>> > >>> Thanks, > >>> sinan > >>> > >>> > >>> Dave Fisher <wave4d...@comcast.net> 于2023年9月1日周五 12:19写道: > >>> > >>>> -0. I think it will introduce too much change. We have classes that are > >>>> quite large and having to fix code style after making a small correction > >>>> seems like a waste of volunteer energy. > >>>> > >>>> Best, > >>>> Dave > >>>> > >>>> Sent from my iPhone > >>>> > >>>>>> On Aug 31, 2023, at 9:05 PM, Zixuan Liu <node...@gmail.com> wrote: > >>>>> > >>>>> This idea looks good to me, but we need to format all codebase to > >>>>> avoid conflicts during cherry picking. > >>>>> > >>>>> +1 > >>>>> > >>>>> Asaf Mesika <asaf.mes...@gmail.com> 于2023年8月31日周四 20:39写道: > >>>>>> > >>>>>> Opentelemetry-java employs both spotless for coding style > >>>>>> You run "./gradlew spotlessCheck" and it shows the problems. > >>>>>> You run "./gradlew spotlessApply" to automatically fix it. > >>>>>> > >>>>>> It also uses errorprone to detect bugs. > >>>>>> > >>>>>> I wonder if we can run it only in GitHub PRs, so we can instruct it to > >>>> run > >>>>>> only on files you have changed / added. This is we "throttle" the > >> style > >>>>>> through files touched. > >>>>>> > >>>>>> > >>>>>> > >>>>>>> On Tue, Aug 15, 2023 at 8:31 PM tison <wander4...@gmail.com> wrote: > >>>>>>> > >>>>>>> These have been discussed that - > >>>>>>> > >>>>>>> 1. Cherrypick: we will reformat for all maintained branches. > >>>>>>> 2. Commit noise: metadata to filter out during blame. > >>>>>>> 3. PR rebased: invincible, while we don't have a large backlog or > >>>> active > >>>>>>> large pending PR. > >>>>>>> > >>>>>>> But if our critical mass agree this is not a good tradeoff, there is > >> no > >>>>>>> issue to "resolve". > >>>>>>> > >>>>>>> Enrico Olivelli <eolive...@gmail.com>于2023年8月16日 周三00:50写道: > >>>>>>> > >>>>>>>> Tison, > >>>>>>>> > >>>>>>>> Il Mar 15 Ago 2023, 16:56 tison <wander4...@gmail.com> ha scritto: > >>>>>>>> > >>>>>>>>> A demostration for change set - > >>>>>>>>> https://github.com/apache/pulsar/pull/20974 > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> While I think it is great to start with Spotless for little projects > >>>> or > >>>>>>>> when you start from scratch, > >>>>>>>> appling a patch that changes 3.000+ files will make it very hard to > >>>>>>> rebase > >>>>>>>> all the pending PRs and also to cherry pick changes to older > >> branches > >>>>>>> that > >>>>>>>> we support. > >>>>>>>> > >>>>>>>> I think that this is not a good option for Pulsar at this stage. > >>>>>>>> > >>>>>>>> Maybe if we had a configuration that doesn't change so many > >> files.... > >>>>>>>> > >>>>>>>> Enrico > >>>>>>>> > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> If we go forward this direction, it should be picked to branch-3.0 > >>>> and > >>>>>>>>> branch-3.1. Earlier versions can be ported on demand and I'm glad > >> to > >>>>>>>>> volunteer doing that. > >>>>>>>>> > >>>>>>>>> Best, > >>>>>>>>> tison. > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> PengHui Li <peng...@apache.org> 于2023年7月10日周一 10:00写道: > >>>>>>>>> > >>>>>>>>>> My concern is how much value it will add. > >>>>>>>>>> From my experience, it's fine. The code style > >>>>>>>>>> is not consistent but doesn't affect my code reading > >>>>>>>>>> and writing much. But it might introduce risks and we > >>>>>>>>>> need to pay much effort to the code review. > >>>>>>>>>> > >>>>>>>>>> Regards, > >>>>>>>>>> Penghui > >>>>>>>>>> > >>>>>>>>>> On Wed, Jul 5, 2023 at 7:39 PM tison <wander4...@gmail.com> > >> wrote: > >>>>>>>>>> > >>>>>>>>>>> ... which seems a GitHub only extension - > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>> > >> https://github.blog/changelog/2022-03-24-ignore-commits-in-the-blame-view-beta/ > >>>>>>>>>>> > >>>>>>>>>>> Best, > >>>>>>>>>>> tison. > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> tison <wander4...@gmail.com> 于2023年7月5日周三 19:38写道: > >>>>>>>>>>> > >>>>>>>>>>>> For the git blame issue, I found also this practice in > >>>>>>>> StreamPark[1]. > >>>>>>>>>>>> > >>>>>>>>>>>> cc @Yunze. > >>>>>>>>>>>> > >>>>>>>>>>>> Best, > >>>>>>>>>>>> tison. > >>>>>>>>>>>> > >>>>>>>>>>>> [1] > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>> > >> https://github.com/apache/incubator-streampark/blob/cac931ae289e0753892279336e1c4e70e5f7d7c6/.git-blame-ignore-revs > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> Kiryl Valkovich <kiryl_valkovich@teal.tools> 于2023年6月30日周五 > >>>>>>>> 13:03写道: > >>>>>>>>>>>> > >>>>>>>>>>>>> My mistake. It looks that for some reason Spotless supports > >>>>>>>>>>> .editorconfig > >>>>>>>>>>>>> only for ktlint. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Best, > >>>>>>>>>>>>> Kiryl > >>>>>>>>>>>>> > >>>>>>>>>>>>> From: Kiryl Valkovich <kiryl_valkovich@teal.tools> > >>>>>>>>>>>>> Date: Friday, June 30, 2023 at 6:45 AM > >>>>>>>>>>>>> To: dev@pulsar.apache.org <dev@pulsar.apache.org> > >>>>>>>>>>>>> Subject: Re: [DISCUSS] Consistent code style (esp. ws/indent) > >>>>>>> and > >>>>>>>>>>>>> autotools > >>>>>>>>>>>>> Hi, > >>>>>>>>>>>>> > >>>>>>>>>>>>> tison, are you going to use .editorconfig for specifying indent > >>>>>>>>> rules? > >>>>>>>>>>>>> > >>>>>>>>>>>>> https://editorconfig.org/ > >>>>>>>>>>>>> > >>>>>>>>>>>>> It looks like Spotless supports it. > >>>>>>>>>>>>> https://github.com/diffplug/spotless/issues/734 > >>>>>>>>>>>>> > >>>>>>>>>>>>> Flink and many other ASF projects use it. > >>>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>> > >> https://github.com/apache/flink/blob/21eba4ca4cb235a2189c94cdbf3abcec5cde1e6e/.editorconfig > >>>>>>>>>>>>> > >>>>>>>> https://github.com/search?q=org%3Aapache%20.editorconfig&type=code > >>>>>>>>>>>>> > >>>>>>>>>>>>> Unlike Spotless, the .editorconfig works out of the box in most > >>>>>>> of > >>>>>>>>> the > >>>>>>>>>>>>> modern code editors. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Best, > >>>>>>>>>>>>> Kiryl > >>>>>>>>>>>>> > >>>>>>>>>>>>> From: tison <wander4...@gmail.com> > >>>>>>>>>>>>> Date: Friday, June 30, 2023 at 3:58 AM > >>>>>>>>>>>>> To: Dev <dev@pulsar.apache.org> > >>>>>>>>>>>>> Subject: [DISCUSS] Consistent code style (esp. ws/indent) and > >>>>>>>>>> autotools > >>>>>>>>>>>>> Hi, > >>>>>>>>>>>>> > >>>>>>>>>>>>> I'd like to propose applying a consistent code style > >> (especially > >>>>>>>>>>>>> whitespace > >>>>>>>>>>>>> and indent) with an autotool Spotless. > >>>>>>>>>>>>> > >>>>>>>>>>>>> // Background > >>>>>>>>>>>>> > >>>>>>>>>>>>> Over and over we argue contributors reformat their patch > >>>>>>> manually > >>>>>>>>> for > >>>>>>>>>>>>> checkstyle violations, or even whitespace changes that are not > >>>>>>>>>> detected > >>>>>>>>>>> by > >>>>>>>>>>>>> checkstyle. [1] > >>>>>>>>>>>>> > >>>>>>>>>>>>> A common reason is that such style-only changes increase the > >>>>>>>> burden > >>>>>>>>> to > >>>>>>>>>>> do > >>>>>>>>>>>>> cherry-pick if a later bug fix is made around the code while we > >>>>>>>>> often > >>>>>>>>>> do > >>>>>>>>>>>>> not pick the style change barely or even it's coupled with an > >>>>>>>>>> unpickable > >>>>>>>>>>>>> commit. > >>>>>>>>>>>>> > >>>>>>>>>>>>> CheckStyle helps in some cases while we don't have a strong > >> rule > >>>>>>>> set > >>>>>>>>>> nor > >>>>>>>>>>>>> even apply it to tests (porting bug fix actually include the > >>>>>>>> test). > >>>>>>>>>>>>> > >>>>>>>>>>>>> Manually fixing style violations can be boring and even > >>>>>>> annoying. > >>>>>>>>>> That's > >>>>>>>>>>>>> why it's effectively "suppressed" in mind. > >>>>>>>>>>>>> > >>>>>>>>>>>>> An autotool to do the formatting work can help and here comes > >>>>>>>>>>> Spotless[2]. > >>>>>>>>>>>>> Flink and Curator use it and Flink actually migrated from > >>>>>>>> CheckStyle > >>>>>>>>>> to > >>>>>>>>>>>>> Spotless for its more strict consistent rule set and oneliner > >>>>>>>>> format. > >>>>>>>>>>> See > >>>>>>>>>>>>> their original discussion for the context[3]. > >>>>>>>>>>>>> > >>>>>>>>>>>>> // Proprosal > >>>>>>>>>>>>> > >>>>>>>>>>>>> Using Spotless as the auto-formatting tool in all around > >>>>>>>>>> apache/pulsar. > >>>>>>>>>>>>> Since it's an auto tool I can cover the task solely. > >>>>>>>>>>>>> > >>>>>>>>>>>>> // Concerns > >>>>>>>>>>>>> > >>>>>>>>>>>>> 1. Won't it be yet another noise to the codebase? > >>>>>>>>>>>>> > >>>>>>>>>>>>> Yes and no. I suggest we pick this change to all maintained > >>>>>>>> versions > >>>>>>>>>> so > >>>>>>>>>>>>> that all of them align with the consistent style. Then from now > >>>>>>>> on, > >>>>>>>>> no > >>>>>>>>>>>>> more > >>>>>>>>>>>>> style conflict. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Flink used the same strategy[4] and even we can do it starting > >>>>>>>> from > >>>>>>>>>> 2.10 > >>>>>>>>>>>>> as > >>>>>>>>>>>>> Lari proposed to apply commits from the least recent maintained > >>>>>>>>>>> version. I > >>>>>>>>>>>>> understand the maintained versions are: 2.10, 2.11, 3.0, and > >>>>>>>> master. > >>>>>>>>>>>>> > >>>>>>>>>>>>> 2. Can it cover all the rule sets we use in CheckStyle now? > >>>>>>>>>>>>> > >>>>>>>>>>>>> Let's say we almost don't care what the style is but it's > >>>>>>>> consistent > >>>>>>>>>> and > >>>>>>>>>>>>> "not awful". > >>>>>>>>>>>>> > >>>>>>>>>>>>> The default Google style takes line length = 80 which can be a > >>>>>>>>>>>>> disappointment so in Curator I use the palantir style[5] which > >>>>>>>> takes > >>>>>>>>>>> line > >>>>>>>>>>>>> length = 120 which should keep consistent with current > >> settings. > >>>>>>>>>>>>> > >>>>>>>>>>>>> A downside is that Spotless Maven plugin cannot detect > >>>>>>> "forbidden > >>>>>>>>>>> imports" > >>>>>>>>>>>>> where we can still use CheckStyle[6] - this is a low-traffic > >>>>>>> path > >>>>>>>>> and > >>>>>>>>>> it > >>>>>>>>>>>>> should be fine. > >>>>>>>>>>>>> > >>>>>>>>>>>>> // Implementation > >>>>>>>>>>>>> > >>>>>>>>>>>>> 1. Introduce Spotless in the project and apply it around the > >>>>>>>>> codebase, > >>>>>>>>>>> for > >>>>>>>>>>>>> all maintained versions. > >>>>>>>>>>>>> 2. Remove the then redundant CheckStyle rules, while retaining > >>>>>>> the > >>>>>>>>>>>>> forbidden imports part as it's still useful. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Looking forward to your feedback! > >>>>>>>>>>>>> > >>>>>>>>>>>>> Best, > >>>>>>>>>>>>> tison. > >>>>>>>>>>>>> > >>>>>>>>>>>>> [1] > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> > >>>> > >> https://github.com/apache/pulsar/pull/20642/files#diff-cb9b09b67f54fccdd5155dbbcedd50970ee93d9ee85ade1e6b6984cab64dab5d > >>>>>>>>>>>>> [2] https://github.com/diffplug/spotless > >>>>>>>>>>>>> [3] > >>>>>>>>> https://lists.apache.org/thread/3kjkcz9gj6f8j477d1t3gnbkl61hsb7z > >>>>>>>>>>>>> [4] > >>>>>>>>> https://lists.apache.org/thread/nxdm0pg84q913w0kxszm502myqcg3db0 > >>>>>>>>>>>>> [5] https://github.com/palantir/palantir-java-format > >>>>>>>>>>>>> [6] https://issues.apache.org/jira/browse/FLINK-32154 > >>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>>> -- > >>>>>>> Best, > >>>>>>> tison. > >>>>>>> > >>>> > >>>> > >> > >> >