Hi Aljoscha,

Thanks for the quick response. Yes, you are right. I meant "Voted and
accepted FLIPs should be immutable". Sorry for the confusion.

Thanks,

Jiangjie (Becket) Qin

On Tue, Jul 9, 2019 at 10:09 PM Aljoscha Krettek <aljos...@apache.org>
wrote:

> +1 to what Becket said.
>
> I have one comment on 5.: I think you meant that they should be immutable
> once they have been voted on and accepted. During the initial proposal and
> discussion they will change, of course. At least that’s what I think
>
> Aljoscha
>
> > On 9. Jul 2019, at 11:29, Becket Qin <becket....@gmail.com> wrote:
> >
> > This discussion thread has been quiet for some time. It looks most people
> > think sticking to a strict voting process is a good idea.
> >
> > In addition to that, there are a few related details that are also
> > discussed, I listed them below and personally I am +1 on all of them.
> >
> > 1. Stick to the current definition of major changes.
> > 2. Committers have binding votes on FLIPs.
> > 3. In general FLIPs should be completed in a reasonable amount of time,
> > rather than lasting for many releases.
> > 4. Always discuss FLIPs based on FLIP wiki page. Google docs can be used
> as
> > handy tools to explain ideas, but FLIP ideas should always be documented
> as
> > a FLIP wiki, regardless whether they are accepted or not.
> > 5. FLIPs should be immutable. Changes to FLIPs need a new vote processes.
> > 6. FLIPs should be concrete in terms of interfaces, semantic and
> behaviors,
> > rather than conceptual.
> >
> > It'll be good to hear what do people think. If there is no further
> > objection, I'd suggest to conclude this discussion in 72 hours and move
> to
> > a lazy majority voting. (For decisions like this, maybe only votes from
> > PMCs should be considered as binding?)
> >
> > Thanks,
> >
> > Jiangjie (Becket) Qin
> >
> > On Fri, Jun 28, 2019 at 10:33 AM Congxian Qiu <qcx978132...@gmail.com>
> > wrote:
> >
> >> Thanks a lot for bringing this up, Aljoscha.
> >>
> >> +1 for sticking to the "lazy majority" vote process.
> >>
> >> In my opinion, after the "lazy majority" vote process, we will have a
> >> community consensus about the accepted FLIP.
> >>
> >> Best,
> >> Congxian
> >>
> >>
> >> Becket Qin <becket....@gmail.com> 于2019年6月28日周五 上午10:06写道:
> >>
> >>> Thanks a lot for bringing this up, Aljoscha.
> >>>
> >>> Big +1 to the following:
> >>>
> >>> 1. Stick to a strict FLIP voting process.
> >>> In practice, I rarely see a FLIP with a voting thread. In fact, the
> >> search
> >>> in mail archive
> >>> <
> >>>
> >>
> http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/template/NamlServlet.jtp?macro=search_page&node=1&query=subject%3AVOTE%2CFLIP&days=0
> >>>>
> >>> gives
> >>> only 3 FLIPs with voting thread, and unfortunately none of them has met
> >> the
> >>> lazy majority requirements, which needs 3 binding votes. However, we
> have
> >>> 11 adopted-but-unreleased FLIPs and 16 released FLIPs.
> >>> Even though we claimed *"These proposals are more serious than code
> >> changes
> >>> and more serious even than release votes.", *we did not really treat
> them
> >>> seriously. The missing voting process effectively put the efforts of
> FLIP
> >>> in vain. This leads to a few consequences:
> >>> a) The conclusion of the FLIP is never really finalized. People may
> >> change
> >>> the FLIP at wish during the implementation.
> >>> b) Some "adopted" FLIPs only have conceptual ideas instead of necessary
> >>> concrete interfaces, which leaves a lot of problems in the
> implementation
> >>> phase.
> >>> c) New contributors are completely confused on how to contribute. The
> >>> voting threads seems died, and magically someone else's code got
> checked
> >> in
> >>> without a passed FLIP. These "good citizens" may feel excluded and
> simply
> >>> leave the chaos.
> >>> d) API changes / user sensible behavior changes may be checked in
> without
> >>> being carefully inspected. To fix them, hacky tricks has to be made in
> >>> order to keep backwards compatibility.
> >>>
> >>> So a huge +1 to stick to the FLIP voting process.
> >>>
> >>> 2. Stick to the definition of major changes. Generally speaking any
> user
> >>> sensible changes should go through a FLIP.
> >>>    - Some changes may be small from the size of patch perspective, but
> >> the
> >>> impact could be huge. Take metric as an example, imagine a cloud
> service
> >>> provider who relies on a metric to do alerting or bill their customer.
> >> Any
> >>> change to such metrics will have huge impact on them.
> >>>    - Sometimes there might be no "interface" change per se, but the
> >>> behavior of a method is slightly changed. Even that can be very
> annoying
> >> to
> >>> some users. So I think any user sensible changes should go through a
> >> FLIP.
> >>>
> >>> 3. Generally speaking, make each FLIP completable in a reasonable
> amount
> >> of
> >>> time. Some large changes may need multiple FLIPs.
> >>>   - I agree with David that a long lasting FLIP can be problematic as
> it
> >>> could become obsolete before the work is done. And might need to make
> >>> changes to the original proposal multiple times. It might be a little
> >>> difficult to have a standard to say what kind of FLIP is a long lasting
> >>> FLIP.
> >>>   - Sometimes long lasting FLIP may be necessary, e.g. a big new module
> >> /
> >>> functionality, etc. Those FLIPs are rare and usually more independent.
> We
> >>> may need to treat them case by case.
> >>>
> >>> 4. Take the votes from both committers and PMCs as binding.
> >>>
> >>>
> >>> In addition, I'd like to propose the following:
> >>>
> >>> 1. Always discuss the FLIP based on a FLIP wiki page instead of a
> Google
> >>> doc. It is perfectly fine to use google doc to explain stuff, but the
> >> FLIP
> >>> wiki page is the official source for the proposal. The discussion and
> >> vote
> >>> needs to be based on that.
> >>>
> >>> According to the process of FLIP
> >>> <
> >>>
> >>
> https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals#FlinkImprovementProposals-Process
> >>>> ,
> >>> one should create a FLIP wiki page "before" starting a discussion ML
> >>> thread. The discussion is supposed to be happen in ML but based on the
> >> FLIP
> >>> wiki. This process has some benefits:
> >>>    a) Since all the FLIP proposals must give necessary information such
> >> as
> >>> public interface change / behavior change / migration plan and such,
> the
> >>> authors are enforced to think about them.
> >>>    b) Even if a FLIP is finally rejected, we have all the history of
> it.
> >>> These are valuable assets of the project and would give a good
> reference
> >>> for later contributors.
> >>>
> >>> However, in practice, what people usually do is to have a Google doc
> for
> >>> discussion and only create a FLIP wiki page after that idea is accepted
> >> by
> >>> the community. There might be a few caveats in this:
> >>> a) The Google docs may be organized in various ways and something
> >> important
> >>> might be missing. This sometimes harms the review efficiency as people
> >>> might have to ask some basic questions.
> >>> b) More importantly, the rejected proposals will be silently lost
> without
> >>> any history - later contributors will not be able to know what happened
> >>> before, and there is no guarantee that the google docs will always be
> >>> accessible.
> >>> c) From process perspective, one may be confused on whether a
> discussion
> >>> thread on the FLIP wiki is still needed if people have agreed on the
> >> google
> >>> doc. (At least I always feel a little awkward after the google doc has
> >> been
> >>> agreed upon)
> >>>
> >>> 2. The public interface change proposal should be concrete in each
> FLIP,
> >>> instead of conceptual. This avoids surprises in the implementation
> phase.
> >>>
> >>> 3. Adopted FLIP should mostly be "immutable". Any change to an adopted
> >> FLIP
> >>> requires a new voting process. For minor changes, a Lazy Approval
> process
> >>> can be applied, i.e. announce the change in the voting ML thread, get
> at
> >>> least one binding +1. In case of any -1, a new lazy majority vote is
> >>> required.
> >>>
> >>> As someone deeply involved in Kafka and KIP process design and
> >> execution, I
> >>> saw how critical it is to the healthiness of such projects keeping
> going
> >>> through tons of changes. I believe that the FLIP process could play a
> >> more
> >>> effective role to organize major changes and improve the overall
> >>> contribution efficiency, code quality / stability of Flink. To achieve
> >>> that, we really have to take the FLIP process seriously, follow it by
> >>> ourselves and mentor the community to do the same.
> >>>
> >>> Thanks,
> >>>
> >>> Jiangjie (Becket) Qin
> >>>
> >>> On Thu, Jun 27, 2019 at 10:28 PM Stephan Ewen <se...@apache.org>
> wrote:
> >>>
> >>>> +1 to re-think the FLIP process a bit.
> >>>>
> >>>> I think more explicit approval is certainly a good idea.
> >>>> Who can vote on FLIPs is a question to be answered, though. I think
> >> PMCs
> >>>> only would be a bit too strict.
> >>>>
> >>>> On Thu, Jun 27, 2019 at 11:38 AM Hequn Cheng <chenghe...@gmail.com>
> >>> wrote:
> >>>>
> >>>>> Hi all,
> >>>>>
> >>>>> Thanks for raising the nice discussion @Aljoscha.
> >>>>>
> >>>>> +1 to sticking to the "lazy majority" voting process.
> >>>>> It is good to get more people involved in the design discussion and
> >> get
> >>>>> enough binding votes.
> >>>>>
> >>>>> As for the scope of the FLIP, previous replies show a lot of good
> >>>> thoughts.
> >>>>> On the other hand, I think we can also define some scope that which
> >>>> should
> >>>>> *not* be a FLIP.
> >>>>> Sometimes it is easier for us to list a blacklist.
> >>>>>
> >>>>> Best, Hequn
> >>>>>
> >>>>> On Thu, Jun 27, 2019 at 5:27 PM Biao Liu <mmyy1...@gmail.com> wrote:
> >>>>>
> >>>>>> Hi community,
> >>>>>>
> >>>>>> Thanks Aljoscha for bringing us this discussion.
> >>>>>>
> >>>>>> As Aljoscha said, "lazy majority" is always the voting rule of
> >> FLIP.
> >>> It
> >>>>>> seems that people just ignored or didn't realized this rule.
> >>>>>> My concern is that what we can do to make sure developers will obey
> >>> the
> >>>>>> rules.
> >>>>>> I think Kurt has given a good suggestion. Since the community is
> >>>> growing
> >>>>>> bigger and bigger, maybe we need some volunteers to host the
> >> progress
> >>>> of
> >>>>>> FLIP. Like start a discussion/voting in ML or update the sheet of
> >>> FLIP
> >>>>>> document [1].
> >>>>>>
> >>>>>> 1.
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Dawid Wysakowicz <dwysakow...@apache.org> 于2019年6月27日周四 下午2:56写道:
> >>>>>>
> >>>>>>> Hi all,
> >>>>>>>
> >>>>>>> I do very much agree with the statement from Aljosha's initial
> >>>> message,
> >>>>>>> which is currently also expressed in the description page of a
> >>> FLIP.
> >>>>>>>
> >>>>>>> These will stick around for quite a while after they’re
> >> implemented
> >>>> and
> >>>>>> the PMC (and the committers) has the burden of maintaining them. I
> >>>> think
> >>>>>> that therefore FLIP votes are even move important than release
> >> votes,
> >>>>>> because they steer the long time direction of Flink.
> >>>>>>>
> >>>>>>>
> >>>>>>> Therefore I think we should enforce following the lazy majority
> >>>>> approach.
> >>>>>>> I will probably just repeat what was already said, but I do think
> >>>> this
> >>>>>>> would make the decisions more visible, easier to reference in
> >> case
> >>> of
> >>>>>>> related decisions, and also this would show if the community has
> >>>>> capacity
> >>>>>>> to implement the FLIP. Nowadays, even if a FLIP is "accepted" it
> >>>> might
> >>>>> be
> >>>>>>> just stale because there are no committers that have the capacity
> >>> to
> >>>>> help
> >>>>>>> with the changes.
> >>>>>>>
> >>>>>>> Another, maybe an orthogonal issue, is that we could maybe use
> >> this
> >>>>>>> process for agreeing on a scope of a release. I think it might
> >> make
> >>>>> sense
> >>>>>>> to construct a release plan of an accepted FLIPs. This would
> >>> enforce
> >>>>>> better
> >>>>>>> scoping of FLIPs, as they would have to fit into a single
> >> release.
> >>> In
> >>>>> my
> >>>>>>> opinion FLIPs that spawn multiple releases(thus even over
> >> multiple
> >>>>> years)
> >>>>>>> are rarely relevant in the future anymore, as the project evolves
> >>> and
> >>>>> it
> >>>>>>> usually makes sense to revisit the original proposal anyway. This
> >>>> would
> >>>>>>> have the benefits that:
> >>>>>>>
> >>>>>>>   - we have a clear scope for a release rather than just a vague
> >>>> list
> >>>>> of
> >>>>>>>   features that we want to have.
> >>>>>>>   - the whole community is on the same page what a certain
> >> feature
> >>>>> means
> >>>>>>>   - the scope does not change drastically during the development
> >>>>> period
> >>>>>>>
> >>>>>>> As for what should and what should not deserve a FLIP, I actually
> >>>> quite
> >>>>>>> like the definition in the FLIPs page[1]. I think it does make
> >>> sense
> >>>> to
> >>>>>>> have a FLIP, and as a result a voting process, for any *public*
> >> or
> >>>>> major
> >>>>>>> change. I agree with Gordon. Even if the change is trivial it
> >> might
> >>>>>> affect
> >>>>>>> external systems/users and it is also a commitment from the
> >>>> community.
> >>>>>>> Therefore I think they deserve a vote.
> >>>>>>>
> >>>>>>> Lastly, I think Jark raised a valid point. We should have a clear
> >>>>>>> understanding what binding votes in this case mean. I think it
> >>> makes
> >>>>>> sense
> >>>>>>> to consider PMC's and committers' votes as binding for FLIPs
> >>> voting.
> >>>>>>> Otherwise we would lose the aspect of committing to help with
> >>> getting
> >>>>> the
> >>>>>>> FLIP into the codebase.
> >>>>>>>
> >>>>>>> To sum up I would opt for enforcing the lazy majority. I would
> >>>> suggest
> >>>>> to
> >>>>>>> consider constructing a release plan with a list of accepted
> >> FLIPs.
> >>>>>>>
> >>>>>>> Best,
> >>>>>>>
> >>>>>>> Dawid
> >>>>>>>
> >>>>>>>
> >>>>>>> [1]
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals#FlinkImprovementProposals-Whatisconsidereda%22majorchange%22thatneedsaFLIP
> >>>>>>> ?
> >>>>>>> On 27/06/2019 04:15, Jark Wu wrote:
> >>>>>>>
> >>>>>>> +1 for sticking to the lazy majority voting.
> >>>>>>>
> >>>>>>> A question from my side, the 3+1 votes are binding votes which
> >> only
> >>>>>> active
> >>>>>>> (i.e. non-emeritus) committers and PMC members have?
> >>>>>>>
> >>>>>>>
> >>>>>>> Best,
> >>>>>>> Jark
> >>>>>>>
> >>>>>>>
> >>>>>>> On Wed, 26 Jun 2019 at 19:07, Tzu-Li (Gordon) Tai <
> >>>> tzuli...@apache.org
> >>>>>>
> >>>>>> <tzuli...@apache.org>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>> +1 to enforcing lazy majority voting for future FLIPs, starting
> >>> from
> >>>>>> FLIPs
> >>>>>>> that are still currently under discussion (by the time we've
> >> agreed
> >>>> on
> >>>>>> the
> >>>>>>> FLIP voting process).
> >>>>>>>
> >>>>>>> My two cents concerning "what should and shouldn't be a FLIP":
> >>>>>>>
> >>>>>>> I can understand Chesnay's argument about how some FLIPs, while
> >>>> meeting
> >>>>>> the
> >>>>>>> criteria defined by the FLIP guidelines, feel to not be
> >>> sufficiently
> >>>>>> large
> >>>>>>> to justify a FLIP.
> >>>>>>> As a matter of fact, the FLIP guidelines explicitly mention that
> >>>>> "Exposed
> >>>>>>> Monitoring Information" is considered public interface; I guess
> >>> that
> >>>>> was
> >>>>>>> why this FLIP came around in the first place.
> >>>>>>> I was also hesitant in whether or not the recent FLIP about keyed
> >>>> state
> >>>>>>> snapshot binary format unification (FLIP-41) deserves to be a
> >> FLIP,
> >>>>> since
> >>>>>>> the complexity of the change is rather small.
> >>>>>>>
> >>>>>>> However, with the fact that these changes indeed touch the
> >> general
> >>>>> public
> >>>>>>> interface of Flink, the scope (including all potential 3rd party
> >>>>>> projects)
> >>>>>>> is strictly speaking hard to define.
> >>>>>>> Outcomes of such changes, even if the complexity of the change is
> >>>>> rather
> >>>>>>> trivial, can still stick around for quite a while.
> >>>>>>> In this case, IMO the value of proposing a FLIP for such a change
> >>> is
> >>>>> less
> >>>>>>> about discussing design or implementation details, and more on
> >> the
> >>>> fact
> >>>>>>> that said change requires an official vote for approval from the
> >>>>>> community.
> >>>>>>>
> >>>>>>> Best,
> >>>>>>> Gordon
> >>>>>>>
> >>>>>>> On Wed, Jun 26, 2019 at 5:50 PM Chesnay Schepler <
> >>> ches...@apache.org
> >>>>>
> >>>>> <
> >>>>>> ches...@apache.org>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>> The FLIP guidelines disagree with your first point.
> >>>>>>>
> >>>>>>> The guidelines are a bit contradictory as at some places we say
> >>> that
> >>>>>>> FLIPs are for major features, and in other places say they are
> >> for
> >>>> any
> >>>>>>> changes to the public API.
> >>>>>>> This very point came up in the recent FLIP about standardizing
> >>>> metrics.
> >>>>>>> Metrics are somewhat part of the public API, and thus you can
> >>>> interpret
> >>>>>>> the guidelines to say that you need a FLIP. But in terms of
> >> scope,
> >>> I
> >>>>>>> believed it to not be sufficiently large to justify a FLIP.
> >>>>>>>
> >>>>>>> Overall I'm very much in favor of sticking to the lazy majority
> >>>> voting
> >>>>>>> scheme and enforcing it,
> >>>>>>> but I do think we have to reevaluate what changes require a FLIP
> >>> and
> >>>>>>> which don't.
> >>>>>>>
> >>>>>>> On 26/06/2019 11:37, Aljoscha Krettek wrote:
> >>>>>>>
> >>>>>>> Hi All,
> >>>>>>>
> >>>>>>> When we originally introduced the FLIP process (which is based on
> >>> the
> >>>>>>>
> >>>>>>> KIP process from Kafka and refers to the Kafka bylaws for how
> >> votes
> >>>>> work)
> >>>>>>> voting was set to be “lazy majority”. This means that a FLIP vote
> >>>>>>>
> >>>>>>> "requires
> >>>>>>>
> >>>>>>> 3 binding +1 votes and more binding +1 votes than -1 votes”
> >> [1][2].
> >>>>>>> Currently, we treat FLIP votes more like “lazy Approval”, i.e. if
> >>>> there
> >>>>>>>
> >>>>>>> are
> >>>>>>>
> >>>>>>> no -1 votes FLIP are often accepted, if there is a VOTE thread at
> >>>> all.
> >>>>>>>
> >>>>>>> I propose that we stick to the original process or update our
> >> FLIP
> >>>>>>>
> >>>>>>> document to a voting scheme that we agree on. I’m in favour of
> >>>> sticking
> >>>>>>> with “lazy majority”, for these reasons:
> >>>>>>>
> >>>>>>> 1. FLIPs should typically be used for deeper changes of Flink.
> >>> These
> >>>>>>>
> >>>>>>> will stick around for quite a while after they’re implemented and
> >>> the
> >>>>> PMC
> >>>>>>> (and the committers) has the burden of maintaining them. I think
> >>> that
> >>>>>>> therefore FLIP votes are even move important than release votes,
> >>>>> because
> >>>>>>> they steer the long time direction of Flink.
> >>>>>>>
> >>>>>>> 2. Requiring at least 3 +1 votes means that there is more work
> >>> needed
> >>>>>>>
> >>>>>>> for getting a FLIP accepted. I think this is a good thing because
> >>> it
> >>>>> will
> >>>>>>> require people to be more involved in the direction of the
> >> project.
> >>>> And
> >>>>>>>
> >>>>>>> if
> >>>>>>>
> >>>>>>> there are not enough +1 votes on a FLIP, this is a signal that
> >>> there
> >>>> is
> >>>>>>>
> >>>>>>> not
> >>>>>>>
> >>>>>>> enough interest in the feature or that there is not enough
> >>> bandwidth
> >>>>> for
> >>>>>>> working on a feature.
> >>>>>>>
> >>>>>>> 3. This is more an “optics” thing, but I think having clear rules
> >>> and
> >>>>>>>
> >>>>>>> sticking to them makes it easier for an international community
> >>> (like
> >>>>> the
> >>>>>>> Apache Flink community) to work together and collaborate. If
> >> there
> >>> is
> >>>>>>> preferential treatment for certain parts of the community that
> >>> makes
> >>>> it
> >>>>>>> hard for other parts to participate and get into the community
> >> and
> >>>>>>> understand the workings of it.
> >>>>>>>
> >>>>>>> As a side note, I like the FLIP process because they are a place
> >>>> where
> >>>>>>>
> >>>>>>> we can keep track of important decisions and they are a place
> >> that
> >>> we
> >>>>> can
> >>>>>>> point to when there is uncertainty about a certain feature in the
> >>>>> future.
> >>>>>>> For example FLIP-28 [3] (which is now discarded) would be a place
> >>>> where
> >>>>>>>
> >>>>>>> we
> >>>>>>>
> >>>>>>> record the decision that we want Flink to be Scala free in the
> >> long
> >>>>> term.
> >>>>>>> We could then point to this in the future. There are some
> >> decisions
> >>>> in
> >>>>>>> Flink that are somewhat hidden in ML discussions or Jira issues,
> >>> and
> >>>>>>> therefore hard to find, for example the decision to eventually
> >>> phase
> >>>>> out
> >>>>>>> the DataSet API, or the decision to drop the older Python APIs,
> >> or
> >>>> the
> >>>>>>> semantics of savepoints and checkpoints. Some FLIPs might not be
> >>>> about
> >>>>>>> implementing a certain feature but just a general direction that
> >> we
> >>>>> want
> >>>>>>>
> >>>>>>> to
> >>>>>>>
> >>>>>>> take. I think we should have more of these.
> >>>>>>>
> >>>>>>> What do you think?
> >>>>>>>
> >>>>>>> Best,
> >>>>>>> Aljoscha
> >>>>>>>
> >>>>>>> [1]
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> https://cwiki.apache.org/confluence/display/FLINK/Flink+Improvement+Proposals
> >>>>>>>
> >>>>>>> [2]
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> https://cwiki.apache.org/confluence/display/KAFKA/Bylaws#Bylaws-Approvals
> >>>>>>>
> >>>>>>> [3]
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-28%3A+Long-term+goal+of+making+flink-table+Scala-free
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>
> >>
>
>

Reply via email to