Agreed. I also haven't contributed much to the project yet, so my opinion shouldn't carry much weight -- and really have no preferences for 120 or 100.
Strongly encouraged to think at least 4+ years ( if not 2x++ what it already has existed ) ahead for the project [ Iceberg will be around for at least that long :-) ], and what helps with ease-of-use/contributing, while minimizing ongoing community maintenance. Moving towards a solution that achieves those aims ( no matter what the line length is ) would likely serve the community well. On Fri, Jul 29, 2022 at 9:52 AM Anton Okolnychyi <aokolnyc...@apple.com.invalid> wrote: > Austin, I don’t think anyone questions the value of consistent code or the > value of automatic formatting. It is quite the opposite, actually. I think > everyone on this thread actually cares about those things :) > > Was automatic formatting helpful? For sure! Did changing the line limit > from 120 to 100 on a 4+ year project brought a lot of value, for example? I > am not sure. > > - Anton > > On Jul 29, 2022, at 9:44 AM, Yufei Gu <flyrain...@gmail.com> wrote: > > It is the right direction to remove the trivial part of the coding. Just > wondering why we change the max line length from 120 to 100. > > Best, > > Yufei > > `This is not a contribution` > > > On Fri, Jul 29, 2022 at 9:21 AM Austin Bennett < > whatwouldausti...@gmail.com> wrote: > >> Probably worthwhile to really think about the long-term desired >> outcomes. Even a large, one-time, disruption of the codebase for the sake >> of future consistency could be quite valuable. Remember you'll also lose >> fidelity with history/blame. At some point a 'breaking' ( in a different >> sense ) change might be useful rather than anchoring on what exists. >> >> >> >> On Fri, Jul 29, 2022 at 8:59 AM Anton Okolnychyi < >> aokolnyc...@apple.com.invalid> wrote: >> >>> On a side note, having automatic formatting was really nice. I think it >>> is the right direction. If we only had a way to tweak a few rules like the >>> max line length, one-line Javadoc and maybe consider using the Google >>> format for 1.8 cause we are using the 1.7 format at the moment, which was >>> not designed for lambdas. That way we may have all the benefits of >>> automatic formatting with less disruption to the code. >>> >>> - Anton >>> >>> On Jul 28, 2022, at 7:35 PM, Anton Okolnychyi < >>> aokolnyc...@apple.com.INVALID> wrote: >>> >>> I had a chance to rebase one of my PRs. It is really hard to justify the >>> new max line length of 100 chars. I think the most unreadable code is >>> usually around places when single statements are split into multiple lines. >>> Since Java has explicit types and we prefer full and elaborate class/var >>> names, the new line limit alone triggered so many changes and requires >>> splitting a lot of statements that would previously fit on a single line. >>> >>> The max line length is one of the reasons why Palantir folks forked the >>> Google format. >>> >>> https://github.com/palantir/palantir-java-format >>> >>> - Anton >>> >>> >>> On Jul 28, 2022, at 7:42 AM, Eduard Tudenhoefner <edu...@tabular.io> >>> wrote: >>> >>> Thanks for your honest feedback Anton, which I really appreciate. I >>> agree with the points you brought up. >>> >>> I don't prefer the Google Java Format either, but it is at least >>> something that produces consistent results across tools. >>> If you ask me, I would love to customize the code format and have it as >>> close as possible to what the Iceberg project had. But one of the reasons >>> why the format isn't customizable is because it is difficult to support >>> such customizations across tools. >>> >>> The problem with code format is that there is no single format that can >>> satisfy the preferences of everybody. However, from my experience, once >>> people start to use *any* code format that produces consistent results >>> across *Eclipse/IntelliJ/cmd line*, people stop worrying about code >>> format details. >>> >>> This is also one of the reasons why the creators of Go decided to have a >>> code formatter built-in (https://go.dev/doc/effective_go#formatting). >>> >>> In the long run I think the decision to use Spotless + code formatting >>> helps, especially for new people that want to contribute and don't want to >>> feel frustrated due to review feedback around code style. >>> >>> Eduard >>> >>> On Thu, Jul 28, 2022 at 6:15 AM Anton Okolnychyi <aokolnyc...@apple.com> >>> wrote: >>> >>>> I am late to the discussion, but I would like to express my opinion. >>>> >>>> As someone who deeply cares about the code consistency and leaves a lot >>>> of style-related nits, I am definitely happy to see efforts to simplify the >>>> life of the reviewers and automate the formatting process. Explaining the >>>> code style to new contributors consumes a lot of time and results in more >>>> iterations on PRs. Automating this would be great! >>>> >>>> However, I am concerned regarding the changes merged in PR #5312. >>>> >>>> - Many changes that went in that PR were against the original code >>>> style of the project that we, committers and contributors, tried to >>>> maintain for all these years. I think we had a lot of well-structured and >>>> consistent places, which attracted devs to Iceberg. >>>> - I feel the code quality dropped as some places were written in the >>>> old style and now look really weird. If we followed the new style >>>> originally, maybe, it would look much better as we would structure the code >>>> differently. >>>> - As a someone whose team maintains an internal fork that is very close >>>> to master (I know we are not the only ones), I feel such a massive change >>>> will be a challenge to cherry-pick. I am not convinced introducing >>>> automatic formatting had to be so radical. >>>> >>>> The first two points concern me the most. Since I am late to the >>>> discussion, it would not be fair for me to request changes. However, I >>>> strongly suggest the community to reconsider the approach we took while we >>>> haven’t merged many changes on top of PR #5312. >>>> >>>> To sum up, I definitely support automating the formatting to simplify >>>> reviews and help new contributors but I would try to come with a way to >>>> make it less radical and follow whatever we had all these years. We did >>>> discuss some of the formatting guidelines a few years ago and it is all >>>> different now. >>>> >>>> - Anton >>>> >>>> On Jul 27, 2022, at 11:40 AM, Steven Wu <stevenz...@gmail.com> wrote: >>>> >>>> Eduard, thank you for driving this effort! Great work! >>>> >>>> On Wed, Jul 27, 2022 at 11:11 AM Eduard Tudenhoefner <edu...@tabular.io> >>>> wrote: >>>> >>>>> Hey everyone, >>>>> >>>>> Google Java Format + Spotless integration have been merged as part of >>>>> https://github.com/apache/iceberg/pull/5266. >>>>> >>>>> The big bang reformatting (aka *spotlessApply*) will happen as part >>>>> of https://github.com/apache/iceberg/pull/5312 and once this PR is >>>>> merged, please perform the following steps if you have open PRs: >>>>> >>>>> 1. Rebase your PR branch against the commit before the „Big Bang“ >>>>> 2. Run `*./gradlew spotlessApply*` >>>>> 3. Squash all commits >>>>> 4. Rebase against the latest *HEAD* of the master branch >>>>> 5. Force-push your branch >>>>> >>>>> This should hopefully produce a minimum of conflicts on PRs. >>>>> >>>>> Additionally, make sure to install the *google-java-format* plugin >>>>> for your IDE as outlined in >>>>> https://github.com/apache/iceberg-docs/pull/125 so that you can >>>>> format code inside the IDE as well. >>>>> >>>>> Eduard >>>>> >>>>> On Fri, Jul 15, 2022 at 12:45 PM Eduard Tudenhoefner < >>>>> edu...@tabular.io> wrote: >>>>> >>>>>> That's correct Ryan. The Google style is what can be applied across >>>>>> tools and Spotless is the tool that we use to check and *apply* that >>>>>> style (and also auto-apply the license header). The *apply* part is >>>>>> the important piece that Checkstyle for example is missing (as it's >>>>>> tedious >>>>>> to manually apply what *checkstyle:check* complains about). >>>>>> >>>>>> Additionally, Spotless >>>>>> <https://github.com/diffplug/spotless/tree/main/plugin-gradle> supports >>>>>> a bunch of other languages, so it would even be possible to use it for >>>>>> auto-formatting Gradle files (or Scala files using scalafmt) if we wanted >>>>>> to, but for now I would probably focus on the Java codebase. >>>>>> >>>>>> Eduard >>>>>> >>>>>> On Thu, Jul 14, 2022 at 6:58 PM Ryan Blue <b...@tabular.io> wrote: >>>>>> >>>>>>> Okay, I understand. So it isn't that spotless is supported across >>>>>>> tools, it is that google style is supported and we can use Spotless to >>>>>>> both >>>>>>> check and apply that style. Is that correct? >>>>>>> >>>>>>> On Thu, Jul 14, 2022 at 9:56 AM Eduard Tudenhoefner < >>>>>>> edu...@tabular.io> wrote: >>>>>>> >>>>>>>> Yeah it's how Dmitri said, the Google style is most likely on >>>>>>>> purpose not configurable, because otherwise it's getting more >>>>>>>> difficult to >>>>>>>> achieve the same formatting results across IDEs & CMD line. >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Jul 13, 2022 at 7:39 PM Dmitri Bourlatchkov < >>>>>>>> dmitri.bourlatch...@dremio.com> wrote: >>>>>>>> >>>>>>>>> Yeah, the Google style has very specific wrapping limits and >>>>>>>>> javadoc format. It is not configurable, if we go with it. >>>>>>>>> >>>>>>>>> From my POV, using another style would be fine. However, with a >>>>>>>>> custom style it can be hard and tricky to ensure that all IDEs >>>>>>>>> enforce it >>>>>>>>> the same way as spotless. >>>>>>>>> >>>>>>>>> The Google style has a plugin at least for IntelliJ (and likely >>>>>>>>> for Eclipse too) so it will behave the same way in IDE and cmd. line >>>>>>>>> build. >>>>>>>>> >>>>>>>>> On Wed, Jul 13, 2022 at 1:28 PM Ryan Blue <b...@tabular.io> wrote: >>>>>>>>> >>>>>>>>>> Is there any value in trying to get Spotless to match the current >>>>>>>>>> format as closely as possible? It would be great to have fewer >>>>>>>>>> changes. >>>>>>>>>> >>>>>>>>>> For example, when I tested the apply, I see this: >>>>>>>>>> >>>>>>>>>> - /** >>>>>>>>>> - * Returns an initialized {@link AliyunProperties} >>>>>>>>>> - */ >>>>>>>>>> + /** Returns an initialized {@link AliyunProperties} */ >>>>>>>>>> >>>>>>>>>> Changes like that don’t seem very valuable to me. Similarly, it >>>>>>>>>> looks like a lot of text is wrapped at a different line length. If >>>>>>>>>> we can >>>>>>>>>> alter that, we could easily avoid a lot of changes. >>>>>>>>>> >>>>>>>>>> Ryan >>>>>>>>>> >>>>>>>>>> On Wed, Jul 13, 2022 at 7:41 AM Eduard Tudenhoefner < >>>>>>>>>> edu...@tabular.io> wrote: >>>>>>>>>> >>>>>>>>>>> As a first step, I created >>>>>>>>>>> https://github.com/apache/iceberg/pull/5266 which configures >>>>>>>>>>> Spotless to use the Google Java Format and also apply the correct >>>>>>>>>>> copyright >>>>>>>>>>> header for Java files. >>>>>>>>>>> >>>>>>>>>>> Once this PR is merged, the next steps would be: >>>>>>>>>>> >>>>>>>>>>> - removing conflicting Checkstyle rules that are not in line >>>>>>>>>>> with the Google format >>>>>>>>>>> - formatting the entire code base via `*./gradlew >>>>>>>>>>> spotlessApply*` >>>>>>>>>>> - setting `*enforceCheck*` to `*true*` in >>>>>>>>>>> >>>>>>>>>>> https://github.com/apache/iceberg/blob/80318d8cfbeb0d96d0afc27c84bc3dbddde35344/baseline.gradle#L48 >>>>>>>>>>> so that validation fails if code isn't properly formatted >>>>>>>>>>> - updating docs around the current Formatter usage and how >>>>>>>>>>> to configure Eclipse/IntelliJ >>>>>>>>>>> >>>>>>>>>>> The first 3 steps should be done together as part of the big >>>>>>>>>>> bang. >>>>>>>>>>> >>>>>>>>>>> Eduard >>>>>>>>>>> >>>>>>>>>>> On Mon, Jul 11, 2022 at 10:54 PM Ryan Blue <b...@apache.org> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Okay, it sounds like there's mostly agreement for going with >>>>>>>>>>>> spotless. Let's try that out. We'll work on some changes to add >>>>>>>>>>>> spotless so >>>>>>>>>>>> that `spotlessApply` works. Then we can do the big bang migration >>>>>>>>>>>> (which I >>>>>>>>>>>> also agree is the best option) just before the 1.0. >>>>>>>>>>>> >>>>>>>>>>>> Thanks, everyone! >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Jul 11, 2022 at 11:50 AM Dmitri Bourlatchkov < >>>>>>>>>>>> dmitri.bourlatch...@dremio.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> My experience with the Google Code Style + Spotless was >>>>>>>>>>>>> positive too. >>>>>>>>>>>>> >>>>>>>>>>>>> I'd be fine with another code style as long as it is >>>>>>>>>>>>> "deterministic" (e.g. does not make changes on repeated >>>>>>>>>>>>> execution) and >>>>>>>>>>>>> works in IntelliJ IDEA / Eclipse / etc. >>>>>>>>>>>>> >>>>>>>>>>>>> Regarding cherry-picking into older branches, I think Robert's >>>>>>>>>>>>> suggestion can be tweaked slightly to be helpful there too: >>>>>>>>>>>>> >>>>>>>>>>>>> 1. Checkout old branch >>>>>>>>>>>>> 2. Apply the new style (run gradle ...) >>>>>>>>>>>>> 3. Cherry-pick without committing >>>>>>>>>>>>> 4. Manually revert to old style >>>>>>>>>>>>> 5. Commit >>>>>>>>>>>>> 6. Reset to original branch HEAD >>>>>>>>>>>>> 7. Cherry pick commit 5 again >>>>>>>>>>>>> >>>>>>>>>>>>> It's a bit lengthy and may be a tedious process, but it should >>>>>>>>>>>>> allow applying the git-level changes mostly automatically. >>>>>>>>>>>>> >>>>>>>>>>>>> Cheers, >>>>>>>>>>>>> Dmitri. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Fri, Jul 8, 2022 at 2:53 AM Robert Stupp <sn...@snazy.de> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> From my experience, it’s a big win to have automatic code >>>>>>>>>>>>>> formatting. >>>>>>>>>>>>>> >>>>>>>>>>>>>> In projectnessie we use automatic code formatting for all >>>>>>>>>>>>>> languages and haven’t serious issues with Spotless. It is just >>>>>>>>>>>>>> nice to not >>>>>>>>>>>>>> have to bike shed about whitespaces, line breaks, brackets, etc. >>>>>>>>>>>>>> It was a >>>>>>>>>>>>>> bit of discussion, because people had bad memories from past >>>>>>>>>>>>>> experiences >>>>>>>>>>>>>> with automatic code formatting breaking code and introducing >>>>>>>>>>>>>> subtle bugs. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I think that using code styles that „do not allow bike >>>>>>>>>>>>>> shedding“ (Google Code Style) are a very good option. >>>>>>>>>>>>>> >>>>>>>>>>>>>> So far none of us has seen issues with any of the Spotless >>>>>>>>>>>>>> code formatters that we use: XML, Kotlin/Gradle, Kotlin, Antlr4, >>>>>>>>>>>>>> Java, >>>>>>>>>>>>>> Scala - relying on the „standard“ settings w/o any >>>>>>>>>>>>>> customizations. We use >>>>>>>>>>>>>> this piece of code, externalized into an internal Gradle plugin: >>>>>>>>>>>>>> https://github.com/projectnessie/gradle-build-plugins/blob/main/spotless/src/main/kotlin/org/projectnessie/buildtools/spotless/SpotlessHelperPlugin.kt >>>>>>>>>>>>>> For >>>>>>>>>>>>>> Iceberg, it would probably be nice to have some Groovy code >>>>>>>>>>>>>> formatting for >>>>>>>>>>>>>> the build scripts as well. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Sure, the migration will add some pain. IMHO the best option >>>>>>>>>>>>>> is a „big bang“ across the whole code base, because it happens >>>>>>>>>>>>>> only once. >>>>>>>>>>>>>> Migrating one module after another is a „repeated series of >>>>>>>>>>>>>> pains“. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Since the result of a `./gradlew spotlessApply` is >>>>>>>>>>>>>> deterministic, people that have open PRs could: >>>>>>>>>>>>>> 1. Rebase their PR branch against the commit before the „Big >>>>>>>>>>>>>> Bang“ >>>>>>>>>>>>>> 2. Include a commit with the necessary Gradle build change >>>>>>>>>>>>>> (one the only contains the changes to add Spotless) >>>>>>>>>>>>>> 3. Do the `./gradlew spotlessApply` >>>>>>>>>>>>>> 4. Squash all commits in the PR-branch >>>>>>>>>>>>>> 5. Rebase again - against the HEAD of the master branch >>>>>>>>>>>>>> 6. Force-push PR-branch >>>>>>>>>>>>>> Because git is „clever enough“ to eliminate the >>>>>>>>>>>>>> „duplicated/unrelated changes“, the final result of the above >>>>>>>>>>>>>> steps is just >>>>>>>>>>>>>> the diff with the changes for the open PR. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Am 08.07.2022 um 00:59 schrieb Ryan Blue <b...@tabular.io>: >>>>>>>>>>>>>> >>>>>>>>>>>>>> We were just talking about this proposal internally. I think >>>>>>>>>>>>>> it would be great to have automatic code formatting, especially >>>>>>>>>>>>>> since we >>>>>>>>>>>>>> have to point out a lot of changes manually. The main question >>>>>>>>>>>>>> is how to >>>>>>>>>>>>>> get there without too much disruption. This came up in our >>>>>>>>>>>>>> discussions >>>>>>>>>>>>>> around the upcoming 1.0 release, since that may be a good >>>>>>>>>>>>>> opportunity to >>>>>>>>>>>>>> make all of the code changes. >>>>>>>>>>>>>> >>>>>>>>>>>>>> For background, the main concern about adding something like >>>>>>>>>>>>>> this is applying all of the changes needed to get the existing >>>>>>>>>>>>>> code to >>>>>>>>>>>>>> conform to the new style. That is really disruptive because it >>>>>>>>>>>>>> will cause >>>>>>>>>>>>>> all of the PRs to need to be rebased and makes it really >>>>>>>>>>>>>> difficult to >>>>>>>>>>>>>> cherry-pick changes from after the code formatting happens to >>>>>>>>>>>>>> branches that >>>>>>>>>>>>>> were created before code formatting. The 1.0 release makes a good >>>>>>>>>>>>>> opportunity because we are making other changes (removing >>>>>>>>>>>>>> deprecations) and >>>>>>>>>>>>>> will hopefully have people upgrading their branches to the new >>>>>>>>>>>>>> major >>>>>>>>>>>>>> version, rather than cherry picking. >>>>>>>>>>>>>> >>>>>>>>>>>>>> This is as good a time as any to add automatic code >>>>>>>>>>>>>> formatting, but it's up to the community: so should we refromat >>>>>>>>>>>>>> the project >>>>>>>>>>>>>> and apply spotless code formatting everywhere? I'm interested to >>>>>>>>>>>>>> hear >>>>>>>>>>>>>> opinions! >>>>>>>>>>>>>> >>>>>>>>>>>>>> Ryan >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Mar 10, 2022 at 3:00 AM Eduard Tudenhoefner < >>>>>>>>>>>>>> edu...@dremio.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hello everyone, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I would like to get the discussion started around automatic >>>>>>>>>>>>>>> code formatting + enforcing and how we get there. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Currently we use Checkstyle *check* to enforce formatting. >>>>>>>>>>>>>>> However, the problem with that is that you still have to >>>>>>>>>>>>>>> manually do the >>>>>>>>>>>>>>> actual formatting. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> What I would like to propose is the usage of *Spotless* ( >>>>>>>>>>>>>>> https://github.com/diffplug/spotless) for *checking* and >>>>>>>>>>>>>>> *enforcing* Java code style (it can also enforce code style >>>>>>>>>>>>>>> for Scala, Markdown, ... btw). Spotless is being used by many >>>>>>>>>>>>>>> projects ( >>>>>>>>>>>>>>> https://github.com/search?l=gradle&q=spotless&type=Code) >>>>>>>>>>>>>>> and comes essentially with two tasks: >>>>>>>>>>>>>>> * *spotlessCheck*: Checks that sourcecode satisfies >>>>>>>>>>>>>>> formatting steps >>>>>>>>>>>>>>> * *spotlessApply*: Applies code formatting steps to >>>>>>>>>>>>>>> sourcecode in-place >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> *Code format* >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The problem with code format is that there is no single >>>>>>>>>>>>>>> format that can satisfy the preferences of everybody. However, >>>>>>>>>>>>>>> from my >>>>>>>>>>>>>>> experience, once people start to use *any* code format that >>>>>>>>>>>>>>> produces consistent results across *Eclipse**/IntelliJ/cmd >>>>>>>>>>>>>>> line*, people stop worrying about code format details. >>>>>>>>>>>>>>> This is also one of the reasons why the creators of Go >>>>>>>>>>>>>>> decided to have a code formatter built-in ( >>>>>>>>>>>>>>> https://go.dev/doc/effective_go#formatting): >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> *Formatting issues are the most contentious but the least >>>>>>>>>>>>>>>> consequential. People can adapt to different formatting styles >>>>>>>>>>>>>>>> but it's >>>>>>>>>>>>>>>> better if they don't have to, and less time is devoted to the >>>>>>>>>>>>>>>> topic if >>>>>>>>>>>>>>>> everyone adheres to the same style. The problem is how to >>>>>>>>>>>>>>>> approach this >>>>>>>>>>>>>>>> Utopia without a long prescriptive style guide.* >>>>>>>>>>>>>>>> *With Go we take an unusual approach and let the machine >>>>>>>>>>>>>>>> take care of most formatting issues. The gofmt program (also >>>>>>>>>>>>>>>> available as >>>>>>>>>>>>>>>> go fmt, which operates at the package level rather than source >>>>>>>>>>>>>>>> file level) >>>>>>>>>>>>>>>> reads a Go program and emits the source in a standard style of >>>>>>>>>>>>>>>> indentation >>>>>>>>>>>>>>>> and vertical alignment, retaining and if necessary >>>>>>>>>>>>>>>> reformatting comments.* >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I would like to propose using the Google Java Format with >>>>>>>>>>>>>>> Spotless. The reason for this format is essentially that this >>>>>>>>>>>>>>> is a >>>>>>>>>>>>>>> widely-adopted code format that is designed specifically for >>>>>>>>>>>>>>> code reviews >>>>>>>>>>>>>>> (since we're spending more time reviewing code than writing it). >>>>>>>>>>>>>>> Additionally, it produces consistent formatting results >>>>>>>>>>>>>>> across *Eclipse**/IntelliJ/cmd line*, which I think is >>>>>>>>>>>>>>> another very important factor. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thus, our initial Gradle spotless configuration could look >>>>>>>>>>>>>>> similar to the above below: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> *pluginManager.withPlugin('com.diffplug.spotless') { >>>>>>>>>>>>>>> spotless { // don't run spotlessCheck during gradle check >>>>>>>>>>>>>>> task during >>>>>>>>>>>>>>> the transition phase enforceCheck = false java { >>>>>>>>>>>>>>> target >>>>>>>>>>>>>>> 'src/main/java/**/*.java', 'src/test/java/**/*.java', >>>>>>>>>>>>>>> 'src/jmh/java/**/*.java' googleJavaFormat() } }}* >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> We don't have to use Google Java Format. Spotless also >>>>>>>>>>>>>>> supports formatting the code with other formats, but from >>>>>>>>>>>>>>> previous >>>>>>>>>>>>>>> experience the Google Java Format seemed to be really the only >>>>>>>>>>>>>>> one to >>>>>>>>>>>>>>> produce consistent results across *Eclipse**/IntelliJ/cmd >>>>>>>>>>>>>>> line*. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> *How do we get to a point where the entire codebase is >>>>>>>>>>>>>>> properly formatted (and enforceCheck = false can be removed)?* >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Now this is a difficult question. Obviously we don't want to >>>>>>>>>>>>>>> have a single *format-everything* commit, as that would >>>>>>>>>>>>>>> affect lots of in-flight PRs. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> There would have to be some form of gradual formatting, for >>>>>>>>>>>>>>> example module by module. Spotless offers something called >>>>>>>>>>>>>>> Ratched ( >>>>>>>>>>>>>>> https://github.com/diffplug/spotless/tree/main/plugin-gradle#ratchet) >>>>>>>>>>>>>>> that allows to enforce code format gradually (but I'm not sure >>>>>>>>>>>>>>> this would >>>>>>>>>>>>>>> be a good thing either). >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> How exactly we'd like to approach this transitioning phase >>>>>>>>>>>>>>> this is a completely separate discussion, but I feel like at >>>>>>>>>>>>>>> least we could >>>>>>>>>>>>>>> get the ball rolling so that we make it also easier for >>>>>>>>>>>>>>> newcomers to >>>>>>>>>>>>>>> contribute to the project, since it would be straightforward >>>>>>>>>>>>>>> for them to >>>>>>>>>>>>>>> make their PRs adhere to the code format and also save time >>>>>>>>>>>>>>> during PR >>>>>>>>>>>>>>> reviews. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Eduard >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Ryan Blue >>>>>>>>>>>>>> Tabular >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Ryan Blue >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Ryan Blue >>>>>>>>>> Tabular >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Ryan Blue >>>>>>> Tabular >>>>>>> >>>>>> >>>> >>> >>> >