Thanks everybody for the discussion. I'll prepare a pull request to update the "How to contribute" and "Coding Guidelines".
Thanks, Fabian 2015-09-26 9:06 GMT+02:00 Maximilian Michels <m...@apache.org>: > Hi Fabian, > > This is a very important topic. Thanks for starting the discussion. > > 1) JIRA discussion > > Absolutely. No new feature should be introduced without a discussion. > Frankly, I see the problem that sometimes discussions only come up > when the pull request has been opened. However, this can be overcome > by the design document. > > 2) Design document > > +1 for the document. It increases transparency but also helps the > contributor to think his idea through before starting to code. The > document could also be written directly in JIRA. That way, it is more > accessible. JIRA offers mark up; even images can be attached and > displayed in the JIRA description. > > I'd like to propose another section "Limitations" for the design > document. Breaking API changes should also be listed on a special Wiki > page. > > 3) Coding style > > In addition to updating the document, do we want to enforce coding > styles also by adding new Maven Checkstyle rules? IMHO strict rules > could cause more annoyances than they actually contribute to the > readability of the code. Perhaps this should be discussed in a > separate thread. > > +1 for collecting common problems and design patterns to include them > in the document. I was thinking, that we should also cover some of the > features of tools and dependencies we heavily use, e.g. Travis, > Mockito, Guava, Log4j, FlinkMiniCluster, Unit testing vs IT cases, > etc. > > 4 ) Restructuring the how to contribute guide > > Good idea to have a meta document that explains how contributing works > in general, and another document for technical things. > > > Cheers, > Max > > > On Thu, Sep 24, 2015 at 2:53 PM, Fabian Hueske <fhue...@gmail.com> wrote: > > > > Thanks everybody for feedback and comments. > > > > Regarding 1) and 2): > > > > I like the idea of keeping the discussion of new features and > improvements > > in JIRA as Kostas proposed. > > Our coding guidelines [1] already request a JIRA issue for each pull > > request. > > > > How about we highlight this requirement more prominently and follow this > > rule more strict from now on. > > JIRA issues for new features and improvements should clearly specify the > > scope and requirements for the new feature / improvement. > > The level of detail is up to the reporter of the issue, but the community > > can request more detail or change the scope and requirements by > discussion. > > When a JIRA issue for a new feature or improvement is opened, the > community > > can start a discussion whether the feature is desirable for Flink or not. > > Any contributor (including the reporter) can also attach a > > "design-doc-requested" label to the issue. A design document can be > > proposed by anybody, including the reporter or assignee of the JIRA > issue. > > However, the issue cannot be resolved and a corresponding PR not be > merged > > before a design document has been accepted by lazy consensus. Hence, an > > assignee should propose a design doc before starting to code to avoid > major > > redesigns of the implementation. > > > > This way it is up to the community when to start a discussion about > whether > > a feature request is accepted or to request a design document. We can > make > > design documents mandatory for changes that touch the public API. > > > > Regarding 3): > > > > I agree with Vasia, that we should collect suggestions for common > patterns > > and also continuously update the coding guidelines. > > @Henry, I had best practices (exception handling, tests, etc.) in mind. > > Syntactic code style is important as well, but we should have a separate > > discussion about that, IMO. > > > > Proposal for a design document template: > > > > - Overview of general approach > > - API changes (changed interfaces, new / deprecated configuration > > parameters, changed behavior) > > - Main components and classes to touch > > > > Cheers, > > Fabian > > > > [1] http://flink.apache.org/coding-guidelines.html > > <http://flink.apache.org/coding-guidelines.html> > > > > 2015-09-24 10:52 GMT+02:00 Chiwan Park <chiwanp...@apache.org>: > > > > > Thanks Fabian for starting the discussion. > > > > > > +1 for overall approach. > > > > > > About (1), expressing that consensus must be required for new feature > in > > > “How to contribute” page is very nice. Some pull requests were sent > without > > > consensus. The contributors had to rewrote their pull requests. > > > > > > Agree with (2), (3) and (4). > > > > > > Regards, > > > Chiwan Park > > > > > > > On Sep 24, 2015, at 2:23 AM, Henry Saputra <henry.sapu...@gmail.com> > > > wrote: > > > > > > > > Thanks again, Fabian for starting the discussions. > > > > > > > > For (1) and (2) I think it is good idea and will help people to > > > > understand and follow the author thought process. > > > > Following up with Stephan's reply, some new features solutions could > > > > be explained thoroughly in the PR descriptions but some requires > > > > additional reviews of the proposed design. > > > > I like the idea of using tag in JIRA whether new features should or > > > > should not being accompanied by design document. > > > > > > > > Agree with (3) and (4). > > > > As for (3) are you thinking about more of style of code syntax via > > > > checkstyle updates, or best practices in term of no mutable state if > > > > possible, throw precise Exception if possible for interfaces, etc. ? > > > > > > > > - Henry > > > > > > > > > > > > > > > > > > > > On Wed, Sep 23, 2015 at 9:31 AM, Stephan Ewen <se...@apache.org> > wrote: > > > >> Thanks, Fabian for driving this! > > > >> > > > >> I agree with your points. > > > >> > > > >> Concerning Vasia's comment to not raise the bar too high: > > > >> That is true, the requirements should be reasonable. We can > definitely > > > tag > > > >> issues as "simple" which means they do not require a design > document. > > > That > > > >> should be more for new features and needs not be very detailed. > > > >> > > > >> We could also make the inverse, meaning we explicitly tag certain > > > issues as > > > >> "requires design document". > > > >> > > > >> Greetings, > > > >> Stephan > > > >> > > > >> > > > >> > > > >> > > > >> On Wed, Sep 23, 2015 at 5:05 PM, Vasiliki Kalavri < > > > vasilikikala...@gmail.com > > > >>> wrote: > > > >> > > > >>> Hi, > > > >>> > > > >>> I agree with you Fabian. Clarifying these issues in the "How to > > > Contribute" > > > >>> guide will save lots of time both to reviewers and contributors. > It is > > > a > > > >>> really disappointing situation when someone spends time > implementing > > > >>> something and their PR ends up being rejected because either the > > > feature > > > >>> was not needed or the implementation details were never agreed on. > > > >>> > > > >>> That said, I think we should also make sure that we don't raise the > > > bar too > > > >>> high for simple contributions. > > > >>> > > > >>> Regarding (1) and (2), I think we should clarify what kind of > > > >>> additions/changes require this process to be followed. e.g. do we > need > > > to > > > >>> discuss additions for which JIRAs already exist? Ideas described > in the > > > >>> roadmaps? Adding a new algorithm to Gelly/Flink-ML? > > > >>> > > > >>> Regarding (3), maybe we can all suggest some examples/patterns that > > > we've > > > >>> seen when reviewing PRs and then choose the most common (or all). > > > >>> > > > >>> (4) sounds good to me. > > > >>> > > > >>> Cheers, > > > >>> Vasia. > > > >>> > > > >>> On 23 September 2015 at 15:08, Kostas Tzoumas <ktzou...@apache.org > > > > > wrote: > > > >>> > > > >>>> Big +1. > > > >>>> > > > >>>> For (1), a discussion in JIRA would also be an option IMO > > > >>>> > > > >>>> For (2), let us come up with few examples on what constitutes a > > > feature > > > >>>> that needs a design doc, and what should be in the doc (IMO > > > >>>> architecture/general approach, components touched, interfaces > changed) > > > >>>> > > > >>>> > > > >>>> > > > >>>> On Wed, Sep 23, 2015 at 2:24 PM, Fabian Hueske <fhue...@gmail.com > > > > > >>> wrote: > > > >>>> > > > >>>>> Hi everybody, > > > >>>>> > > > >>>>> I guess we all have noticed that the Flink community is quickly > > > growing > > > >>>> and > > > >>>>> more and more contributions are coming in. Recently, a few > > > >>> contributions > > > >>>>> proposed new features without being discussed on the mailing > list. > > > Some > > > >>>> of > > > >>>>> these contributions were not accepted in the end. In other cases, > > > pull > > > >>>>> requests had to be heavily reworked because the approach taken > was > > > not > > > >>>> the > > > >>>>> best one. These are situations which should be avoided because > both > > > the > > > >>>>> contributor as well as the person who reviewed the contribution > > > >>> invested > > > >>>> a > > > >>>>> lot of time for nothing. > > > >>>>> > > > >>>>> I had a look at our “How to contribute” and “Coding guideline” > pages > > > >>> and > > > >>>>> think, we can improve them. I see basically two issues: > > > >>>>> > > > >>>>> 1. The documents do not explain how to propose and discuss new > > > >>> features > > > >>>>> and improvements. > > > >>>>> 2. The documents are quite technical and the structure could be > > > >>>> improved, > > > >>>>> IMO. > > > >>>>> > > > >>>>> I would like to improve these pages and propose the following > > > >>> additions: > > > >>>>> > > > >>>>> 1. Request contributors and committers to start discussions on > the > > > >>>>> mailing list for new features. This discussion should help to > figure > > > >>> out > > > >>>>> whether such a new feature is a good fit for Flink and give first > > > >>>> pointers > > > >>>>> for a design to implement it. > > > >>>>> 2. Require contributors and committers to write design > documents for > > > >>>> all > > > >>>>> new features and major improvements. These documents should be > > > attached > > > >>>> to > > > >>>>> a JIRA issue and follow a template which needs to be defined. > > > >>>>> 3. Extend the “Coding Style Guides” and add patterns that are > > > >>> commonly > > > >>>>> remarked in pull requests. > > > >>>>> 4. Restructure the current pages into three pages: a general > guide > > > >>> for > > > >>>>> contributions and two guides for how to contribute to code and > > > website > > > >>>> with > > > >>>>> all technical issues (repository, IDE setup, build system, etc.) > > > >>>>> > > > >>>>> Looking forward for your comments, > > > >>>>> Fabian > > > >>>>> > > > >>>> > > > >>> > > > > > > > > > > > > > > > > > > >