Nikolay, I am up for the call. I will try to explain my reasoning in greater detail and will be glad to hear the concerns. Will this Friday, Nov 6th, work?
вт, 3 нояб. 2020 г. в 10:09, Nikolay Izhikov <nizhi...@apache.org>: > Igniters, should we have a call for this topic? > > > 2 нояб. 2020 г., в 18:53, Pavel Tupitsyn <ptupit...@apache.org> > написал(а): > > > >> not intend to rewrite everything from scratch > > > >> Every single test from Ignite 2.x should be moved to Ignite 3 > >> regardless of how we choose to proceed. > > > > Alexey, thank you for the explanation, this addresses all of my concerns. > > > > > > > > > > > > On Mon, Nov 2, 2020 at 6:43 PM Andrey Mashenkov < > andrey.mashen...@gmail.com> > > wrote: > > > >> Hi, Igniters. > >> > >> * AFAIU, we need a new repo if we want to apply different restrictions > to > >> pull requests, > >> otherwise I see no difference for myself. > >> E.g. make static analysis (do we have?), compile, styles, and javadoc > >> checks mandatory. > >> > >> I think that relaxed requirements here will lead to bad product quality. > >> > >> * Agree with Pavel, we should 'keep' integrations tests somehow. > >> During active development tests will be broken most of time, so, > >> I'd port them e.g. suite-by-suite once we will have a stable and > featured > >> environment to run them and of course make test's code clear and avoid > >> bad/non-relevant ones. > >> > >> * I like bottom-up approach. > >> With it we could make a better framework. I mean clear component > lifecycle, > >> component wiring mechanics, general methods to approach core components > >> such as exchange/communication > >> to avoid code mess like we have in ExchangeFuture with all these custom > >> callbacks for each component, interfaces like > >> PartitionsExchangeAware, IgniteChangeGlobalStateSupport and > >> a pack of > start/stop/onKernalStart/onPluginStart/onActivate/onDisconnected > >> and so on in various unexpected places. > >> Hope, we will be able to port most of the good code to the new framework > >> version. > >> > >> > >> > >> On Mon, Nov 2, 2020 at 6:18 PM Alexey Goncharuk < > >> alexey.goncha...@gmail.com> > >> wrote: > >> > >>> Nikolay, Pavel, > >>> > >>> Thanks for the feedback! First of all, I wanted to stress that I do not > >>> intend to rewrite everything from scratch (I never used this phrase). > >> There > >>> are significant parts of code that would be moved with minimal > >>> modifications. Second, I never said that we will get rid of the old > tests > >>> codebase. Every single test from Ignite 2.x should be moved to Ignite 3 > >>> regardless of how we choose to proceed. > >>> > >>> My point is that for some parts of the code a clean bottom-up > >>> implementation will be cheaper in many ways. Let me give you a few > >> concrete > >>> examples: > >>> > >>> - I think no one can object that we need a cleanly separated > >> persistence > >>> layer for Ignite. There is a very raw draft IEP for this already. On > >> the > >>> other hand, I think we also can agree that we need a split-brain > >>> resistant > >>> replication protocol for caches. There is also an IEP for this. > >> Neither > >>> of > >>> the changes is a good fit for 2.x because they are likely to > introduce > >>> breaking changes in the persistence layer, configuration and > behavior. > >>> Additionally, these components are now tightly coupled, so there is > no > >>> way > >>> these two changes can be implemented in parallel and then merged > >>> together > >>> easily. So what we will end up with is having to implement these > >> changes > >>> sequentially, fixing all existing tests twice, and essentially > >> throwing > >>> away half of the work done because the other part of the change is > >>> re-implemented > >>> - Similar example goes with getting rid of IgniteInternalFuture and > >>> replacing it with CompletableFuture, and any other change that > touches > >>> the > >>> asynchronous part of the code. > >>> > >>> Third, I do not see how this choice affects the UX of Ignite. The end > >> user > >>> experience must be fixed in the IEP regardless of the development > process > >>> and the fact that we have gaps in this area in Ignite 2.x just confirms > >>> that. > >>> > >>> Pavel, agree that a repo/branch is a technicality, I guess if > >> reformulate, > >>> my point is that we might agree to have a single development master > >> branch > >>> with 'disassembled' end-to-end functionality for some period of time to > >>> speed up development, and re-assemble the core features after having > >>> submodules tested independently. > >>> > >>> Nikolay, > >>>> We have many features that have to evolve. > >>>> Snapshots, rebalance, tooling, tracing, zookeeper support, etc. > >>> This is not very specific. In the end, resources are limited and we > will > >>> not be able to drive both tracks simultaneously, especially after a > >> couple > >>> of features having been implemented for Ignite 3.0. If there are indeed > >>> some major changes that we want to do in Ignite 2.x instead of putting > >>> effort into 3.0 - let's discuss them. I am just not aware of any, > that's > >>> why I am eager to move forward with Ignite 3.0. > >>> > >>>> We have bugs and issues that can be fixed in 2.x without breaking > >> backward > >>> compatibility. > >>>> We have many users who are happy with the 2.x with all it’s issues. > >>> These changes will be covered by end-to-end tests and migrated to > Ignite > >>> 3.0, so I see no issues here. > >>> > >>> Finally, Anton & Nikolay > >>> I do not have an estimate for this simply because the activity is > >>> community-driven and it depends on the number of people willing to > >>> contribute. With the current pace, I would hope to have an RC of Ignite > >> 3.0 > >>> to be ready by the end of 2021. My gut feeling is that by moving with > >>> incremental changes, we will not be able to implement even half of the > >>> wishlist by that time. > >>> I doubt that releasing several major releases with breaking changes > will > >>> make Ignite users happy either because each upgrade will cost Ignite > >> users > >>> money, so the fewer major versions we release, the better. Thus my wish > >> to > >>> include all breaking changes in one release. > >>> > >>> I'll be now quiet for a while, let's see what other community members > >>> think. > >>> > >>> пн, 2 нояб. 2020 г. в 15:52, Pavel Tupitsyn <ptupit...@apache.org>: > >>> > >>>> 1. Rewriting from scratch is never a good idea. > >>>> We don't want to follow the path of Netscape and lose all our users > >>>> by the time we have a working 3.0 [1] > >>>> > >>>> 2. Not sure about new repo - seems like some pain and no gain, what's > >> the > >>>> problem with a branch? > >>>> > >>>> 3. We should keep existing integration tests when possible. > >>>> We have accumulated a lot of edge case knowledge over the years, > >>>> it is not a good idea to send all of that down the drain. > >>>> Yes, integration tests are slow, but they are the most valuable. > >>>> I think we can move more stuff into nightly runs and have a fast and > >>> modern > >>>> basic suite. > >>>> > >>>> > >>>> Alexey, you are much more familiar with the Ignite core codebase than > >>> most > >>>> of us, > >>>> can you please explain in more detail which particular feature, in > your > >>>> opinion, > >>>> mandates this "start from scratch" approach? > >>>> Is it really not possible at all to follow a less radical way? > >>>> > >>>> > >>>> [1] > >>>> > >>>> > >>> > >> > https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/ > >>>> > >>>> On Mon, Nov 2, 2020 at 2:25 PM Nikolay Izhikov <nizhi...@apache.org> > >>>> wrote: > >>>> > >>>>> Hello, Alexey. > >>>>> > >>>>> I think that «rewriting from scratch» approach has a high risk to > >> make > >>>> new > >>>>> features unusable. > >>>>> At the time Ignite2 was started no-one wants to do bad UX or bad > >>>> features. > >>>>> Nevertheless, it happen. > >>>>> > >>>>> I think we can avoid it with the Ignite3 and successors if we will > >> move > >>>>> step by step without keeping backward compatibility > >>>>> With the step by step approach, we can focus on each component > >>>> separately. > >>>>> > >>>>>> What new features are we planning to implement for Ignite 2.x? > >>>>> > >>>>> We have many features that have to evolve. > >>>>> Snapshots, rebalance, tooling, tracing, zookeeper support, etc. > >>>>> We have bugs and issues that can be fixed in 2.x without breaking > >>>> backward > >>>>> compatibility. > >>>>> We have many users who are happy with the 2.x with all it’s issues. > >>>>> > >>>>>> 2 нояб. 2020 г., в 14:09, Anton Vinogradov <a...@apache.org> > >>> написал(а): > >>>>>> > >>>>>> Alexey, > >>>>>> > >>>>>> Do we have any estimates of how fast we'll be able to gain > >>>>> production-ready > >>>>>> AI 3.0 in case of a "new repo" choice? > >>>>>> > >>>>>> On Mon, Nov 2, 2020 at 2:01 PM Alexey Goncharuk < > >>>>> alexey.goncha...@gmail.com> > >>>>>> wrote: > >>>>>> > >>>>>>> Nikolay, > >>>>>>> > >>>>>>> What new features are we planning to implement for Ignite 2.x? I > >>> think > >>>>> once > >>>>>>> we commence working on Ignite 3.0, we should gradually cease the > >>>>> activity > >>>>>>> on Ignite 2.x to mere bugfixes because such parallel development > >>> will > >>>> be > >>>>>>> overwhelming regardless of how we choose to proceed. > >>>>>>> > >>>>>>> пн, 2 нояб. 2020 г. в 13:38, Nikolay Izhikov <nizhi...@apache.org > >>> : > >>>>>>> > >>>>>>>> To be clear: > >>>>>>>> > >>>>>>>>> I would suggest creating a new repository for Ignite 3.0 > >>> (perhaps, a > >>>>>>> new > >>>>>>>> clean branch, but a new repo looks nicer to me) and a new Ignite > >>> 3.0 > >>>>>>>> TeamCity project. > >>>>>>>> > >>>>>>>> +1 for new Team City project. > >>>>>>>> +1 for new branch for Ignite3. > >>>>>>>> -1 for new repo. > >>>>>>>> > >>>>>>>> > >>>>>>>>> 2 нояб. 2020 г., в 13:35, Nikolay Izhikov < > >> nizhikov....@gmail.com > >>>> > >>>>>>>> написал(а): > >>>>>>>>> > >>>>>>>>> Hello, Alexey. > >>>>>>>>> > >>>>>>>>> I think it will hurt our project more than help. > >>>>>>>>> Developing new features for 2 separate branches with the > >> different > >>>>> APIs > >>>>>>>> and internal structure is overwhelming > >>>>>>>>> > >>>>>>>>> Maybe we should relax a bit requirements for Ignite3? > >>>>>>>>> Maybe we should move step by step and make Ignite3 with new > >>>>>>>> configuration than Ignite4 with new transactions, etc? > >>>>>>>>> > >>>>>>>>>> 2 нояб. 2020 г., в 13:14, Alexey Goncharuk < > >>>>>>> alexey.goncha...@gmail.com> > >>>>>>>> написал(а): > >>>>>>>>>> > >>>>>>>>>> Igniters, > >>>>>>>>>> > >>>>>>>>>> I wanted to pitch a rather radical idea regarding the Ignite > >> 3.0 > >>>>>>>>>> development which has occurred to me some time ago. > >>>>>>>>>> > >>>>>>>>>> We already have several IEPs targeted to Ignite 3.0 which imply > >>>> major > >>>>>>>>>> changes to the codebase (the change in replication protocol and > >>>> thus > >>>>>>>>>> transactions, change in binary format, updated metastorage, > >> etc). > >>>> We > >>>>>>>> also > >>>>>>>>>> planned significant changes in public APIs: configuration > >> format > >>>>>>> change, > >>>>>>>>>> improvements in cache APIs, SQL APIs, transaction mode rework. > >>> The > >>>>>>>> wishlist > >>>>>>>>>> of changes for Ignite 3.0 is huge. > >>>>>>>>>> > >>>>>>>>>> So, I was wondering whether it makes sense to try to change the > >>> old > >>>>>>>>>> codebase, or start with a new baseline and move old pieces of > >>> code > >>>>>>> that > >>>>>>>> do > >>>>>>>>>> not require significant rework. Personally, I would go with the > >>>>> second > >>>>>>>>>> option for the following reasons: > >>>>>>>>>> > >>>>>>>>>> - We have a chance to shift the development paradigm in the > >>> project > >>>>>>> and > >>>>>>>>>> introduce the practice of true unit-tests. In the new baseline > >> at > >>>> the > >>>>>>>>>> beginning there will be no ability to run an end-to-end > >> scenario, > >>>>>>> thus > >>>>>>>> we > >>>>>>>>>> will be forced to write unit-tests. So far, such practice was > >>> hard > >>>> to > >>>>>>>>>> implement because of tight coupling between Ignite components > >> and > >>>>>>>> inability > >>>>>>>>>> to instantiate components without an instance of KernalContext. > >>> For > >>>>>>>>>> example, we should be able to thoroughly test internal > >>> primitives, > >>>>>>>> such as > >>>>>>>>>> replication protocol (without actual communication), > >> distributed > >>>>>>>>>> metastorage contracts, persistence layer, etc. > >>>>>>>>>> - We will significantly reduce the development cycle in the > >>>> beginning > >>>>>>>>>> (right now the RunAll takes two hours of astronomical time with > >>>> empty > >>>>>>>> TC; > >>>>>>>>>> in the new approach developer will be able to run ALL tests > >>> locally > >>>>>>> in > >>>>>>>> a > >>>>>>>>>> matter of minutes) > >>>>>>>>>> - We can get rid of TC bot and enforce green TC by integrating > >> TC > >>>>>>> build > >>>>>>>>>> results with GitHub PRs (the same way Travis is currently > >>>> integrated > >>>>>>>> to PR > >>>>>>>>>> check). We should restrict PR merge without a TC check > >>>>>>>>>> - We will still have to re-write all tests, but only once. If > >> we > >>>> try > >>>>>>> to > >>>>>>>>>> modify the old codebase, we would need to modify all the tests > >>> for > >>>>>>>> every > >>>>>>>>>> major change (public API change, configuration change) > >>>>>>>>>> - We will have fewer conflicts when working together. For > >>> example, > >>>> I > >>>>>>>>>> cannot imagine how one would merge two changes of getting rid > >> of > >>>>>>>>>> IgniteFuture and changes in replication protocol, for example > >>>>>>>>>> > >>>>>>>>>> Technically, I would suggest creating a new repository for > >> Ignite > >>>> 3.0 > >>>>>>>>>> (perhaps, a new clean branch, but a new repo looks nicer to me) > >>>> and a > >>>>>>>> new > >>>>>>>>>> Ignite 3.0 TeamCity project. > >>>>>>>>>> > >>>>>>>>>> While it may seem quite radical, I do believe that this > >> approach > >>>> will > >>>>>>>> give > >>>>>>>>>> us more benefits than trying to make such major changes in the > >>>>>>> existing > >>>>>>>>>> codebase. If needed, let's schedule a discord chat like before > >> to > >>>>>>>> discuss > >>>>>>>>>> this. > >>>>>>>>>> > >>>>>>>>>> WDYT? > >>>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>> > >>>>> > >>>>> > >>>> > >>> > >> > >> > >> -- > >> Best regards, > >> Andrey V. Mashenkov > >> > >