As of Present: Committers:
- Bruno: 2 and 3. - Gwen: (No Specific Preference) Non-Committers: - Brandon: 2. - Dongjin: 2 and 3. Let's hold on for 2 or 3 committers. Best, Dongjin On Fri, Oct 23, 2020 at 10:09 AM Gwen Shapira <g...@confluent.io> wrote: > I don't have any specific preference on the style. But I am glad you > are bringing it up. Every other project I worked on had a specific > import style, and the random import changes in PRs are pretty > annoying. > > On Wed, Oct 14, 2020 at 10:36 PM Dongjin Lee <dong...@apache.org> wrote: > > > > Hello. I hope to open a discussion about the import order in Java code. > > > > As Nikolay stated recently[^1], Kafka uses a relatively strict code style > > for Java code. However, it misses any rule on import order. For this > > reason, the code formatting settings of every local dev environment are > > different from person to person, resulting in the countless meaningless > > import order changes in the PR. > > > > For example, in `NamedCache.java` in the streams module, the `java.*` > > imports are split into two chunks, embracing the other imports between > > them. So, I propose to define an import order to prevent these kinds of > > cases in the future. > > > > To define the import order, we have to regard the following three > > orthogonal issues beforehand: > > > > a. How to group the type imports? > > b. Whether to sort the imports alphabetically? > > c. Where to place static imports: above the type imports, or below them. > > > > Since b and c seem relatively straightforward (sort the imports > > alphabetically and place the static imports below the type imports), I > hope > > to focus the available alternatives on the problem a. > > > > I evaluated the following alternatives and checked how many files are get > > effected for each case. (based on commit 1457cc652) And here are the > > results: > > > > *1. kafka, org.apache.kafka, *, javax, java (5 groups): 1222 files.* > > > > ``` > > <module name="ImportOrder"> > > <property name="groups" > > value="kafka,/^org\.apache\.kafka.*$/,*,javax,java"/> > > <property name="ordered" value="true"/> > > <property name="separated" value="true"/> > > <property name="option" value="bottom"/> > > <property name="sortStaticImportsAlphabetically" value="true"/> > > </module> > > ``` > > > > *2. (kafka|org.apache.kafka), *, javax? (3 groups): 968 files.* > > > > ``` > > <module name="ImportOrder"> > > <property name="groups" > value="(kafka|org\.apache\.kafka),*,javax?"/> > > <property name="ordered" value="true"/> > > <property name="separated" value="true"/> > > <property name="option" value="bottom"/> > > <property name="sortStaticImportsAlphabetically" value="true"/> > > </module> > > ``` > > > > *3. (kafka|org.apache.kafka), *, javax, java (4 groups): 533 files.* > > > > ``` > > <module name="ImportOrder"> > > <property name="groups" > > value="(kafka|org\.apache\.kafka),*,javax,java"/> > > <property name="ordered" value="true"/> > > <property name="separated" value="true"/> > > <property name="option" value="bottom"/> > > <property name="sortStaticImportsAlphabetically" value="true"/> > > </module> > > ``` > > > > *4. *, javax? (2 groups): 707 files.* > > > > ``` > > <module name="ImportOrder"> > > <property name="groups" value="*,javax?"/> > > <property name="ordered" value="true"/> > > <property name="separated" value="true"/> > > <property name="option" value="bottom"/> > > <property name="sortStaticImportsAlphabetically" value="true"/> > > </module> > > ``` > > > > *5. javax?, * (2 groups): 1822 files.* > > > > ``` > > <module name="ImportOrder"> > > <property name="groups" value="javax?,*"/> > > <property name="ordered" value="true"/> > > <property name="separated" value="true"/> > > <property name="option" value="bottom"/> > > <property name="sortStaticImportsAlphabetically" value="true"/> > > </module> > > ``` > > > > *6. java, javax, * (3 groups): 1809 files.* > > > > ``` > > <module name="ImportOrder"> > > <property name="groups" value="java,javax,*"/> > > <property name="ordered" value="true"/> > > <property name="separated" value="true"/> > > <property name="option" value="bottom"/> > > <property name="sortStaticImportsAlphabetically" value="true"/> > > </module> > > ``` > > > > I hope to get some feedback on this issue here. > > > > For the WIP PR, please refer here: > https://github.com/apache/kafka/pull/8404 > > > > Best, > > Dongjin > > > > [^1]: > > > https://lists.apache.org/thread.html/r2bbee24b8a459842a0fc840c6e40958e7158d29f3f2d6c0d223be80b%40%3Cdev.kafka.apache.org%3E > > [^2]: > > > https://github.com/apache/kafka/blob/trunk/streams/src/main/java/org/apache/kafka/streams/state/internals/NamedCache.java > > > > -- > > *Dongjin Lee* > > > > *A hitchhiker in the mathematical world.* > > > > > > > > > > *github: <http://goog_969573159/>github.com/dongjinleekr > > <https://github.com/dongjinleekr>keybase: > https://keybase.io/dongjinleekr > > <https://keybase.io/dongjinleekr>linkedin: > kr.linkedin.com/in/dongjinleekr > > <https://kr.linkedin.com/in/dongjinleekr>speakerdeck: > speakerdeck.com/dongjin > > <https://speakerdeck.com/dongjin>* > > > > -- > Gwen Shapira > Engineering Manager | Confluent > 650.450.2760 | @gwenshap > Follow us: Twitter | blog > -- *Dongjin Lee* *A hitchhiker in the mathematical world.* *github: <http://goog_969573159/>github.com/dongjinleekr <https://github.com/dongjinleekr>keybase: https://keybase.io/dongjinleekr <https://keybase.io/dongjinleekr>linkedin: kr.linkedin.com/in/dongjinleekr <https://kr.linkedin.com/in/dongjinleekr>speakerdeck: speakerdeck.com/dongjin <https://speakerdeck.com/dongjin>*