Hello

I wonder if the scope of optimistic merging can be broader. Let's say we
have a working implementation of an algorithm which is not the best for one
or more of the following reasons.

- Suboptimal data structure choice (linear instead of logarithmic
complexity) which results in a minor speed delay during invocation.
- Not having type checks or conversions.
- Duplicate code which might be refactored out.
- Lack of or no documentation

But apart from this the PR does what the algorithm it implements correctly.
Can we merge such a PR in master and keep it as a private unexposed
function while raising an issue to address it's shortcomings ? The function
can de decorated to exclude it from the main docs and maybe raise a warning
when invoked. I believe the flaws I mentioned can be taken up by someone
else in the community. Like a user might contribute documentation or a
newcomer might do the refactoring. Then later down the line core Devs can
agree and make the function public.

It really sucks when there is a working patch for a feature you might want
to use but you cannot use it because the PR isn't merged. For example, I
don't care if a function takes more time to execute if all I want to do is
use it to generate a few statistics or figures while writing a publication.

Thanks
Vighnesh

On 13 Apr 2017 3:17 am, "Juan Nunez-Iglesias" <jni.s...@gmail.com> wrote:

> Hi Stéfan,
>
> I think figuring this out is certainly a high priority when it comes to
> being contributor-friendly.
>
> One thing I don’t know what to do is figure out whether a contributor has
> turned on “collaboration”. What am I missing? I can see when *I’ve* turned
> it on, but for other pull requests I can’t get any info. Is the only way to
> know to try to push?
>
> A related point of failure that I’ve see is where we have an API
> discussion on the PR, and the core members have a back and forth over it,
> with confusion about the final outcome for the PR author. I’m still
> traumatised by this comment
> <https://github.com/scikit-image/scikit-image/pull/953#issuecomment-43598826>.
> And the current PRs on manual segmentation
> <https://github.com/scikit-image/scikit-image/pull/2584> and nD rescaling
> <https://github.com/scikit-image/scikit-image/pull/1522> risk the same
> fate. Stéfan and I briefly discussed this off-list and we came up with the
> following solution (which we now request comments on):
>
> - new functions of dubious API go to skimage.future. That’s what the
> package was created for. *However*, RAG has languished there for several
> releases, so this is not a long-term solution. So, in addition:
> - make a note in the TODO.txt for two releases down (would be v0.15
> currently), forcing an API discussion and a move out of skimage.future for
> that release.
> - For existing functions that require an API change, merge a “good enough”
> API, raise an issue on GitHub for the API discussion, and tag it with the
> next release.
>
> For rebasing, if there is nothing left to do in the PR but the rebase, I
> suggest that we merge the PR manually in the command line.
>
> Incidentally, regarding optimistic merging: I do think there is a place
> for it in scikit-image, namely, for any PRs that pass tests and coverage
> checks, but need stylistic updates. Frankly, it is faster to do these
> oneself than to write them in the PR, *and* they inevitably feel petty to
> both the reviewer and the contributor. Therefore, I might suggest that we
> do perform optimistic merging when there are minor** style issues, and then
> fix those issues ourselves. However, if you merge in this situation, you
> *must* submit the fix immediately. Otherwise it’s certain to be lost.
>
> **: by minor, I mean not something like "class Filter: …” "class
> Gaussian(Filter): …” =P
>
> So, to summarise, my proposal when dealing with non-core contributors:
>
> - avoid massive API discussions. Settle on the simplest solution and add a
> to-do. If it’s new functionality, put it in skimage.future.
> - avoid all kinds of style nitpicking — it’s faster and easier to fix
> these things ourselves. I suggest even doing optimistic merging.
> - don’t ask users to rebase unless it’s clear that they are git experts.
> Follow github’s advice and merge on the command line.
>
> Comments are very welcome!
>
> Juan.
>
> On 7 Apr 2017, 10:32 AM +1000, Stefan van der Walt <stef...@berkeley.edu>,
> wrote:
>
> Hi everyone, and especially devs
>
> This afternoon, Nelle Varoquaux gave a short presentation at BIDS on
> optimistic merging, a workflow suggested by the late Pieter Hintjens.
> In optimistic merging, all PRs are merged into a project, and fixes
> happen via additional patches or reverts. While, in my mind, this is
> not a viable model for scikit-image, it made me think of our PR review
> process.
>
> A failure mode I observe often is the following:
>
> - user submits patch
> - review happens, often either a) nitpicking on minor things or b)
> asking for technically difficult tasks to be performed (rebasing, can be
> tricky)
>
> This introduces several problems, including discouraging new
> contributors, and wasting a lot of time (many PRs are left hanging for
> months, while waiting for a one-line fix from the original author).
>
> I'd like to request the following:
>
> - Ask contributors to open their branches for collaboration (this is on
> by default already, probably).
> - While reviewing a PR, pull down the branch, look at the diff, and fix
> any trivial errors you see. Push the results back up or, if
> collaboration is switched off, make a PR against theirs.
> - Keep review comments to bigger picture changes, and avoid getting
> bogged down in trivial fixes and stylistic changes.
>
> Let's keep it collaborative and friendly, grow our team of contributors,
> and get going on 0.14 :)
>
> Thanks!
> Stéfan
>
>
>
> P.S. A question for the git experts:
>
> I've been looking for ways of making the above process easier. I found
> that I can easily download pull requests:
>
> - In my ~/.gitconfig, I add the following alias (replace 'upstream'
> with whatever you normally call the scikit-image main repository):
>
> [alias]
> pullpr = "!f() { git fetch upstream pull/$1/head:pr$1 ;}; f"
>
> I can now grab a PR with:
>
> git pullpr 2447
>
> and it will appear in the branch pr2447.
>
> Unfortunately, I don't have a similarly easy way of pushing back, other
> than adding the contributor's remote, and pushing back to the PR branch.
> Any ideas?
>
> _______________________________________________
> scikit-image mailing list
> scikit-image@python.org
> https://mail.python.org/mailman/listinfo/scikit-image
>
>
> _______________________________________________
> scikit-image mailing list
> scikit-image@python.org
> https://mail.python.org/mailman/listinfo/scikit-image
>
>
_______________________________________________
scikit-image mailing list
scikit-image@python.org
https://mail.python.org/mailman/listinfo/scikit-image

Reply via email to