On Thu, Aug 13, 2020 at 5:22 AM 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 think the NEP template is great, and we should try to be more diligent about following it! My own NEP 37 (__array_module__) is probably a good example of poor presentation due to not following the template structure. It goes pretty deep into low-level motivation and some implementation details before usage examples. Speaking just for myself, I would have appreciated a friendly nudge to use the template. Certainly I think it would be fine to require using the template for newly submitted NEPs. I did not remember about it when I started drafting NEP 37, and it definitely would have helped. I may still try to do a revision at some point to use the template structure. > 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