Could we use Aljoscha’s proposed checkstyle [0] as a baseline for discussion? 
It does not define a line length and we could bid down from there.

Chesnay not only reviewed the changes but summarized the checkstyle [1]:

It enforces the following rules:
        • every file has to end with a new-line
        • no trailing whitespace anywhere
        • every public/protected method/class must have a javadoc
        • imports have to be sorted alphabetically
        • static imports must come first
        • whitespace after commas, semicolons and casts
        • whitespace around operators, if, for, etc.
        • left curly brace ({) must not be at the start of the line
        • else/catch/finally must be on the same line as the right curly brace 
(})
        • static final variables must be upper case
        • non-static variables must not be upper case

[0] 
https://github.com/aljoscha/flink/blob/b60e1b8885beafe46eb7ec2552aa71cfe175aa95/tools/maven/strict-checkstyle.xml
[1] https://github.com/apache/flink/pull/3567#issuecomment-287764234 
<https://github.com/apache/flink/pull/3567#issuecomment-287764234>


> On Apr 4, 2017, at 11:55 PM, Jinkui Shi <shijinkui...@163.com> wrote:
> 
> It’s glad to restart check style discuss.
> I’m agree with Stephan’s strategy.
> 
> For the ongoing partial pull request and companies’ fork, need to be rewrite 
> following new style rule. That must be finished themselves.  
> 
> We can discuss the check style rule detail one by one(checkstyle.xml, 
> scalastyle-config.xml). The rules should be accept by most of developers.
> 
> I provide one rule to discuss:
> - maxLineLength: 120(java and scala)
> 
> [1]https://issues.apache.org/jira/browse/FLINK-4519 
> <https://issues.apache.org/jira/browse/FLINK-4519>
>> 在 2017年3月6日,下午7:42,Stephan Ewen <se...@apache.org> 写道:
>> 
>> A singular "all reformat in one instant" will cause immense damage to the
>> project, in my opinion.
>> 
>> - There are so many pull requests that we are having a hard time keeping
>> up, and merging will a lot more time intensive.
>> - I personally have many forked branches with WIP features that will
>> probably never go in if the branches become unmergeable. I expect that to
>> be true for many other committers and contributors.
>> - Some companies have Flink forks and are rebasing patches onto master
>> regularly. They will be completely screwed by a full reformat.
>> 
>> If we do something, the only thing that really is possible is:
>> 
>> (1) Define a style. Ideally not too far away from Flink's style.
>> (2) Apply it to new projects/modules
>> (3) Coordinate carefully to pull it into existing modules, module by
>> module. Leaving time to adopt pull requests bit by bit, and allowing forks
>> to go through minor merges, rather than total conflict.
>> 
>> 
>> 
>> On Wed, Mar 1, 2017 at 5:57 PM, Henry Saputra <henry.sapu...@gmail.com>
>> wrote:
>> 
>>> It is actually Databricks Scala guide to help contributions to Apache Spark
>>> so not really official Spark Scala guide.
>>> The style guide feels bit more like asking people to write Scala in Java
>>> mode so I am -1 to follow the style for Apache Flink Scala if that what you
>>> are recommending.
>>> 
>>> If the "unification" means ONE style guide for both Java and Scala I would
>>> vote -1 to it because both languages have different semantics and styles to
>>> make them readable and understandable.
>>> 
>>> We could start with improving the Scala maven style guide to follow more
>>> Scala official style guide [1] and add IntelliJ Idea or Eclipse plugin
>>> style to follow suit.
>>> 
>>> Java side has bit more strict style check but we could make it tighter but
>>> embracing more Google Java guide closely with minor exceptions
>>> 
>>> - Henry
>>> 
>>> [1] http://docs.scala-lang.org/style/
>>> 
>>> On Mon, Feb 27, 2017 at 11:54 AM, Stavros Kontopoulos <
>>> st.kontopou...@gmail.com> wrote:
>>> 
>>>> +1 to provide and enforcing a unified code style for both java and scala.
>>>> Unification should apply when it makes sense like comments though.
>>>> 
>>>> Eventually code base should be re-factored. I would vote for the one at a
>>>> time module fix apporoach.
>>>> Style guide should be part of any PR review.
>>>> 
>>>> We could also have a look at the spark style guide:
>>>> https://github.com/databricks/scala-style-guide
>>>> 
>>>> The style code and general guidelines help keep code more readable and
>>> keep
>>>> things simple
>>>> with many contributors and different styles of code writing + language
>>>> features.
>>>> 
>>>> 
>>>> On Mon, Feb 27, 2017 at 8:01 PM, Stephan Ewen <se...@apache.org> wrote:
>>>> 
>>>>> I agree, reformatting 90% of the code base is tough.
>>>>> 
>>>>> There are two main issues:
>>>>> (1) Incompatible merges. This is hard, especially for the folks that
>>>> have
>>>>> to merge the pull requests ;-)
>>>>> 
>>>>> (2) Author history: This is less of an issue, I think. "git log
>>>>> <filename>" and "git show <revision> -- <filename>" will still work and
>>>> one
>>>>> may have to go one commit back to find out why something was changed
>>>>> 
>>>>> 
>>>>> What I could image is to do this incrementally. Define the code style
>>> in
>>>>> "flink-parent" but do not activate it.
>>>>> Then start with some projects (new projects, plus some others):
>>>>> merge/reject PRs, reformat, activate code style.
>>>>> 
>>>>> Piece by piece. This is realistically going to take a long time until
>>> it
>>>> is
>>>>> pulled through all components, but that's okay, I guess.
>>>>> 
>>>>> Stephan
>>>>> 
>>>>> 
>>>>> On Mon, Feb 27, 2017 at 1:53 PM, Aljoscha Krettek <aljos...@apache.org
>>>> 
>>>>> wrote:
>>>>> 
>>>>>> Just for a bit of context, this is the output of running cloc on the
>>>>> Flink
>>>>>> codebase:
>>>>>> ------------------------------------------------------------
>>>>>> -----------------------
>>>>>> Language                         files          blank        comment
>>>>>>   code
>>>>>> ------------------------------------------------------------
>>>>>> -----------------------
>>>>>> Java                              4609         126825         185428
>>>>>> 519096
>>>>>> 
>>>>>> => 704,524 lines of code + comments/javadoc
>>>>>> 
>>>>>> When I apply the google style to the Flink code base using
>>>>>> https://github.com/google/google-java-format I get these commit
>>>>>> statistics:
>>>>>> 
>>>>>> 4577 files changed, 647645 insertions(+), 622663 deletions(-)
>>>>>> 
>>>>>> That is, a change to the Google Code Style would touch roughly over
>>> 90%
>>>>> of
>>>>>> all code/comment lines.
>>>>>> 
>>>>>> I would like to have a well defined code style, such as the Google
>>> Code
>>>>>> style, that has nice tooling and support but I don't think we will
>>> ever
>>>>>> convince enough people to do this kind of massive change. Even I
>>> think
>>>>> it's
>>>>>> a bit crazy to change 90% of the code base in one commit.
>>>>>> 
>>>>>> On Mon, 27 Feb 2017 at 11:10 Till Rohrmann <trohrm...@apache.org>
>>>> wrote:
>>>>>> 
>>>>>>> No, I think that's exactly what people mean when saying "losing the
>>>>>> commit
>>>>>>> history". With the reformatting you would have to go manually
>>> through
>>>>> all
>>>>>>> past commits until you find the commit which changed a given line
>>>>> before
>>>>>>> the reformatting.
>>>>>>> 
>>>>>>> Cheers,
>>>>>>> Till
>>>>>>> 
>>>>>>> On Sun, Feb 26, 2017 at 6:32 PM, Alexander Alexandrov <
>>>>>>> alexander.s.alexand...@gmail.com> wrote:
>>>>>>> 
>>>>>>>> Just to clarify - by "losing the commit history" you actually
>>> mean
>>>>>>> "losing
>>>>>>>> the ability to annotate each line in a file with its last
>>> commit",
>>>>>> right?
>>>>>>>> 
>>>>>>>> Or is there some other sense in which something is lost after
>>>>> applying
>>>>>>> bulk
>>>>>>>> re-format?
>>>>>>>> 
>>>>>>>> Cheers,
>>>>>>>> A.
>>>>>>>> 
>>>>>>>> On Sat, Feb 25, 2017 at 7:10 AM Henry Saputra <
>>>>> henry.sapu...@gmail.com
>>>>>>> 
>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> Just want to clarify what unify code style here.
>>>>>>>>> 
>>>>>>>>> Is the intention to have IDE and Maven plugins to have the same
>>>>> check
>>>>>>>> style
>>>>>>>>> rules?
>>>>>>>>> 
>>>>>>>>> Or are we talking about having ONE code style for both Java and
>>>>>> Scala?
>>>>>>>>> 
>>>>>>>>> - Henry
>>>>>>>>> 
>>>>>>>>> On Fri, Feb 24, 2017 at 8:08 AM, Greg Hogan <
>>> c...@greghogan.com>
>>>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> I agree wholeheartedly with Ufuk. We cannot reformat the
>>>>> codebase,
>>>>>>>> cannot
>>>>>>>>>> pause while flushing the PR queue, and won't find a consensus
>>>>> code
>>>>>>>> style.
>>>>>>>>>> 
>>>>>>>>>> I think we can create a baseline code style for new and
>>>> existing
>>>>>>>>>> contributors for which reformatting on changed files will be
>>>>>>> acceptable
>>>>>>>>> for
>>>>>>>>>> PR reviews.
>>>>>>>>>> 
>>>>>>>>>> On Fri, Feb 24, 2017 at 5:01 AM, Dawid Wysakowicz <
>>>>>>>>>> wysakowicz.da...@gmail.com> wrote:
>>>>>>>>>> 
>>>>>>>>>>> The problem with code style when it is not enforced is that
>>>> it
>>>>>> will
>>>>>>>> be
>>>>>>>>> a
>>>>>>>>>>> matter of luck to what parts of files / new files will it
>>> be
>>>>>>> applied.
>>>>>>>>>> When
>>>>>>>>>>> the code style is not applied to whole file, it is pretty
>>>> much
>>>>>>>> useless
>>>>>>>>>>> anyway. You would need to manually select just the
>>> fragments
>>>>> one
>>>>>> is
>>>>>>>>>>> changing. The benefits of having code style and enforcing
>>> it
>>>> I
>>>>>> see
>>>>>>>> are:
>>>>>>>>>>> - being able to apply autoformatter, which speeds up
>>> writing
>>>>>> code
>>>>>>>>>>> - it would make reviewing PRs easier as e.g. there would
>>> be
>>>>> line
>>>>>>>>> length
>>>>>>>>>>> limit applied etc. which will make line breaking more
>>> reader
>>>>>>>> friendly.
>>>>>>>>>>> 
>>>>>>>>>>> Though I think if a consensus is not reachable it would be
>>>> good
>>>>>> to
>>>>>>>> once
>>>>>>>>>> and
>>>>>>>>>>> forever decide that we don't want a code style and
>>>> checkstyle.
>>>>>>>>>>> 
>>>>>>>>>>> 2017-02-24 10:51 GMT+01:00 Ufuk Celebi <u...@apache.org>:
>>>>>>>>>>> 
>>>>>>>>>>>> On Fri, Feb 24, 2017 at 10:46 AM, Fabian Hueske <
>>>>>>> fhue...@gmail.com
>>>>>>>>> 
>>>>>>>>>>> wrote:
>>>>>>>>>>>>> I agree with Till that encouraging a code style without
>>>>>>> enforcing
>>>>>>>>> it
>>>>>>>>>>> does
>>>>>>>>>>>>> not make a lot of sense.
>>>>>>>>>>>>> If we enforce it, we need to touch all files and PRs.
>>>>>>>>>>>> 
>>>>>>>>>>>> I think it makes sense for new contributors to have a
>>>>> starting
>>>>>>>> point
>>>>>>>>>>>> without enforcing anything (I do agree that we are past
>>> the
>>>>>> point
>>>>>>>> to
>>>>>>>>>>>> reach consensus on a style and enforcement ;-)).
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
> 

Reply via email to