[Numpy-discussion] Created NumPy 1.7.x branch
travis at continuum.io
Mon Jun 25 21:39:19 EDT 2012
On Jun 25, 2012, at 7:21 PM, Fernando Perez wrote:
> On Mon, Jun 25, 2012 at 5:10 PM, Travis Oliphant <travis at continuum.io> wrote:
>> You are still missing the point that there was already a choice that was
>> made in the previous class --- made in Numeric actually.
>> You made a change to that. It is the change that is 'gratuitous'.
> As someone who played a role in that change (by talking with Chuck
> about it, I didn't do the actual hard work), I'd like to pitch in.
> I think it's unfair to use the word gratuitous here, which is defined as:
> Uncalled for; lacking good reason; unwarranted.
I appreciate your perspective, but I still think it's fair to use that word. I think it's been interpreted more broadly then I intended and in a different color than I intended. My use of the word is closer to "uncalled for" and "unwarranted" than an isolated "lacking good reason". I know very well that anything done in NumPy has a "good reason" because the people who participate in NumPy development are very bright and capable.
For context, consider that for many years, the word "gratuitous" has been used in a non-derogatory way in the Python ecosystem to describe changes to semantics and syntax that don't have benefits significant enough to offset the pain it will cause to existing users. That's why I used the word. I am not trying to be derogatory. I am trying to be clear that we need to respect existing users of NumPy more than we have done from 1.5 to 1.7 in the enthusiasm to make changes.
I will repeat my very simple argument: I think this particular change was uncalled for because now we will have 2 different conventions in NumPy for polynomial order coefficients. I understand it's a different API so code won't break which is a good thing --- but it will be a wart for NumPy as we explain for years to come about the different conventions in the same code-base.
Working on the NumPy code base implies respecting the conventions that are already in place --- not just disregarding them and doing whatever we want. I'm not really sure why I have to argue the existing users point of view so much recently. I would hope that all of us would have the perspective that the people who have adopted NumPy deserve to be treated with respect. The changes that grate on me are the ones that seem to take lightly existing users of NumPy.
> It is true that the change happened to not consider enough the reasons
> that existed for the previous state of affairs, but it's *not* true
> that there were no good reasons for it.
Of course not. I've tried to make the point very clearly that I understand the good reasons for it. I do understand them. 12-13 years ago, when the decisions were being made about current conventions, I would likely have been persuaded by them.
> But to say that there were no good reason is unfair to those who did
> spend the time thinking about the problem, and who thought the reasons
> they had found were indeed good ones.
I did not ever say there were no good reasons. Please do not add energy to the idea that I'm dis-regarding the reasoning of those who thought about this. I'm not. I said the changes were uncalled for and unwarranted. I stand by that assessment. I do not mean any dis-respect to the people who made the changes. In that context, it's also useful to recognize how unfair it is to existing users to change conventions and ignore the work they have put in to understanding and using what is there. It's also useful to consider the unfairness of ignoring the thinking and work that went in to the existing conventions and APIs.
> I know that this particular issue grates you quite a bit, but I urge
> you to be fair in your appreciation of how it came to be: through the
> work of well-intentioned and thoughtful (but not omniscient) people
> when you weren't participating actively in numpy development.
I'm trying very hard to be fair --- especially to changes like this. What grates me are changes that affect our user base in a negative way --- specifically by causing code that used to work to no longer work or create alterations to real conventions. This kind of change is just not acceptable if we can avoid it. I'm really trying to understand why others do not feel so strongly about this, but I'm not persuaded by what I've heard so far. Please note that I'm not trying to assign blame. I recognize the part that my failings and inadequacies have played in this (I continue to be willing to listen to others assessments of those inadequacies and failings and do my best to learn from them). I'm just trying to create a different context for future discussions about these sorts of things.
I love the changes that add features and capability for our users. I have not called for ripping these particular changes out even though I would be much, much happier if there were a single convention for polynomial-coefficient order in NumPy. In fact, most of my messages have included references to how to incorporate such changes with as little impact as possible -- finding some way to reconcile things, perhaps by focusing attention away from such things (adding a keyword to the poly1d class, perhaps, to allow it to be called in reverse order).
More information about the NumPy-Discussion