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
>>
>

Reply via email to