Folks, We already have multiple IEPs for Ignite 3.0, and as far as I know, there are contributors that would like to work on them (or probably already started). That said, we should make a decision as soon as possible.
At this point, it doesn't seem that there are any strong objections to the technical side of things. So I would suggest the following: 1. Proceed with Alexey's approach to the development process, as it seems to be the best (in my opinion - the only) way to address all the technical concerns and issues expressed in the thread. We'll start by creating a new repo and a new TC project. 2. Start a separate discussion around transparency. If there are any changes we need to make to our contributor guidelines, I am happy to talk them through, but I don't think it's reasonable to delay feature development because of this. In the short term, I will make sure that everything that happens within the new repo is as open to the community as possible. Nikolay, Maxim, are you OK with this route? -Val On Tue, Nov 10, 2020 at 4:55 PM Valentin Kulichenko < valentin.kuliche...@gmail.com> wrote: > Maxim, > > 2.x and 3.x will have to coexist for some time - I don't see how we can > avoid this considering the set of proposed changes. That said, we > effectively will need to have two "masters" - one for each major version. > Master for 3.x can technically be a branch in the existing repo, but having > a separate repo seems cleaner, simply because it will not be a "branch" in > the traditional sense. > > Note that the new repo will still be under the Apache org, with the same > set of committers, managed by the community, etc. All the development > happening for 3.0 must follow the rules that we currently have (if > anything, it's an opportunity to improve those rules). > > As I said during the call on Friday, I strongly believe that if there is a > transparency issue, it will exist regardless of the approach we choose for > 3.0. If community members develop without IEPs or public discussions, this > will happen for both 2.x and 3.x unless we address this separately. I don't > see how this is related to Alexey's suggestion, which targets *technical* > issues with the product more than anything else. This a way to achieve > better modularity, introduce better coverage with unit tests, reduce > conflicts during development, etc. > > Coming back to transparency, let's identify the issues and fix them. It > probably makes sense to have a separate discussion on this topic. > > -Val > > On Tue, Nov 10, 2020 at 1:05 PM Maxim Muzafarov <mmu...@apache.org> wrote: > >> Sergey, >> >> >> Your summary makes sense to me. >> >> However, how we come up from *Development transparency* to *create a >> separate public repository dedicated for 3.0*? For me *development >> transparency* is about making changes in the master branch. These >> changes will definitely be seen by all the Ignite developers. >> >> A dedicated public repository is technically public and visible for >> everyone, but it allows development without IEPs, without public >> discussion (since all the code changes are not related to the master >> branch) it also allows a large number of assumptions and deviations >> (like code-style violations). It also not about *development >> transparency* since developers which are working on 3.0 is only a >> subset of all Ignite developers which may continue working on 2.x. For >> me, this would be a huge step backwards. >> >> Ignite veterans should remember how long the branch stabilization took >> for the 2.x version with the PDS. >> >> >> I think each breaking change should be passed through the master branch. >> >> On Tue, 10 Nov 2020 at 22:18, Alexei Scherbakov >> <alexey.scherbak...@gmail.com> wrote: >> > >> > Makes sense to me. >> > >> > вт, 10 нояб. 2020 г. в 18:47, Sergey Chugunov < >> sergey.chugu...@gmail.com>: >> > >> > > Igniters, >> > > >> > > I thought over Friday meeting ideas and concerns and summarized them >> in >> > > these three points: >> > > >> > > >> > > 1. *Components design unification approach.* New proposed >> components >> > > will be developed by different contributors, but they need to be >> unified >> > > and should integrate with each other easily. To ensure that I >> suggest >> > > calling an architecture group that will create design guidelines >> for all >> > > components and high-level overview of overall architecture. How >> code is >> > > split into components, what are component boundaries, how component >> > > lifecycle works and what are its interfaces - all these and other >> > > questions >> > > should be covered. >> > > >> > > 2. *Scope management.* Apache 3.0 should be implemented within a >> > > reasonable time, so we need some procedure to decide whether a >> > > particular >> > > feature should be dropped from the scope of 3.0 and postponed to >> 3.1 >> > > release. To do so I suggest to range all features by two >> parameters: >> > > criticality for 3.0 and amount of breaking changes. 3.0 scope >> should >> > > include features of high criticality AND features with a big >> amount of >> > > breaking changes. All other features can be made optional. >> > > >> > > 3. *Development transparency.* Development of all components >> should be >> > > made as transparent for everyone as possible. Any contributor >> should be >> > > able to look over any component at any stage of development. To >> achieve >> > > this I suggest to create a separate public repository dedicated >> for 3.0 >> > > development. It will make the code available for everyone but when >> > > development of 3.0 is done we won't loose any stars of our current >> > > repository as we merge dev repo into main one and drop dev. >> > > >> > > Do these ideas make sense to you? Are there any concerns not covered >> by >> > > these suggestions? >> > > >> > > On Fri, Nov 6, 2020 at 7:36 PM Kseniya Romanova < >> romanova.ks....@gmail.com >> > > > >> > > wrote: >> > > >> > > > Here are the slides from Alexey Goncharuk. Let's think this over and >> > > > continue on Monday: >> > > > >> > > > >> > > >> https://go.gridgain.com/rs/491-TWR-806/images/Ignite_3_Plans_and_development_process.pdf >> > > > >> > > > чт, 5 нояб. 2020 г. в 11:13, Anton Vinogradov <a...@apache.org>: >> > > > >> > > > > Folks, >> > > > > >> > > > > Should we perform cleanup work before (r)evolutional changes? >> > > > > My huge proposal is to get rid of things which we don't need >> anyway >> > > > > - local caches, >> > > > > - strange tx modes, >> > > > > - code overcomplexity because of RollingUpgrade feature never >> attended >> > > at >> > > > > AI, >> > > > > - etc, >> > > > > before choosing the way. >> > > > > >> > > > > On Tue, Nov 3, 2020 at 3:31 PM Valentin Kulichenko < >> > > > > valentin.kuliche...@gmail.com> wrote: >> > > > > >> > > > > > Ksenia, thanks for scheduling this on such short notice! >> > > > > > >> > > > > > As for the original topic, I do support Alexey's idea. We're not >> > > going >> > > > to >> > > > > > rewrite anything from scratch, as most of the components are >> going to >> > > > be >> > > > > > moved as-is or with minimal modifications. However, the changes >> that >> > > > are >> > > > > > proposed imply serious rework of the core parts of the code, >> which >> > > are >> > > > > not >> > > > > > properly decoupled from each other and from other parts. This >> makes >> > > the >> > > > > > incremental approach borderline impossible. Developing in a new >> repo, >> > > > > > however, addresses this concern. As a bonus, we can also >> refactor the >> > > > > code, >> > > > > > introduce better decoupling, get rid of kernel context, and >> develop >> > > > unit >> > > > > > tests (finally!). >> > > > > > >> > > > > > Basically, this proposal only affects the *process*, not the >> set of >> > > > > changes >> > > > > > we had discussed before. Ignite 3.0 is our unique chance to make >> > > things >> > > > > > right. >> > > > > > >> > > > > > -Val >> > > > > > >> > > > > > On Tue, Nov 3, 2020 at 3:06 AM Kseniya Romanova < >> > > > > romanova.ks....@gmail.com >> > > > > > > >> > > > > > wrote: >> > > > > > >> > > > > > > Pavel, all the interesting points will be anyway published >> here in >> > > > > > English >> > > > > > > (as the principal "if it's not on devlist it doesn't >> happened" is >> > > > still >> > > > > > > relevant). This is just a quick call for a group of >> developers. >> > > Later >> > > > > we >> > > > > > > can do a separate presentation of idea and discussion in >> English as >> > > > we >> > > > > > did >> > > > > > > for the Ignite 3.0 draft of changes. >> > > > > > > >> > > > > > > вт, 3 нояб. 2020 г. в 13:52, Pavel Tupitsyn < >> ptupit...@apache.org >> > > >: >> > > > > > > >> > > > > > > > Kseniya, >> > > > > > > > >> > > > > > > > Thanks for scheduling this call. >> > > > > > > > Do you think we can switch to English if non-Russian >> speaking >> > > > > community >> > > > > > > > members decide to join? >> > > > > > > > >> > > > > > > > On Tue, Nov 3, 2020 at 1:32 PM Kseniya Romanova < >> > > > > > > romanova.ks....@gmail.com >> > > > > > > > > >> > > > > > > > wrote: >> > > > > > > > >> > > > > > > > > Let's do this community discussion open. Here's the link >> on >> > > zoom >> > > > > call >> > > > > > > in >> > > > > > > > > Russian for Friday 6 PM: >> > > > > > > > > >> > > > > >> https://www.meetup.com/Moscow-Apache-Ignite-Meetup/events/274360378/ >> > > > > > > > > >> > > > > > > > > вт, 3 нояб. 2020 г. в 12:49, Nikolay Izhikov < >> > > > nizhi...@apache.org >> > > > > >: >> > > > > > > > > >> > > > > > > > > > Time works for me. >> > > > > > > > > > >> > > > > > > > > > > 3 нояб. 2020 г., в 12:40, Alexey Goncharuk < >> > > > > > > > alexey.goncha...@gmail.com >> > > > > > > > > > >> > > > > > > > > > написал(а): >> > > > > > > > > > > >> > > > > > > > > > > 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 >> > > > > > > > > > >>>> >> > > > > > > > > > >> >> > > > > > > > > > >> >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> > >> > -- >> > >> > Best regards, >> > Alexei Scherbakov >> >