Vova,

Looks good to me.

Please add clear explanation how to check 1.4, 1.5 and 2.x.
Also, this should be published as a wiki page with refs to... eg. Coding
Guidelines.

пн, 7 мая 2018 г. в 17:26, Vladimir Ozerov <voze...@gridgain.com>:

> Igniters,
>
> This is the checklist I have at the moment. Please let me know if you have
> any comments on existing items, or want to add or remove anything. It looks
> like we may have not only strict rules, but *nice to have* points here as
> well with help of *MUST*, *SHOULD* and *MAY* words as per RFC2119 [1]. So
> please feel free to suggest optional items as well.
>
> 1) API
> 1.1) API compatibility *MUST* be maintained between minor releases. Do not
> remove existing methods or change their signatures, deprecate them instead
> 1.2) Default behaviour "SHOULD NOT* be changed between minor releases,
> unless absolutely needed. If change is made, it *MUST* be described in
> "Migration Guide"
> 1.3) New operation *MUST* be well-documented in code (javadoc, dotnetdoc):
> documentation must contain method's purpose, description of parameters and
> how their values affect the outcome, description of return value and it's
> default, behavior in negative cases, interaction with other operations and
> components
> 1.4) API parity between Java and .NET platforms *SHOULD* be maintained when
> operation makes sense on both platforms. If method cannot be implemented in
> a platform immediately, new JIRA ticket *MUST* be created and linked to
> current ticket
> 1.5) API parity between thin clients (Java, .NET) *SHOULD* be maintained
> when operation makes sense on several clients. If method cannot be
> implemented in a client immediately, new JIRA ticket *MUST* be created and
> linked to current ticket
> 1.6) All exceptions thrown to a user *MUST* have explanation how to
> resolve, workaround or debug an error
>
> 2) Compatibility
> 2.1) Persistence backward compatibility *MUST* be maintained between minor
> releases. It should be possible to start newer version on data files
> created by the previous version
> 2.2) Thin client forward and backward compatibility *SHOULD* be maintained
> between two consecutive minor releases. If compatibility cannot be
> maintained it *MUST* be described in "Migration Guide"
> 2.3) JDBC and ODBC forward and backward compatibility *SHOULD* be
> maintained between two consecutive minor releases. If compatibility cannot
> be maintained it *MUST* be described in "Migration Guide"
>
> 3) Tests
> 3.1) New functionality *MUST* be covered with unit tests for both positive
> and negative use cases
> 3.2) All test suites *MUST* be run before merge to master..There *MUST* be
> no new test failures
>
> 4) Code style *MUST* be followed as per Ignite's Coding Guidelines
>
> Vladimir.
>
> [1] https://www.ietf.org/rfc/rfc2119.txt
>
> On Fri, May 4, 2018 at 4:33 PM, Vladimir Ozerov <voze...@gridgain.com>
> wrote:
>
> > Hi Dmitry,
> >
> > Yes, I'll do that in the nearest days.
> >
> > On Wed, Apr 25, 2018 at 8:24 PM, Dmitry Pavlov <dpavlov....@gmail.com>
> > wrote:
> >
> >> Igniters, the idea was related to small refactorings co-located with
> main
> >> change.
> >>
> >> Main change itself indicates that existing code did not meet the
> criteria
> >> of practice. Approving of standalone refactorings instead contradicts
> with
> >> principle don't touch if it works. So I still like idea of co-located
> >> changes improving code, javadocs, style, etc.
> >>
> >> But let's not argue about this point now, let's summarize the undisputed
> >> points and add it to the wiki. Vladimir, would you please do it?
> >>
> >>
> >> ср, 25 апр. 2018 г. в 16:42, Nikolay Izhikov <nizhi...@apache.org>:
> >>
> >> > Igniters,
> >> >
> >> > I agree with Vova.
> >> >
> >> > Don't fix if it works!
> >> >
> >> > If you 100% sure then it a useful addition to the product - just make
> a
> >> > separate ticket.
> >> >
> >> > В Ср, 25/04/2018 в 11:44 +0300, Vladimir Ozerov пишет:
> >> > > Guys,
> >> > >
> >> > > The problem with in-place refactorings is that you increase affected
> >> > scope.
> >> > > It is not uncommon to break compatibility or public contracts with
> >> even
> >> > > minor things. E.g. recently we decided drop org.jsr166 package in
> >> favor
> >> > of
> >> > > Java 8 classes. Innocent change. Result - broken storage. Another
> >> problem
> >> > > is conflicts. It is not uncommon to have long-lived branches which
> we
> >> > need
> >> > > to merge with master over and over again. And a lot of refactorings
> >> cause
> >> > > conflicts. It is much easier to resolve them if you know that logic
> >> was
> >> > not
> >> > > affected as opposed to cases when you need to resolve both renames
> and
> >> > > method extractions along with business-logic changes.
> >> > >
> >> > > I'd like to repeat - if you have a time for refactoring then you
> >> > definitely
> >> > > have a time to extract these changes to separate PR and submit a
> >> separate
> >> > > ticket. I am quite understand what "low priority" do you mean if you
> >> do
> >> > > refactorings on your own.
> >> > >
> >> > > On Tue, Apr 24, 2018 at 10:52 PM, Andrey Kuznetsov <
> stku...@gmail.com
> >> >
> >> > > wrote:
> >> > >
> >> > > > +1.
> >> > > >
> >> > > > Once again, I beg for "small refactoring permission" in a
> checklist.
> >> > As of
> >> > > > today, separate tickets for small refactorings has lowest
> priority,
> >> > since
> >> > > > they neither fix any flaw nor add new functionality. Also, the
> >> > attempts to
> >> > > > make issue-related code safer / cleaner / more readable in "real"
> >> pull
> >> > > > requests are typically rejected, since they contradict our current
> >> > > > guidelines.
> >> > > >
> >> > > > I understand this will require a bit more effort from
> >> > committer/maintainer,
> >> > > > but otherwise we will get constantly degrading code quality.
> >> > > >
> >> > > >
> >> > > > 2018-04-24 18:52 GMT+03:00 Eduard Shangareev <
> >> > eduard.shangar...@gmail.com
> >> > > > > :
> >> > > > > Vladimir,
> >> > > > >
> >> > > > > I am not talking about massive/sophisticated refactoring. But I
> >> > believe
> >> > > > > that ask to extract some methods should be OK to do without an
> >> extra
> >> > > > > ticket.
> >> > > > >
> >> > > > > A checklist shouldn't be necessarily a set of certain rules but
> >> also
> >> > it
> >> > > > > could include suggestion and reminders.
> >> > > > >
> >> > > > > On Tue, Apr 24, 2018 at 6:39 PM, Vladimir Ozerov <
> >> > voze...@gridgain.com>
> >> > > > > wrote:
> >> > > > >
> >> > > > > > Ed,
> >> > > > > >
> >> > > > > > Refactoring is a separate task. If you would like to rework
> >> > exchange
> >> > > > >
> >> > > > > future
> >> > > > > > - please do this in a ticket "Refactor exchange task", nobody
> >> would
> >> > > > >
> >> > > > > against
> >> > > > > > this. This is just a matter of creating separate ticket and
> >> > separate
> >> > > >
> >> > > > PR.
> >> > > > > If
> >> > > > > > one have a time for refactoring, it should not be a problem
> for
> >> > him to
> >> > > > > > spend several minutes on JIRA and GitHub.
> >> > > > > >
> >> > > > > > As far as documentation - what you describe is normal review
> >> > process,
> >> > > > >
> >> > > > > when
> >> > > > > > reviewer might want to ask contributor to fix something.
> >> Checklist
> >> > is a
> >> > > > > > different thing - this is a set of rules which must be
> followed
> >> by
> >> > > > >
> >> > > > > anyone.
> >> > > > > > I do not understand how you can define documentation in this
> >> > checklist.
> >> > > > > > Same problem with logging - what is "enough"?
> >> > > > > >
> >> > > > > > On Tue, Apr 24, 2018 at 4:51 PM, Eduard Shangareev <
> >> > > > > > eduard.shangar...@gmail.com> wrote:
> >> > > > > >
> >> > > > > > > Igniters,
> >> > > > > > >
> >> > > > > > > I don't understand why you are so against refactoring.
> >> > > > > > > Code already smells like hell. Methods 200+ line is normal.
> >> > Exchange
> >> > > > > >
> >> > > > > > future
> >> > > > > > > is asking to be separated on several one. Transaction code
> >> could
> >> > > > > >
> >> > > > > > understand
> >> > > > > > > few people.
> >> > > > > > >
> >> > > > > > > If we separate refactoring from development it would mean
> that
> >> > no one
> >> > > > > >
> >> > > > > > will
> >> > > > > > > do it.
> >> > > > > > >
> >> > > > > > >
> >> > > > > > > 2) Documentation.
> >> > > > > > > Everything which was asked by reviewers to clarify idea
> >> should be
> >> > > > > >
> >> > > > > > reflected
> >> > > > > > > in the code.
> >> > > > > > >
> >> > > > > > > 3) Logging.
> >> > > > > > > Logging should be enough to troubleshoot the problem if
> >> someone
> >> > comes
> >> > > > >
> >> > > > > to
> >> > > > > > > user-list with an issue in the code.
> >> > > > > > >
> >> > > > > > >
> >> > > > > > > On Fri, Apr 20, 2018 at 7:06 PM, Dmitry Pavlov <
> >> > > >
> >> > > > dpavlov....@gmail.com>
> >> > > > > > > wrote:
> >> > > > > > >
> >> > > > > > > > Hi Igniters,
> >> > > > > > > >
> >> > > > > > > > +1 to idea of checklist.
> >> > > > > > > >
> >> > > > > > > > +1 to refactoring and documenting code related to ticket
> in
> >> > +/-20
> >> > > >
> >> > > > LOC
> >> > > > > > at
> >> > > > > > > > least.
> >> > > > > > > >
> >> > > > > > > > If we start to do it as part of our regular contribution,
> >> code
> >> > will
> >> > > > >
> >> > > > > be
> >> > > > > > > > better, it would became common practice and part of Apache
> >> > Ignite
> >> > > > > > > > development culure.
> >> > > > > > > >
> >> > > > > > > > If we will hope we will have free time to submit separate
> >> patch
> >> > > > >
> >> > > > > someday
> >> > > > > > > and
> >> > > > > > > > have patience to complete patch-submission process, code
> >> will
> >> > > >
> >> > > > remain
> >> > > > > > > > undocumented and poor-readable.
> >> > > > > > > >
> >> > > > > > > > Sincerely,
> >> > > > > > > > Dmitriy Pavlov
> >> > > > > > > >
> >> > > > > > > > пт, 20 апр. 2018 г. в 18:56, Александр Меньшиков <
> >> > > > >
> >> > > > > sharple...@gmail.com
> >> > > > > > > :
> >> > > > > > > >
> >> > > > > > > > > 4) Metrics.
> >> > > > > > > > > partially +1
> >> > > > > > > > >
> >> > > > > > > > > It makes sense to have some minimal code coverage for
> new
> >> > code in
> >> > > > >
> >> > > > > PR.
> >> > > > > > > > IMHO.
> >> > > > > > > > >
> >> > > > > > > > > Also, we can limit the cyclomatic complexity of the new
> >> code
> >> > in
> >> > > >
> >> > > > PR
> >> > > > > > too.
> >> > > > > > > > >
> >> > > > > > > > > 6) Refactoring
> >> > > > > > > > > -1
> >> > > > > > > > >
> >> > > > > > > > > I understand why people want to refactor old code.
> >> > > > > > > > > But I think refactoring should be always a separate
> task.
> >> > > > > > > > > And it's better to remove all refactoring from PR, if
> it's
> >> > not
> >> > > >
> >> > > > the
> >> > > > > > > sense
> >> > > > > > > > of
> >> > > > > > > > > the issue.
> >> > > > > > > > >
> >> > > > > > > > >
> >> > > > > > > > > 2018-04-20 16:54 GMT+03:00 Andrey Kuznetsov <
> >> > stku...@gmail.com>:
> >> > > > > > > > >
> >> > > > > > > > > > What about adding the following item to the checklist:
> >> > when the
> >> > > > > > >
> >> > > > > > > change
> >> > > > > > > > > adds
> >> > > > > > > > > > new functionality, then unit tests should also be
> >> > provided, if
> >> > > > >
> >> > > > > it's
> >> > > > > > > > > > technically possible?
> >> > > > > > > > > >
> >> > > > > > > > > > As for refactorings, in fact they are strongly
> >> discouraged
> >> > > >
> >> > > > today
> >> > > > > > for
> >> > > > > > > > some
> >> > > > > > > > > > unclear reason. Let's permit to make refactorings in
> the
> >> > > > >
> >> > > > > checklist
> >> > > > > > > > being
> >> > > > > > > > > > discussed. (Of cource, refactoring should relate to
> >> problem
> >> > > >
> >> > > > being
> >> > > > > > > > > solved.)
> >> > > > > > > > > >
> >> > > > > > > > > > 2018-04-20 16:16 GMT+03:00 Vladimir Ozerov <
> >> > > >
> >> > > > voze...@gridgain.com
> >> > > > > > :
> >> > > > > > > > > >
> >> > > > > > > > > > > Hi Ed,
> >> > > > > > > > > > >
> >> > > > > > > > > > > Unfortunately some of these points are not good
> >> > candidates
> >> > > >
> >> > > > for
> >> > > > > > the
> >> > > > > > > > > > > checklist because of these:
> >> > > > > > > > > > > - It must be clear and disallow *multiple
> >> > interpretations*
> >> > > > > > > > > > > - It must be *lightweight*, otherwise Ignite
> >> development
> >> > > >
> >> > > > would
> >> > > > > > > > become a
> >> > > > > > > > > > > nightmare
> >> > > > > > > > > > >
> >> > > > > > > > > > > We cannot have "nice to have" points here. Checklist
> >> > should
> >> > > > > >
> >> > > > > > answer
> >> > > > > > > > the
> >> > > > > > > > > > > question "is ticket eligible to be merged?"
> >> > > > > > > > > > >
> >> > > > > > > > > > > > > > 1) Code style.
> >> > > > > > > > > > >
> >> > > > > > > > > > > +1
> >> > > > > > > > > > >
> >> > > > > > > > > > > > > >  2) Documentation
> >> > > > > > > > > > >
> >> > > > > > > > > > > -1, it is impossible to define what is
> >> > "well-documented". A
> >> > > > >
> >> > > > > piece
> >> > > > > > > of
> >> > > > > > > > > code
> >> > > > > > > > > > > could be obvious for one contributor, and
> non-obvious
> >> for
> >> > > > > >
> >> > > > > > another.
> >> > > > > > > In
> >> > > > > > > > > any
> >> > > > > > > > > > > case this is not a blocker for merge. Instead,
> during
> >> > review
> >> > > > >
> >> > > > > one
> >> > > > > > > can
> >> > > > > > > > > ask
> >> > > > > > > > > > > implementer to add more docs, but it cannot be
> forced.
> >> > > > > > > > > > >
> >> > > > > > > > > > > > > >  3) Logging
> >> > > > > > > > > > >
> >> > > > > > > > > > > -1, same problem - what is "enough logging?". Enough
> >> for
> >> > > >
> >> > > > whom?
> >> > > > > > How
> >> > > > > > > to
> >> > > > > > > > > > > understand whether it is enough or not?
> >> > > > > > > > > > >
> >> > > > > > > > > > > > > >  4) Metrics
> >> > > > > > > > > > >
> >> > > > > > > > > > > -1, no clear boundaries, and decision on whether
> >> metrics
> >> > are
> >> > > >
> >> > > > to
> >> > > > > > be
> >> > > > > > > > > added
> >> > > > > > > > > > or
> >> > > > > > > > > > > not should be performed during design phase. As
> >> before,
> >> > it is
> >> > > > > > > >
> >> > > > > > > > perfectly
> >> > > > > > > > > > > valid to ask contributor to add metrics with clear
> >> > > >
> >> > > > explanation
> >> > > > > > why,
> >> > > > > > > > but
> >> > > > > > > > > > > this is not part of the checklist.
> >> > > > > > > > > > >
> >> > > > > > > > > > > > > > 5) TC status
> >> > > > > > > > > > >
> >> > > > > > > > > > > +1, already mentioned
> >> > > > > > > > > > >
> >> > > > > > > > > > > > > >  6) Refactoring
> >> > > > > > > > > > >
> >> > > > > > > > > > > Strong -1. OOP is a slippery slope, there are no
> good
> >> > and bad
> >> > > > > > > >
> >> > > > > > > > receipts
> >> > > > > > > > > > for
> >> > > > > > > > > > > all cases, hence it cannot be used in a checklist.
> >> > > > > > > > > > >
> >> > > > > > > > > > > We can borrow useful rules from p.2, p.3 and p.4 if
> >> you
> >> > > >
> >> > > > provide
> >> > > > > > > clear
> >> > > > > > > > > > > definitions on how to measure them.
> >> > > > > > > > > > >
> >> > > > > > > > > > > Vladimir.
> >> > > > > > > > > > >
> >> > > > > > > > > > > On Fri, Apr 20, 2018 at 3:50 PM, Eduard Shangareev <
> >> > > > > > > > > > > eduard.shangar...@gmail.com> wrote:
> >> > > > > > > > > > >
> >> > > > > > > > > > > > Also, I want to add some technical requirement.
> >> Let's
> >> > > >
> >> > > > discuss
> >> > > > > > > them.
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > 1) Code style.
> >> > > > > > > > > > > > The code needs to be formatted according to coding
> >> > > >
> >> > > > guidelines
> >> > > > > > > > > > > > <
> >> > > > > > > > >
> >> > > > > > > > > https://cwiki.apache.org/confluence/display/IGNITE/
> >> > > > >
> >> > > > > Coding+Guidelines
> >> > > > > > > > > > > .
> >> > > > > > > > > > > > The
> >> > > > > > > > > > > > code must not contain TODOs without a ticket
> >> reference.
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > It is highly recommended to make major formatting
> >> > changes
> >> > > >
> >> > > > in
> >> > > > > > > > existing
> >> > > > > > > > > > > code
> >> > > > > > > > > > > > as a separate commit, to make review process more
> >> > > >
> >> > > > practical.
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > 2) Documentation.
> >> > > > > > > > > > > > Added code should be well-documented. Any methods
> >> that
> >> > > >
> >> > > > raise
> >> > > > > > > > > questions
> >> > > > > > > > > > > > regarding their code flow, invariants,
> >> synchronization,
> >> > > >
> >> > > > etc.,
> >> > > > > > > must
> >> > > > > > > > be
> >> > > > > > > > > > > > documented with comprehensive javadoc. Any
> reviewer
> >> can
> >> > > > >
> >> > > > > request
> >> > > > > > > > that
> >> > > > > > > > > a
> >> > > > > > > > > > > > particular added method be documented. Also, it
> is a
> >> > good
> >> > > > > > >
> >> > > > > > > practice
> >> > > > > > > > to
> >> > > > > > > > > > > > document old code in a 10-20 lines region around
> >> > changed
> >> > > > >
> >> > > > > code.
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > 3) Logging.
> >> > > > > > > > > > > > Make sure that there are enough logging added in
> >> every
> >> > > > >
> >> > > > > category
> >> > > > > > > for
> >> > > > > > > > > > > > possible diagnostic in field. Check that logging
> >> > messages
> >> > > >
> >> > > > are
> >> > > > > > > > > properly
> >> > > > > > > > > > > > spelled.
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > 4) Metrics.
> >> > > > > > > > > > > > Are there any metrics that need to be exposed to
> >> user?
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > 5) TC status.
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > Recheck that there are no new failing tests
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > 6) Refactoring.
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > The code should be better than before:
> >> > > > > > > > > > > >
> >> > > > > > > > > > > >    - extract method from big one;
> >> > > > > > > > > > > >    - do anything else to make code clearer (don't
> >> > forget
> >> > > > >
> >> > > > > about
> >> > > > > > > some
> >> > > > > > > > > > > >    OOP-practise, replace if-else hell with
> >> inheritance
> >> > > > > > > > > > > >    - split refactoring (renaming, code format)
> from
> >> > actual
> >> > > > > > >
> >> > > > > > > changes
> >> > > > > > > > by
> >> > > > > > > > > > > >    separate commit
> >> > > > > > > > > > > >
> >> > > > > > > > > > > >
> >> > > > > > > > > > > >
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > On Fri, Apr 20, 2018 at 3:23 PM, Eduard
> Shangareev <
> >> > > > > > > > > > > > eduard.shangar...@gmail.com> wrote:
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > > Hi, guys.
> >> > > > > > > > > > > > >
> >> > > > > > > > > > > > > I believe that we should update maintainers list
> >> > before
> >> > > > > >
> >> > > > > > adding
> >> > > > > > > > this
> >> > > > > > > > > > > > review
> >> > > > > > > > > > > > > requirement.
> >> > > > > > > > > > > > > There should not be the situation when there is
> >> only
> >> > one
> >> > > > > > > > >
> >> > > > > > > > > contributor
> >> > > > > > > > > > > who
> >> > > > > > > > > > > > > is responsible for a component.
> >> > > > > > > > > > > > > We already have issues with review speed and
> >> response
> >> > > >
> >> > > > time.
> >> > > > > > > > > > > > >
> >> > > > > > > > > > > > > On Fri, Apr 20, 2018 at 2:17 PM, Anton
> Vinogradov
> >> <
> >> > > > > > >
> >> > > > > > > a...@apache.org
> >> > > > > > > > >
> >> > > > > > > > > > > wrote:
> >> > > > > > > > > > > > >
> >> > > > > > > > > > > > > > Vova,
> >> > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > Everything you described sound good to me.
> >> > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > I'd like to propose to create special page at
> AI
> >> > Wiki
> >> > > >
> >> > > > and
> >> > > > > to
> >> > > > > > > > > > describe
> >> > > > > > > > > > > > > > checklist.
> >> > > > > > > > > > > > > > In case we'll find something should be
> >> > changed/improved
> >> > > >
> >> > > > it
> >> > > > > > > will
> >> > > > > > > > be
> >> > > > > > > > > > > easy
> >> > > > > > > > > > > > to
> >> > > > > > > > > > > > > > update the page.
> >> > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > 2018-04-20 0:53 GMT+03:00 Nikolay Izhikov <
> >> > > > > > >
> >> > > > > > > nizhi...@apache.org
> >> > > > > > > > > :
> >> > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > Hello, Vladimir.
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > Thank you for seting up this discussion.
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > As we discussed, I think an important part
> of
> >> > this
> >> > > >
> >> > > > check
> >> > > > > > > list
> >> > > > > > > > is
> >> > > > > > > > > > > > > > > compatibility rules.
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > * What should be backward compatible?
> >> > > > > > > > > > > > > > > * How should we maintain it?
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > 3) If ticket changes public API or
> existing
> >> > > >
> >> > > > behavior,
> >> > > > > at
> >> > > > > > > > least
> >> > > > > > > > > > two
> >> > > > > > > > > > > > > > > commiters should approve the changes
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > We can learn from other open source project
> >> > > >
> >> > > > experience.
> >> > > > > > > > > > > > > > > Apache Kafka [1], for example, requires
> >> KIP(kafka
> >> > > > > > >
> >> > > > > > > improvement
> >> > > > > > > > > > > > proposal)
> >> > > > > > > > > > > > > > > for *every* major change.
> >> > > > > > > > > > > > > > > Major change definition includes public API.
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > [1] https://cwiki.apache.org/
> >> > > >
> >> > > > confluence/display/KAFKA/
> >> > > > > > > > > > > > > > > Kafka+Improvement+Proposals
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > В Чт, 19/04/2018 в 23:00 +0300, Vladimir
> >> Ozerov
> >> > пишет:
> >> > > > > > > > > > > > > > > > Hi Igniters,
> >> > > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > It's glad to see our community becomes
> >> larger
> >> > every
> >> > > > >
> >> > > > > day.
> >> > > > > > > But
> >> > > > > > > > > as
> >> > > > > > > > > > it
> >> > > > > > > > > > > > > > grows
> >> > > > > > > > > > > > > > > it
> >> > > > > > > > > > > > > > > > becomes more and more difficult to manage
> >> > review and
> >> > > > > >
> >> > > > > > merge
> >> > > > > > > > > > > processes
> >> > > > > > > > > > > > > > and
> >> > > > > > > > > > > > > > > > keep quality of our decisions at the
> proper
> >> > level.
> >> > > > >
> >> > > > > More
> >> > > > > > > > > > > > contributors,
> >> > > > > > > > > > > > > > > more
> >> > > > > > > > > > > > > > > > commits, more components interlinked with
> >> each
> >> > other
> >> > > > >
> >> > > > > in
> >> > > > > > > > subtle
> >> > > > > > > > > > > ways.
> >> > > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > I would like to propose to setup a formal
> >> > review
> >> > > > > > >
> >> > > > > > > checklist.
> >> > > > > > > > > This
> >> > > > > > > > > > > > would
> >> > > > > > > > > > > > > > > be a
> >> > > > > > > > > > > > > > > > set of actions every reviewer needs to
> check
> >> > before
> >> > > > > > > >
> >> > > > > > > > approving
> >> > > > > > > > > > > merge
> >> > > > > > > > > > > > > > of a
> >> > > > > > > > > > > > > > > > certain feature. Passing the checklist
> >> would be
> >> > > > > >
> >> > > > > > *necessary
> >> > > > > > > > but
> >> > > > > > > > > > not
> >> > > > > > > > > > > > > > > > sufficient* phase before commit could be
> >> added
> >> > to
> >> > > >
> >> > > > the
> >> > > > > > main
> >> > > > > > > > > > branch.
> >> > > > > > > > > > > > The
> >> > > > > > > > > > > > > > > > checklist would help us to detect a lot of
> >> > common
> >> > > > > >
> >> > > > > > problems
> >> > > > > > > > > such
> >> > > > > > > > > > a
> >> > > > > > > > > > > > > > broken
> >> > > > > > > > > > > > > > > > tests or bad UX earlier, and would help
> >> > contributors
> >> > > > > >
> >> > > > > > lead
> >> > > > > > > > > their
> >> > > > > > > > > > > pull
> >> > > > > > > > > > > > > > > > requests to merge.
> >> > > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > Hallmarks of a good checklist:
> >> > > > > > > > > > > > > > > > - It must be followed be everyone without
> >> > exceptions
> >> > > > > > > > > > > > > > > > - It must be clear and disallow multiple
> >> > > > >
> >> > > > > interpretations
> >> > > > > > > > > > > > > > > > - It must be lightweight, otherwise Ignite
> >> > > >
> >> > > > development
> >> > > > > > > would
> >> > > > > > > > > > > become
> >> > > > > > > > > > > > a
> >> > > > > > > > > > > > > > > > nightmare
> >> > > > > > > > > > > > > > > > - It must be non-blocking, i.e.
> >> inacessibility
> >> > of a
> >> > > > > >
> >> > > > > > single
> >> > > > > > > > > > > > contributor
> >> > > > > > > > > > > > > > > > should not block ticket progress forever.
> >> > > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > Please let me know if you think the idea
> >> makes
> >> > > >
> >> > > > sense.
> >> > > > > If
> >> > > > > > > we
> >> > > > > > > > > > agree
> >> > > > > > > > > > > on
> >> > > > > > > > > > > > > > it,
> >> > > > > > > > > > > > > > > > let's start defining action items for the
> >> > checklist.
> >> > > > >
> >> > > > > My
> >> > > > > > 2
> >> > > > > > > > > cents:
> >> > > > > > > > > > > > > > > > 1) All unit tests pass on TC without new
> >> > failures
> >> > > > > > > > > > > > > > > > 2) If ticket targets specific component,
> it
> >> > should
> >> > > >
> >> > > > be
> >> > > > > > > > reviewed
> >> > > > > > > > > > by
> >> > > > > > > > > > > > > > > > component's maintainer*
> >> > > > > > > > > > > > > > > > 3) If ticket changes public API or
> existing
> >> > > >
> >> > > > behavior,
> >> > > > > at
> >> > > > > > > > least
> >> > > > > > > > > > two
> >> > > > > > > > > > > > > > > > commiters should approve the changes **
> >> > > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > Thoughts?
> >> > > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > Vladimir.
> >> > > > > > > > > > > > > > > >
> >> > > > > > > > > > > > > > > > * TBD: Review component list and define
> >> > maintainers;
> >> > > > > > >
> >> > > > > > > define
> >> > > > > > > > > what
> >> > > > > > > > > > > to
> >> > > > > > > > > > > > > > do if
> >> > > > > > > > > > > > > > > > maintainer is unavailable
> >> > > > > > > > > > > > > > > > ** TBD: Define what is "public API"
> >> > > > > > > > > > > > >
> >> > > > > > > > > > > > >
> >> > > > > > > > > >
> >> > > > > > > > > >
> >> > > > > > > > > >
> >> > > > > > > > > > --
> >> > > > > > > > > > Best regards,
> >> > > > > > > > > >   Andrey Kuznetsov.
> >> > > > > > > > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > > --
> >> > > > Best regards,
> >> > > >   Andrey Kuznetsov.
> >> > > >
> >>
> >
> >
>

Reply via email to