Val,
Why *creating a new repo* is the main point we faced with? Would it be better to discuss the components design approach and scope management first suggested by Sergey Chugunov? I doubt that new repo will solve move us forward. Currently, I'm -1 to create a new repo with the inputs above. In addition to Nikolay's answer I see the following drawbacks of creating new repo: - we have very few positive examples of finalizing really huge improvements to *production-ready* states the others remains incomplete (MVCC, Calcite, Zookeeper, Tracing, Thread per Partition, etc) - AFAIK, the Native Persistence took a very long period of stabilization even after it has been developed (we must take it into account for developing new features like IEP-61) - feature development for a long period of time (like 3.0) without any releases will lead to all these changes became obsolete at the moment of release (AFAIK the 2.8 which released a year ago still has no big deployments) - human resources -- some of the Igniters may lose their interest for 3.0 during development, some of them may switch to different projects, etc. - do we all estimating the scope of 3.0 correct? The 2.8 release took 1.5 years. Have I missed something? I suggest the following plan: - initiate 3.0 development in the master branch (after 2.10 release change version to 3.0-SNAPSHOT instead of 2.11-SNAPSHOT) - cleanup and collapse all the current APIs (see To Be Removed List For Discussion on Apache Ignite 3.0 Wishlist) - reduce the scope for 3.0 even more. I suggest focusing on two things: Calcite + Schema-first approach - create feature branches for proposed IEPs (for 3.0 only) - create the release road map (allocate e.g. IEP-61 to 4.0 etc.) On Fri, 13 Nov 2020 at 14:03, Ivan Daschinsky <ivanda...@gmail.com> wrote: > > >> b. Implement IEP-61 - Common Replication Infrastructure > I suppose, that this is the main cause of the current discussion. > I hardly believe that this activity can be done without at least creating a > completely new branch. > > пт, 13 нояб. 2020 г. в 11:12, Nikolay Izhikov <nizhi...@apache.org>: > > > My suggestion: > > > > 1. Reduce Ignite3 scope to the following: > > a. Delete all deprecated API and support of obsolete internal > > protocols. > > b. Implement IEP-61 - Common Replication Infrastructure > > c. Implement new Ignite management tool ignitectl as suggested > > during Ignite3 discussion. > > > > 2. Implement and release following improvements like transactions, Calcite > > based SQL, etc in the ongoing releases - Ignite 4, 5, 6 > > > > My concern against separate Ignite 3 repo is the following: > > > > 1. We spread community to the two very separated part - Ignite3 developers > > and Ignite2 maintainers. believe it’s bad for our community. > > That can lead to the situation when we don’t fix critical or > > blocker issueds «because they will not exists in Ignite3» > > That will lead to the solutions never reviewed or reviewed poorly. > > > > 2. It seems for me that current scope of Ignite3 is too big to be > > implemented in any reasonable time. > > > > > > > 13 нояб. 2020 г., в 10:57, Nikolay Izhikov <nizhikov....@gmail.com> > > написал(а): > > > > > > Hello, Valentin. > > > > > >> Nikolay, Maxim, are you OK with this route? > > > > > > -1 to have another repo for Ignite3 development. > > > > > >> 13 нояб. 2020 г., в 03:04, Valentin Kulichenko < > > valentin.kuliche...@gmail.com> написал(а): > > >> > > >> 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 > > > > > > > > > > > -- > Sincerely yours, Ivan Daschinskiy