Igniters, I created review checklist on WIKI [1] and also fixed related pages (e.g. "How To Contribute"). Please let me know if you have any comments before I go with public announce.
Vladimir. [1] https://cwiki.apache.org/confluence/display/IGNITE/Review+Checklist On Thu, May 10, 2018 at 5:10 PM, Vladimir Ozerov <voze...@gridgain.com> wrote: > Ilya, > > We define that exception messages *SHOULD* have clear explanation on what > is wrong. *SHOULD* mean that the rule should be followed unless there is a > reason not to follow. In your case you refer to some unexpected behavior. > I.e. an exceptional situation developer is not aware of. In this case for > sure we cannot force contributor to explain what is wrong, because, well, > we don't know. This is why we relaxed the rule from *MUST* to *SHOULD*. > > On Thu, May 10, 2018 at 3:50 PM, Ilya Kasnacheev < > ilya.kasnach...@gmail.com> wrote: > >> I don't think I quite understand how exception explanations should work. >> >> Imagine we have the following exception: >> >> // At least RuntimeException can be thrown by the code above when >> GridCacheContext is cleaned and there is >> // an attempt to use cleaned resources. >> U.error(log, "Unexpected exception during cache update", e); >> >> I mean, we genuinely don't know what happened here. >> >> Under new rules, what kind of "workaround" would that exception suggest? >> "Try turning it off and then back on"? >> What explanation how to resolve this exception can we offer? "Please write >> to d...@apache.ignite.org or to Apache JIRA, and then wait for a release >> with fix?" >> >> I'm really confused how we can implement 1.6 and 1.7 when dealing with >> messy real-world code. >> >> Regards, >> >> >> -- >> Ilya Kasnacheev >> >> 2018-05-10 11:39 GMT+03:00 Vladimir Ozerov <voze...@gridgain.com>: >> >> > Andrey, Anton, Alex >> > >> > Agree, *SHOULD* is more appropriate here. >> > >> > Please see latest version below. Does anyone want to add or change >> > something? Let's wait for several days for more feedback and then >> publish >> > and announce this list. Note that it would not be carved in stone and we >> > will be able to change it at any time if needed. >> > >> > 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 **SHOULD** 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. >> > >> > >> > On Tue, May 8, 2018 at 1:05 PM, Andrey Kuznetsov <stku...@gmail.com> >> > wrote: >> > >> > > Anton, >> > > >> > > I agree, *MUST* for exception reasons and *SHOULD* for ways of >> resolution >> > > sound clearer. >> > > >> > > 2018-05-08 12:56 GMT+03:00 Anton Vinogradov <a...@apache.org>: >> > > >> > > > Andrey, >> > > > >> > > > How about >> > > > 1.6) All exceptions thrown to a user *MUST* have explanation of >> > > workaround >> > > > and contain original error. >> > > > All exceptions thrown to a user *SHOULD* have explanation how to >> > resolve >> > > if >> > > > possible. >> > > > ? >> > > > >> > > > вт, 8 мая 2018 г. в 12:26, Andrey Kuznetsov <stku...@gmail.com>: >> > > > >> > > > > Vladimir, checklist looks pleasant enough for me. >> > > > > >> > > > > I'd like to suggest one minor change. In 1.6 *MUST* seems to be >> too >> > > > strict, >> > > > > *SHOULD* would be enough. It can be frustrating for API user if I >> > > explain >> > > > > how to fix NPEs in a trivial way, for example. >> > > > > >> > > > > 2018-05-08 11:34 GMT+03:00 Anton Vinogradov <a...@apache.org>: >> > > > > >> > > > > > Alex, >> > > > > > >> > > > > > It is not sounds like that, obviously. >> > > > > > >> > > > > > Tests should cover all negative and positive cases. >> > > > > > You should add enough tests to cover all cases. >> > > > > > >> > > > > > Sometimes one test can cover more than one case, so two tests >> *CAN* >> > > > > > partially check same things. >> > > > > > In case some cases already covered you should not create >> > duplicates. >> > > > > > >> > > > > > вт, 8 мая 2018 г. в 10:19, Александр Меньшиков < >> > sharple...@gmail.com >> > > >: >> > > > > > >> > > > > > > Vladimir, the 3.1 is a bit unclear for me. Which code >> coverage is >> > > > > > > acceptable? Now it sounds like two tests are enough (one for >> > > positive >> > > > > and >> > > > > > > one for negative cases). >> > > > > > > >> > > > > > > 2018-05-07 23:09 GMT+03:00 Dmitriy Setrakyan < >> > > dsetrak...@apache.org >> > > > >: >> > > > > > > >> > > > > > > > Is this list on the Wiki? >> > > > > > > > >> > > > > > > > On Mon, May 7, 2018 at 7:26 AM, Vladimir Ozerov < >> > > > > voze...@gridgain.com> >> > > > > > > > wrote: >> > > > > > > > >> > > > > > > > > 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. >> > > > > > > > > >> > > > >> > > > > > > > > >> >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > Best regards, >> > > > > Andrey Kuznetsov. >> > > > > >> > > > >> > > >> > > >> > > >> > > -- >> > > Best regards, >> > > Andrey Kuznetsov. >> > > >> > >> > >