> We adapted the NEP template [6] several times last year to try and improve 
> this. And specified in there as well that NEP content set to the mailing list 
> should only contain the sections: Abstract, Motivation and Scope, Usage and 
> Impact, and Backwards compatibility. This to ensure we fully understand the 
> "why" and "what" before the "how". Unfortunately that template and procedure 
> hasn't been exercised much yet, only in NEP 38 [7] and partially in NEP 41 
> [8].
>
> If we have long-time maintainers of SciPy (Ilhan and myself), scikit-image 
> (Juan) and CuPy (Leo, on the PR review) all saying they don't understand the 
> goals, relevance, target audience, or how they're supposed to use a new 
> feature, that indicates that the people doing the writing and having the 
> discussion are doing something wrong at a very fundamental level.

I'm more than happy to edit the NEP and try to clarify all the
concerns. However, it gets pretty difficult to do so when I as an
author don't understand where the difficulty is. Ilhan, Juan and Ralf
now pointed out things that are missing/unclear, but no comment was
made in that regard when I sent the NEP, my point being: I couldn't
fix what I didn't know was a problem to others.

> At this point I'm pretty disappointed in and tired of how we write and 
> discuss NEPs on technical topics like dispatching, dtypes and the like. 
> People literally refuse to write down concrete motivations, goals and 
> non-goals, code that's problematic now and will be better/working post-NEP 
> and usage examples before launching into extensive discussion of the gory 
> details of the internals. I'm not sure what to do about it.

Honestly, I don't really understand this. From my perspective, there
are two ways to deal with such things:

1. Templates are to be taken mainly as _guidelines_ rather than
_hardlines_, and the current text of NEP-35 definitely falls in the
first category;
2. Templates are _hardlines_ and to be guided/enforced by maintainers
at some point (maybe before merging the PR?).

If 2 is the desired case for NumPy, which sounds a lot like what is
wanted from NEP-35 and other NEPs generally, maintainers should let
the authors know as early as possible that something isn't following
the template's hardlines and it should be corrected. I don't mean any
of this to remove myself of any responsibility, but would like to
express my frustration that a 10 month-old NEP is only now getting so
much pushback for being unclear after its implementation is nearing
completion.

> I want to make an exception for merging the current NEP, for which the plan 
> is to merge it as experimental to try in downstream PRs and get more 
> experience. That does mean that master will be in an unreleasable state by 
> the way, which is unusual and it'd be nice to get Chuck's explicit OK for 
> that.

I don't quite understand this either, why would that leave master in
an unreleasable state?

Best,
Peter

On Thu, Aug 13, 2020 at 2:21 PM Ralf Gommers <ralf.gomm...@gmail.com> wrote:
>
> Thanks for raising these concerns Ilhan and Juan, and for answering Peter. 
> Let me give my perspective as well.
>
> To start with, this is not specifically about Peter's NEP and PR. NEP 35 
> simply follows the pattern set by previous PRs, and given its tight scope is 
> less difficult to understand than other NEPs on such technical topics. Peter 
> has done a lot of things right, and is close to the finish line.
>
>
> On Thu, Aug 13, 2020 at 12:02 PM Peter Andreas Entschev <pe...@entschev.com> 
> wrote:
>>
>>
>> > I think, arriving to an agreement would be much faster if there is an 
>> > executive summary of who this is intended for and what the regular usage 
>> > is. Because with no offense, all I see is "dispatch", "_array_function_" 
>> > and a lot of technical details of which I am absolutely ignorant.
>>
>> This is what I intended to do in the Usage Guidance [2] section. Could
>> you elaborate on what more information you'd want to see there? Or is
>> it just a matter of reorganizing the NEP a bit to try and summarize
>> such things right at the top?
>
>
> We adapted the NEP template [6] several times last year to try and improve 
> this. And specified in there as well that NEP content set to the mailing list 
> should only contain the sections: Abstract, Motivation and Scope, Usage and 
> Impact, and Backwards compatibility. This to ensure we fully understand the 
> "why" and "what" before the "how". Unfortunately that template and procedure 
> hasn't been exercised much yet, only in NEP 38 [7] and partially in NEP 41 
> [8].
>
> If we have long-time maintainers of SciPy (Ilhan and myself), scikit-image 
> (Juan) and CuPy (Leo, on the PR review) all saying they don't understand the 
> goals, relevance, target audience, or how they're supposed to use a new 
> feature, that indicates that the people doing the writing and having the 
> discussion are doing something wrong at a very fundamental level.
>
> At this point I'm pretty disappointed in and tired of how we write and 
> discuss NEPs on technical topics like dispatching, dtypes and the like. 
> People literally refuse to write down concrete motivations, goals and 
> non-goals, code that's problematic now and will be better/working post-NEP 
> and usage examples before launching into extensive discussion of the gory 
> details of the internals. I'm not sure what to do about it. Completely 
> separate API and behavior proposals from implementation proposals? Make 
> separate "API" and "internals" teams with the likes of Juan, Ilhan and Leo on 
> the API team which then needs to approve every API change in new NEPs? Offer 
> to co-write NEPs if someone is willing but doesn't understand how to go about 
> it? Keep the current structure/process but veto further approvals until NEP 
> authors get it right?
>
> I want to make an exception for merging the current NEP, for which the plan 
> is to merge it as experimental to try in downstream PRs and get more 
> experience. That does mean that master will be in an unreleasable state by 
> the way, which is unusual and it'd be nice to get Chuck's explicit OK for 
> that. But after that, I think we need a change here. I would like to hear 
> what everyone thinks is the shape that change should take - any of my above 
> suggestions, or something else?
>
>
>>
>> > Finally as a minor point, I know we are mostly (ex-)academics but this 
>> > necessity of formal language on NEPs is self-imposed (probably PEPs are to 
>> > blame) and not quite helping. It can be a bit more descriptive in my 
>> > external opinion.
>>
>> TBH, I don't really know how to solve that point, so if you have any
>> specific suggestions, that's certainly welcome. I understand the
>> frustration for a reader trying to understand all the details, with
>> many being only described in NEP-18 [3], but we also strive to avoid
>> rewriting things that are written elsewhere, which would also
>> overburden those who are aware of what's being discussed.
>>
>>
>> > I also share Ilhan’s concern (and I mentioned this in a previous NEP 
>> > discussion) that NEPs are getting pretty inaccessible. In a sense these 
>> > are difficult topics and readers should be expected to have *some* 
>> > familiarity with the topics being discussed, but perhaps more effort 
>> > should be put into the context/motivation/background of a NEP before 
>> > accepting it. One way to ensure this might be to require a final 
>> > proofreading step by someone who has not been involved at all in the 
>> > discussions, like peer review does for papers.
>
>
> Some variant of this proposal would be my preference.
>
> Cheers,
> Ralf
>
>>
>> [1] https://github.com/numpy/numpy/issues/14441#issuecomment-529969572
>> [2] 
>> https://numpy.org/neps/nep-0035-array-creation-dispatch-with-array-function.html#usage-guidance
>> [3] https://numpy.org/neps/nep-0018-array-function-protocol.html
>> [4] https://numpy.org/neps/nep-0000.html#nep-workflow
>> [5] 
>> https://mail.python.org/pipermail/numpy-discussion/2019-October/080176.html
>
>
> [6] https://github.com/numpy/numpy/blob/master/doc/neps/nep-template.rst
> [7] 
> https://github.com/numpy/numpy/blob/master/doc/neps/nep-0038-SIMD-optimizations.rst
> [8] 
> https://github.com/numpy/numpy/blob/master/doc/neps/nep-0041-improved-dtype-support.rst
>
>
>>
>>
>>
>> On Thu, Aug 13, 2020 at 3:44 AM Juan Nunez-Iglesias <j...@fastmail.com> 
>> wrote:
>> >
>> > I’ve generally been on the “let the NumPy devs worry about it” side of 
>> > things, but I do agree with Ilhan that `like=` is confusing and `typeof=` 
>> > would be a much more appropriate name for that parameter.
>> >
>> > I do think library writers are NumPy users and so I wouldn’t really make 
>> > that distinction, though. Users writing their own analysis code could very 
>> > well be interested in writing code using numpy functions that will 
>> > transparently work when the input is a CuPy array or whatever.
>> >
>> > I also share Ilhan’s concern (and I mentioned this in a previous NEP 
>> > discussion) that NEPs are getting pretty inaccessible. In a sense these 
>> > are difficult topics and readers should be expected to have *some* 
>> > familiarity with the topics being discussed, but perhaps more effort 
>> > should be put into the context/motivation/background of a NEP before 
>> > accepting it. One way to ensure this might be to require a final 
>> > proofreading step by someone who has not been involved at all in the 
>> > discussions, like peer review does for papers.
>> >
>> > Food for thought.
>> >
>> > Juan.
>> >
>> > On 13 Aug 2020, at 9:24 am, Ilhan Polat <ilhanpo...@gmail.com> wrote:
>> >
>> > For what is worth, as a potential consumer in SciPy, it really doesn't say 
>> > anything (both in NEP and the PR) about how the regular users of NumPy 
>> > will benefit from this. If only and only 3rd parties are going to benefit 
>> > from it, I am not sure adding a new keyword to an already confusing 
>> > function is the right thing to do.
>> >
>> > Let me clarify,
>> >
>> > - This is already a very (I mean extremely very) easy keyword name to 
>> > confuse with ones_like, zeros_like and by its nature any other 
>> > interpretation. It is not signalling anything about the functionality that 
>> > is being discussed. I would seriously consider reserving such obvious 
>> > names for really obvious tasks. Because you would also expect the shape 
>> > and ndim would be mimicked by the "like"d argument but it turns out it is 
>> > acting more like "typeof=" and not "like=" at all. Because if we follow 
>> > the semantics it reads as "make your argument asarray like the other 
>> > thing" but it is actually doing, "make your argument an array with the 
>> > other thing's type" which might not be an array after all.
>> >
>> > - Again, if this is meant for downstream libraries (because that's what I 
>> > got out of the PR discussion, cupy, dask, and JAX were the only examples I 
>> > could read) then hiding it in another function and writing with capital 
>> > letters "this is not meant for numpy users" would be a much more 
>> > convenient way to separate the target audience and regular users. 
>> > numpy.astypedarray([[some data], [...]], type_of=x) or whatever else it 
>> > may be would be quite clean and to the point with no ambiguous keywords.
>> >
>> > I think, arriving to an agreement would be much faster if there is an 
>> > executive summary of who this is intended for and what the regular usage 
>> > is. Because with no offense, all I see is "dispatch", "_array_function_" 
>> > and a lot of technical details of which I am absolutely ignorant.
>> >
>> > Finally as a minor point, I know we are mostly (ex-)academics but this 
>> > necessity of formal language on NEPs is self-imposed (probably PEPs are to 
>> > blame) and not quite helping. It can be a bit more descriptive in my 
>> > external opinion.
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion@python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion

Reply via email to