Statically, yes, GitHub PRs are the same as GitHub cases. But dynamically, they 
are different, because you can only log a PR when you have finished work.

A lot of other Apache projects use JIRA, so there is a clear distinction 
between cases and contributions. JIRA cases, especially when logged early in 
the lifecycle of a contribution, become long-running conversation threads with 
a lot of community participation. If the Druid chose to do so, GitHub cases 
could be the same.

Be careful that you do not treat “potential contributors” (by which I presume 
you mean non-committers) differently from committers and PMC members. Anyone 
starting a major piece of work should follow the same process. (Experienced 
committers probably have a somewhat better idea what work will turn out to be 
“major”, so they get a little more leeway.)

Julian


> On Jan 7, 2019, at 12:10 PM, Gian Merlino <g...@apache.org> wrote:
> 
> I don't think there's a need to raise issues for every change: a small bug
> fix or doc fix should just go straight to PR. (GitHub PRs show up as issues
> in the issue-search UI/API, so it's not like this means the patch has no
> corresponding issue -- in a sense the PR _is_ the issue.)
> 
> I do think it makes sense to encourage potential contributors to write to
> the dev list or raise an issue if they aren't sure if something would need
> to go through a more heavy weight process.
> 
> Fwiw we do have a set of 'design review' criteria already (we had a
> discussion about this a couple years ago) at:
> http://druid.io/community/#getting-your-changes-accepted. So we wouldn't be
> starting from zero on defining that. We set it up back when we were trying
> to _streamline_ our process -- we used to require two non-author +1s for
> _every_ change, even minor ones. The introduction of design review criteria
> was meant to classify which PRs need that level of review and which ones
> are minor and can be merged with less review. I do think it helped with
> getting minor PRs merged more quickly. The list of criteria is,
> 
> - Major architectural changes or API changes
> - HTTP requests and responses (e. g. a new HTTP endpoint)
> - Interfaces for extensions
> - Server configuration (e. g. altering the behavior of a config property)
> - Emitted metrics
> - Other major changes, judged by the discretion of Druid committers
> 
> Some of it is subjective, but it has been in place for a while, so it's at
> least something we are relatively familiar with.
> 
> On Mon, Jan 7, 2019 at 11:32 AM Julian Hyde <jh...@apache.org> wrote:
> 
>> Small contributions don’t need any design review, whereas large
>> contributions need significant review. I don’t think we should require an
>> additional step for those (many) small contributions. But who decides
>> whether a contribution fits into the small or large category?
>> 
>> I think the solution is for authors to log a case (or send an email to
>> dev) before they start work on any contribution. Then committers can
>> request a more heavy-weight process if they think it is needed.
>> 
>> Julian
>> 
>> 
>>> On Jan 7, 2019, at 11:24 AM, Gian Merlino <g...@apache.org> wrote:
>>> 
>>> It sounds like splitting design from code review is a common theme in a
>> few
>>> of the posts here. How does everyone feel about making a point of
>>> encouraging design reviews to be done as issues, separate from the pull
>>> request, with the expectations that (1) the design review issue
>>> ("proposal") should generally appear somewhat _before_ the pull request;
>>> (2) pull requests should _not_ have design review happen on them, meaning
>>> there should no longer be PRs with design review tags, and we should move
>>> the design review approval process to the issue rather than the PR.
>>> 
>>> For (1), even if we encourage design review discussions to start before a
>>> pull request appears, I don't see an issue with them running concurrently
>>> for a while at some point.
>>> 
>>> On Thu, Jan 3, 2019 at 5:35 PM Jonathan Wei <jon...@apache.org> wrote:
>>> 
>>>> Thanks for raising these concerns!
>>>> 
>>>> My initial thoughts:
>>>> - I agree that separation of design review and code-level review for
>> major
>>>> changes would be more efficient
>>>> 
>>>> - I agree that a clear, more formalized process for handling major
>> changes
>>>> would be helpful for contributors:
>>>> - Define what is considered a major change
>>>> - Define a standard proposal structure, KIP-style proposal format
>> sounds
>>>> good to me
>>>> 
>>>> - I think it's too rigid to have a policy of "no code at all with the
>>>> initial proposal"
>>>> - Code samples can be useful references for understanding aspects of a
>>>> design
>>>> - In some cases it's necessary to run experiments to fully understand a
>>>> problem and determine an appropriate design, or to determine whether
>>>> something is even worth doing before committing to the work of fleshing
>> out
>>>> a proposal, prototype code is a natural outcome of that and I'm not
>> against
>>>> someone providing such code for reference
>>>> - I tend to view design/code as things that are often developed
>>>> simultaneously in an intertwined way
>>>> 
>>>>> Let's not be naive this is very rare that a contributor will accept
>> that
>>>> his work is to be thrown, usually devs takes coding as personal creation
>>>> and they get attached to it.
>>>> 
>>>> If we have a clear review process that emphasizes the need for early
>>>> consensus building, with separate design and code review, then I feel
>> we've
>>>> done enough and don't need a hard rule against having some code linked
>> with
>>>> the initial proposal. If a potential contributor then still wants to go
>>>> ahead and write a lot of code that may be rejected or change
>> significantly,
>>>> the risks were made clear.
>>>> 
>>>>> Once code is written hard to think abstract.
>>>> 
>>>> I can see the validity of the concern, but I personally don't see it as
>> a
>>>> huge risk. My impression from the Druid PR reviews I've seen is that our
>>>> reviewers are able to keep abstract design vs. implementation details
>>>> separate and consider alternate designs when reviewing.
>>>> 
>>>> To summarize I think it's probably enough to have a policy along the
>> lines
>>>> of:
>>>> - Create more formalized guidelines for proposals and what changes
>> require
>>>> proposals
>>>> - Separate design and code review for major changes, with design review
>>>> first, code-level review after reaching consensus on the design.
>>>> - Code before the design review is completed is just for reference, not
>>>> regarded as a candidate for review/merging.
>>>> 
>>>> - Jon
>>>> 
>>>> 
>>>> On Thu, Jan 3, 2019 at 12:48 PM Slim Bouguerra <
>> slim.bougue...@gmail.com>
>>>> wrote:
>>>> 
>>>>> On Thu, Jan 3, 2019 at 12:16 PM Clint Wylie <clint.wy...@imply.io>
>>>> wrote:
>>>>> 
>>>>>> I am definitely biased in this matter as an owner of another large PR
>>>>> that
>>>>>> wasn't preceded by a direct proposal or dev list discussion, and in
>>>>> general
>>>>>> I agree that proposal first is usually better, but I think in some
>>>> rarer
>>>>>> cases approaching a problem code first *is* the most appropriate way
>> to
>>>>>> have a discussion.
>>>>> 
>>>>> 
>>>>> I am wondering here what is the case where code first is better?
>>>>> In general when you are writing code you have an idea about what you
>> want
>>>>> to change, why you want to change and why you want to change it.
>>>>> I do not see what is wrong with sharing this primitive ideas and
>> thoughts
>>>>> as an abstract proposal (at least to avoid overlapping)
>>>>> 
>>>>> I see nothing wrong with it so long as the author
>>>>>> accepts that the PR is treated as a combined proposal and proof of
>>>>> concept,
>>>>>> and fair game to be radically changed via discussion or even rejected,
>>>>>> which sounds like Gian's attitude on the matter and is mine as well
>>>> with
>>>>> my
>>>>>> compression stuff.
>>>>> 
>>>>> 
>>>>> Let's not be naive this is very rare that a contributor will accept
>> that
>>>>> his work is to be thrown, usually devs takes coding as personal
>> creation
>>>>> and they get attached to it.
>>>>> To my point you can take a look on some old issue in the Druid forum
>>>>> 
>>>> 
>> https://github.com/apache/incubator-druid/pull/3755#issuecomment-265667690
>>>>> and am sure other communities have similar problems.
>>>>> So leaving the door open to some side cases is not a good idea in my
>>>>> opinion and will lead to similar issue in the future.
>>>>> 
>>>>> This seems to me especially likely to happen in cases
>>>>>> where an approach still needs proven to be a viable idea *to the
>>>> author*,
>>>>>> so that a much more productive discussion can be had in the first
>>>> place.
>>>>>> 
>>>>>> I think there is a trade off, I don't think we want to discourage
>>>>>> experimentation by walling it off behind mandatory discussions before
>>>> it
>>>>>> can even start, but I do think formalizing the process for large
>>>> changes
>>>>> is
>>>>>> a good thing, especially since we probably can't expect the wider
>>>>> community
>>>>>> to have the same attitude towards a large PR getting discarded as a
>>>>>> committer might. I think the Kafka approach is reasonable, a bit more
>>>>>> formal than our design review process but not overbearing.
>>>>> 
>>>>> 
>>>>> Can you please explain what is overbearing ? what can be changed to
>> make
>>>> it
>>>>> easy ?
>>>>> Most of the points are kind of the actual questions that you want to
>>>>> address before hand anyway isn't ?
>>>>> 
>>>>> 
>>>>>> Going code first
>>>>>> should be in general discouraged, but when it does happen, it seems
>>>> like
>>>>>> opening DIP/an issue/starting a mailing list thread or whatever we go
>>>>> with
>>>>>> to have a more high level design discussion alongside the reference PR
>>>>>> could alleviate some of these complaints?
>>>>> 
>>>>> 
>>>>> What are the complaints ?
>>>>> 
>>>>> 
>>>>>> +1 for "DIP" heh, I think making
>>>>>> them in the form of github issues is probably appropriate, with a dev
>>>>> list
>>>>>> thread to announce them perhaps?
>>>>>> 
>>>>> 
>>>>> I think  github issue with [Proposal] header like
>>>>> https://github.com/apache/incubator-druid/issues/4349 is good to me,
>>>>> 
>>>>> Thanks!
>>>>> 
>>>>> 
>>>>>> On Thu, Jan 3, 2019 at 10:28 AM Slim Bouguerra <bs...@apache.org>
>>>> wrote:
>>>>>> 
>>>>>>> Thanks everyone for interacting with this thread.
>>>>>>> 
>>>>>>> The fact that i, Roman, Jihoon  and others in the past (FJ
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>> https://groups.google.com/forum/#!msg/druid-user/gkUEsAYIfBA/6B2GJdLkAgAJ)
>>>>>>> raised this point indicates that PRs without a proposal are indeed an
>>>>>> issue
>>>>>>> and we need to solve it.
>>>>>>> 
>>>>>>> Something Similar to KIP maybe called DIPs is fine with me.
>>>>>>> What i strive to see is the following:
>>>>>>> 
>>>>>>> [Step 1] formalize what is the kind of work that needs a formal
>>>>>> Proposal, I
>>>>>>> think Roman and Jihoon has already covered that pretty well. am +1 on
>>>>>> that.
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>> https://lists.apache.org/thread.html/9b30d893bdb6bb633cf6a9a700183ffb5b98f115330531a55328ac77@%3Cdev.druid.apache.org%3E
>>>>>>> 
>>>>>>> I am strongly in favor of the separation of Proposal Review and
>>>> (later)
>>>>>>> Code review PRs. My  main reasons:
>>>>>>> Most importantly code reviewing will introduce lot of noise and will
>>>>>>> ultimately make  the GitHub page unreadable.
>>>>>>> Avoid overlapping of work.
>>>>>>> Once code is written hard to think abstract.
>>>>>>> Separate page for Design review later can always be used it as a
>>>> Design
>>>>>>> document that is readable and code free-ish.
>>>>>>> As i said the goal of this first round is to see if the community
>>>> agree
>>>>>>> about such change, then make the process of design more inclusive
>>>> thus
>>>>>>> other contributors can submit a counter proposals.
>>>>>>> 
>>>>>>> [Step 2] IF everybody agree about that point Step 2 is to define
>>>> which
>>>>>>> medium is used to Publish a primitive form of a CODE FREE Abstract
>>>>>> Proposal
>>>>>>> containing at least the following bullet points.
>>>>>>> - The problem description and motivation
>>>>>>> - Overview of the proposed change
>>>>>>> - Operational impact (compatibility/ plans to upgrades) public API
>>>>>> changes,
>>>>>>> configuration changes, algorithm, and so on
>>>>>>> - Expected benefits and drawbacks
>>>>>>> - Rationale and alternatives
>>>>>>> - Estimate Time to Deliver if possible.
>>>>>>> 
>>>>>>> The way i think this can be is a Github issue where member of the
>>>>>> community
>>>>>>> will interact via comments and the author will be updating the
>>>>>> description
>>>>>>> in the light of comments provided by the community.
>>>>>>> 
>>>>>>> During and near the end of the design discussions the author/s can
>>>>> start
>>>>>>> writing POCs to help guide the review process this naturally will be
>>>> a
>>>>>> Pull
>>>>>>> request with actual code.
>>>>>>> 
>>>>>>> *Now the most important thing is that we need to agree that any work
>>>>> that
>>>>>>> does not align with this formal process will be ignored and the
>>>> author
>>>>>> will
>>>>>>> be asked to start with a DIP*
>>>>>>> *That is what i meant with  “If it didn’t happen on the mailing list,
>>>>> it
>>>>>>> didn’t happen.”*
>>>>>>> 
>>>>>>> Thanks and happy coding!
>>>>>>> 
>>>>>>> On Wed, Jan 2, 2019 at 6:47 PM Gian Merlino <g...@apache.org> wrote:
>>>>>>> 
>>>>>>>> One of the advantages I see with a more formal process is (like
>>>> Kafka
>>>>>>> KIPs)
>>>>>>>> is that it levels the playing field a bit and sets some ground
>>>> rules
>>>>>> for
>>>>>>>> working together. In a way it can help encourage contributions by
>>>>>> making
>>>>>>> it
>>>>>>>> clear what is expected of potential contributors.
>>>>>>>> 
>>>>>>>> We have a design review process today that is not as formal as
>>>> KIPs,
>>>>>> but
>>>>>>> is
>>>>>>>> somewhat heavier than the one you describe. Maybe we could tweak
>>>> our
>>>>>>>> current one by starting to do design reviews separately from PRs.
>>>>> i.e.,
>>>>>>> for
>>>>>>>> anything that meets our 'design review' criteria, do that on the
>>>> dev
>>>>>> list
>>>>>>>> or in a separate issue, and keep the PR focused on code-level
>>>> stuff.
>>>>>> That
>>>>>>>> way we don't end up trying to do both at once. And it makes it
>>>> easier
>>>>>> to
>>>>>>>> start talking about design before the code is ready, which would be
>>>>>>> better.
>>>>>>>> 
>>>>>>>> On Wed, Jan 2, 2019 at 6:10 PM Julian Hyde <jh...@apache.org>
>>>> wrote:
>>>>>>>> 
>>>>>>>>> It’s really hard to say no to a contribution when someone has put
>>>>> in
>>>>>> a
>>>>>>>>> significant amount of work.
>>>>>>>>> 
>>>>>>>>> The following approach is simple and works really well: Before
>>>> you
>>>>>>> start
>>>>>>>>> work, log a case, describing the problem. When you have some
>>>> ideas
>>>>>>> about
>>>>>>>>> design, add those to the case. When you have a code branch, add
>>>> its
>>>>>> URL
>>>>>>>> to
>>>>>>>>> the case. And so forth. At any point in the proceedings, people
>>>> can
>>>>>>> chime
>>>>>>>>> in with their opinions.
>>>>>>>>> 
>>>>>>>>> In my opinion, a formal “design review” process is not necessary.
>>>>>> Just
>>>>>>>>> build consensus iteratively, by starting the conversation early
>>>> in
>>>>>> the
>>>>>>>>> process.
>>>>>>>>> 
>>>>>>>>> Julian
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> On Jan 2, 2019, at 12:37 PM, Gian Merlino <g...@apache.org>
>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>> In this particular case: please consider the PR as a proposal.
>>>>>> Don't
>>>>>>>> feel
>>>>>>>>>> like just because there is code there that takes a certain
>>>>>> approach,
>>>>>>>> that
>>>>>>>>>> the approach is somehow sacred. I had to implement something to
>>>>>>>>> crystallize
>>>>>>>>>> my own thinking about how the problem could be approached. I
>>>>> won't
>>>>>> be
>>>>>>>>>> disappointed if, as a community, we decide a different
>>>> direction
>>>>> is
>>>>>>>>> better
>>>>>>>>>> and the code all gets thrown away. That's one of the reasons
>>>>> that I
>>>>>>>>> removed
>>>>>>>>>> the 0.14.0 milestone that was added to the patch. (I don't want
>>>>> to
>>>>>>> rush
>>>>>>>>> it,
>>>>>>>>>> nor do I think that's a good idea.)
>>>>>>>>>> 
>>>>>>>>>> In general: Sounds like we could do with some more
>>>> formalization
>>>>>>> around
>>>>>>>>>> what a proposal looks like, which sorts of changes need one,
>>>> and
>>>>>> when
>>>>>>>> in
>>>>>>>>>> the dev cycle it is appropriate. FWIW I think Kafka's process
>>>> is
>>>>>> more
>>>>>>>> or
>>>>>>>>>> less fine, and would be okay with adopting it for Druid if
>>>> people
>>>>>>> like
>>>>>>>>> it.
>>>>>>>>>> Right now our standards for what requires a "design review" are
>>>>>> very
>>>>>>>>>> similar to the Kafka community standards for what requires a
>>>> KIP,
>>>>>> so
>>>>>>> we
>>>>>>>>>> have some familiarity with those concepts. However we don't
>>>>>> separate
>>>>>>> PR
>>>>>>>>>> review and proposal discussion as strictly as they do, which
>>>>> seems
>>>>>> to
>>>>>>>> be
>>>>>>>>>> the foundation for the feeling of exclusion that is being felt
>>>>>> here.
>>>>>>>>>> 
>>>>>>>>>> Separately: I just redid the description on
>>>>>>>>>> https://github.com/apache/incubator-druid/pull/6794 to be more
>>>>>>>>> proposal-y.
>>>>>>>>>> I followed the KIP style:
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>> https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals
>>>>>>>>> .
>>>>>>>>>> Please refresh the page and see if it looks more useful.
>>>>>>>>>> 
>>>>>>>>>> Gian
>>>>>>>>>> 
>>>>>>>>>> On Wed, Jan 2, 2019 at 10:52 AM Julian Hyde <jh...@apache.org>
>>>>>>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Slim,
>>>>>>>>>>> 
>>>>>>>>>>> I agree with your points that offline development is bad for
>>>>>>>> community.
>>>>>>>>>>> But I don’t think you need much mentor help. You have raised
>>>>> valid
>>>>>>>>> issues
>>>>>>>>>>> and the Druid community needs to decide what its development
>>>>>>> practices
>>>>>>>>>>> should be.
>>>>>>>>>>> 
>>>>>>>>>>> Julian
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>>> On Jan 2, 2019, at 10:29 AM, Slim Bouguerra <
>>>> bs...@apache.org>
>>>>>>>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>> Hello everyone and hope you all have very good holidays.
>>>>>>>>>>>> 
>>>>>>>>>>>> First, this email is not directed on the author or the PR
>>>>>>>>>>>> https://github.com/apache/incubator-druid/pull/6794  it
>>>> self,
>>>>>> but
>>>>>>> i
>>>>>>>>> see
>>>>>>>>>>>> this PR as a perfect example.
>>>>>>>>>>>> 
>>>>>>>>>>>> One of the foundation of Apache Way or what i would simply
>>>> call
>>>>>>> open
>>>>>>>>>>> source
>>>>>>>>>>>> community driven development is that "Technical decisions are
>>>>>>>>> discussed,
>>>>>>>>>>>> decided, and archived publicly.
>>>>>>>>>>>> developpement"
>>>>>>>>>>>> Which means that big technical  changes such as the one
>>>> brought
>>>>>> by
>>>>>>>>> #/6794
>>>>>>>>>>>> should have started as a proposal and round of discussions
>>>>> about
>>>>>>> the
>>>>>>>>>>> major
>>>>>>>>>>>> changes designs not as 11K line of code.
>>>>>>>>>>>> I believe such openness will promote a lot of good benefits
>>>>> such
>>>>>>> as:
>>>>>>>>>>>> 
>>>>>>>>>>>> - ensures community health and growth.
>>>>>>>>>>>> - ensures everyone can participate not only the authors and
>>>> his
>>>>>>>>>>> co-workers.
>>>>>>>>>>>> - ensures that the project is driven by the community and
>>>> not a
>>>>>>> given
>>>>>>>>>>>> company or an individual.
>>>>>>>>>>>> - ensures that there is consensus (not saying 100%
>>>> agreement;)
>>>>>>>> however
>>>>>>>>> it
>>>>>>>>>>>> means that all individuals will accept the current progress
>>>> on
>>>>>> the
>>>>>>>>>>> project
>>>>>>>>>>>> until some better proposal is put forth.
>>>>>>>>>>>> 
>>>>>>>>>>>> Personally such BIG offline PR makes me feel excluded and
>>>>> doesn't
>>>>>>>> give
>>>>>>>>>>> me a
>>>>>>>>>>>> sense that i belong to  a community at all.
>>>>>>>>>>>> 
>>>>>>>>>>>> To prevent such off list development i think as a Druid
>>>>> Community
>>>>>>> we
>>>>>>>>> need
>>>>>>>>>>>> to stick to the apache way “If it didn’t happen on the
>>>> mailing
>>>>>>> list,
>>>>>>>> it
>>>>>>>>>>>> didn’t happen.”
>>>>>>>>>>>> 
>>>>>>>>>>>> I would appreciate if some of the Apache mentor help with
>>>> this.
>>>>>>>>>>>> Thanks
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@druid.apache.org
>>>>>>>>>>> For additional commands, e-mail: dev-h...@druid.apache.org
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@druid.apache.org
>>>>>>>>> For additional commands, e-mail: dev-h...@druid.apache.org
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> 
>>>>> B-Slim
>>>>> 
>> _______/\/\/\_______/\/\/\_______/\/\/\_______/\/\/\_______/\/\/\_______
>>>>> 
>>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@druid.apache.org
>> For additional commands, e-mail: dev-h...@druid.apache.org
>> 
>> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@druid.apache.org
For additional commands, e-mail: dev-h...@druid.apache.org

Reply via email to